什么是这个数据库更有效的方法?

时间:2015-02-21 05:14:44

标签: mysql database

我需要一个允许我在游戏中将朋友分组的数据库。一个朋友只能有一个朋友。所以这是一对一的关系。

我可以使用两个表来构建我的数据库:

FriendA(name, id, friend_id)
FriendB(name, id, friend_id)

因此FriendA会保留对FriendB的引用,反之亦然。


OR

我可以有一个表做这样的事情:

Person(name, id, friend_id)

哪种方法最好?为了避免意见,答案必须包含一些可量化的方面,例如哪种方法会产生更快的搜索结果等。

1 个答案:

答案 0 :(得分:1)

您应该使用Person表,因为如果您最终必须在一个表中开始搜索特定的人,那么这两个表都将存储相同的数据然后您将拥有搜索另一个。这将浪费一些时间,因为最长的搜索时间始终是找不到的东西。

然后,如果您将两个人都存储在两个表中,那么只存储冗余数据,如果您在一个表中更新某个人,然后忘记在另一个表中更新它们,则会导致问题

另一方面,人员表位于一个地方,没有表格指向自己,并且忘记更新两个表格,您不会有任何更新异常。搜索时间也应该更快,因为你不需要sql来打开两个表。