这是什么类型的实体?

时间:2014-11-04 20:47:05

标签: database database-design

所以我真的很困惑,试图把它变成3NF。它是否正确?如果是那么你会称这个实体为什么?

enter image description here

如果我在表中留下了描述,它将依赖于DonutName,所以我不得不将它移动到自己的表中以将其放入3NF。正确?

感谢您的帮助,只是想确保我走在正确的轨道上。 :)

*编辑

数据示例: enter image description here

1 个答案:

答案 0 :(得分:2)

我的数据似乎是

Name
Description
UnitPrice

基于您的描述的核心假设:名称是候选键,因为没有两个甜甜圈具有相同的名称。

如果表格中的描述也是唯一的,那么它也是候选键。如果它不是唯一的,那么它只是一个属性,与UnitPrice相同(即表中的两行可以包含相同的值)。

如果您有两个候选键,则选择一个并将其设为主键,其他所有键都为备用键。这本身并不违反第三范式。

下一个假设:DonutId是一个标识列 - 或者是为每行分配(基本上)随机整数值的其他设备。这使得它成为代理键 - 它是唯一的,它可以作为候选键(并被“提升”为主键),但数据本身没有内在价值或意义(例如甜甜圈#37对甜甜圈世界毫无意义)。这将为您提供三个候选键,紧接着是主键和两个备用键。对我来说似乎仍然是第三种正常形式。 (其他列将是自然键。)

现在,就学术界而言,我可能错了 - 所有这些候选键可能需要进一步细分为BCNF,第四范式,第五范式等等......但考虑到整体的简单性建模的数据,我只是不这么认为。