簡體   English   中英

SQL 3 NF歸一化

[英]SQL 3 NF normalization

我有一個表,有 4 列來顯示購買商品的賬單,第 1 列是主鍵,第 2 和 3 列是商品的價格和金額,第 4 列是價格的總和,計算方式為將第 2 列和第 3 列中的值相乘。我是否需要刪除第 4 列以確保表中沒有傳遞函數依賴性。

+---------+-------+--------+------+
| bill_id | price | amount | sum  |
+---------+-------+--------+------+
|       1 |     2 |      5 |   10 |
|       2 |     3 |      5 |   15 |
+---------+-------+--------+------+

不,你不需要。 NF 是指導方針——非常重要和推薦,但只是指導方針。 雖然違反 1NF幾乎總是一個糟糕的設計決策,但您可以選擇違反 3NF 甚至 2NF,前提是您知道自己在做什么。

在這種情況下,根據上下文,您可以選擇不使用物理“求和”列,而是動態計算值,盡管這很容易引起性能問題。 但是請不要想着創建一個新表,將所有可能的數量和單價組合作為復合PK!

如果您查看市場上的任何 ERP,您會發現它們存儲了報價單、訂單的每一行的數量、單價和總金額(以及更多)。 和他們處理的發票。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM