规范化B依赖于A的数据库,C取决于A,但D取决于B + C.

时间:2015-05-26 15:15:23

标签: database normalization database-normalization

让我们说我保留了我销售产品的运输记录。

Product | Type | Year Made | Item Cost | Shipping Cost | Total Cost | Sold to | Sale Date |
--------+------+-----------+-----------+---------------+------------+---------+------------
Ford 30 | Car  | 1962      | 1000      | 500           | 1500       | Bob     | 01/22/123 |
BOXXXXX | Box  | 1223      | 5         | 10            | 15         | Sam     | 03/44/321 |

如何规范化最后3列?另外,我在实现3NF时缺少任何东西吗?

1 个答案:

答案 0 :(得分:2)

假设dependencies { compile 'com.android.support:support-v4:22.1.+' } Item Cost没有约束(特别是它们可能在不同的行中单独和成对重复),该对不会形成表的超级密钥。因此,如果该表包含任何其他在功能上依赖于该对的列,则该表不能处于第三范式。

如果预计Total Cost始终等于Total Cost + Item Cost,则构成对Shipping CostItem Cost的功能依赖,这意味着表格不在3NF。您可以通过删除Shipping Cost列将表格转换为3NF。你的线索可能是删除列不会丢失任何数据。

如果你假设一个无法执行算术的计算系统(或者一个无法直接计算的关系),那么你可以将它移动到一个包含列的单独表格中Total Cost,而不是完全删除Total Cost。 },Item CostShipping Cost)。不过,对于这个特殊情况来说,这似乎很愚蠢。

我没有看到Total CostSold to列的任何规范化问题。据我所知,每个都完全取决于Sale Date列,我将其作为该表唯一候选键的唯一成员。