假设用户可以拥有多个电话号码。
我可以理解,下面的第一个表违反了1NF,因为重复了userID=2
。
+--------+-------+
| userID | phone |
+--------+-------+
| 1 | 1010 |
| 2 | 1020 |
| 2 | 1021 |
| 3 | 1030 |
+--------+-------+
但这第二张桌子是否也违反了1NF?是的,它似乎是一个糟糕的,不灵活的设计 - 但它是否违反了1NF?
+--------+--------+--------+
| userID | phone1 | phone2 |
+--------+--------+--------+
| 1 | 1010 | |
| 2 | 1020 | 1021 |
| 3 | 1030 | |
+--------+--------+--------+
答案 0 :(得分:1)
违反了1NF。 1NF要求
phone1
,phone2
等重复群组,违反1NF。
重复userID = 2并不违反1NF本身。
答案 1 :(得分:0)
当您拥有第三个电话号码时,您的第二个设计会发生什么?它可能不违反1NF,但设计不佳。例如,我有家庭电话号码,工作电话号码,移动电话号码和传真号码。我在工作中使用的ERP程序有一个用户联系人'表中包含每个数字的字段。这样可以更容易输出,但如果一个人拥有多个给定类型的数字,有时会导致问题。
处理多个电话号码的标准方法是拥有一个包含字段所有者,电话号码和说明的单独表格。