我需要一个允许我在游戏中将朋友分组的数据库。一个朋友只能有一个朋友。所以这是一对一的关系。
我可以使用两个表来构建我的数据库:
FriendA(name, id, friend_id)
FriendB(name, id, friend_id)
因此FriendA
会保留对FriendB
的引用,反之亦然。
OR
我可以有一个表做这样的事情:
Person(name, id, friend_id)
哪种方法最好?为了避免意见,答案必须包含一些可量化的方面,例如哪种方法会产生更快的搜索结果等。
答案 0 :(得分:1)
您应该使用Person表,因为如果您最终必须在一个表中开始搜索特定的人,那么这两个表都将存储相同的数据然后您将拥有搜索另一个。这将浪费一些时间,因为最长的搜索时间始终是找不到的东西。
然后,如果您将两个人都存储在两个表中,那么只存储冗余数据,如果您在一个表中更新某个人,然后忘记在另一个表中更新它们,则会导致问题
另一方面,人员表位于一个地方,没有表格指向自己,并且忘记更新两个表格,您不会有任何更新异常。搜索时间也应该更快,因为你不需要sql来打开两个表。