在考虑1NF故障时,没有重复的元素组,如果您想对重复组的数量设置限制,该怎么办?
例如,您希望学生只列出3个电话号码.不再.如果有一个表如下被认为是1NF失败?
Student 1 Phone1 Phone2 Phone3
Sally 111-1111 222-2222 333-3333
John 555-5555 999-9999 NULL
你会创造一个限制.这是否可接受,高效的数据库设计?
将电话号码放在一个单独的表中会不会更好,因为1NF故障要求?如果它位于单独的表中,您将如何为每个用户创建3个数字的限制?
最佳答案
不,它没有正常化.当存在空值时,您将在表中浪费空间,如果要执行搜索特定电话号码等操作,则必须搜索所有三列.而是使用一个单独的表(例如,StudentPhoneNumbers)来存储它们.如果要将其限制为三,请使用触发器以防止每个学生超过三个.