让我们说我保留了我销售产品的运输记录。
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时缺少任何东西吗?
答案 0 :(得分:2)
假设dependencies {
compile 'com.android.support:support-v4:22.1.+'
}
和Item Cost
没有约束(特别是它们可能在不同的行中单独和成对重复),该对不会形成表的超级密钥。因此,如果该表包含任何其他在功能上依赖于该对的列,则该表不能处于第三范式。
如果预计Total Cost
始终等于Total Cost
+ Item Cost
,则构成对Shipping Cost
和Item Cost
的功能依赖,这意味着表格不在3NF。您可以通过删除Shipping Cost
列将表格转换为3NF。你的线索可能是删除列不会丢失任何数据。
如果你假设一个无法执行算术的计算系统(或者一个无法直接计算的关系),那么你可以将它移动到一个包含列的单独表格中Total Cost
,而不是完全删除Total Cost
。 },Item Cost
,Shipping Cost
)。不过,对于这个特殊情况来说,这似乎很愚蠢。
我没有看到Total Cost
和Sold to
列的任何规范化问题。据我所知,每个都完全取决于Sale Date
列,我将其作为该表唯一候选键的唯一成员。