我需要一个数据库,可以让我在游戏中对 friend 进行分组。一个好友只能拥有 1 个好友。所以这是一个1对1的关系。
我可以使用两个表构建数据库,如下所示:
FriendA(name, id, friend_id)
FriendB(name, id, friend_id)
因此 FriendA
保留对 FriendB
的引用,反之亦然。
或者
我可以有一张 table 来做这样的事情:
Person(name, id, friend_id)
<小时/>
哪种方法最好?为了避免意见,答案必须包括一些可量化的方面,例如哪种方法会产生更快的搜索结果等。
最佳答案
您应该使用“人员”表,因为如果您最终必须搜索特定人员,那么这两个表都将存储相同的数据,您将在一个表中开始,然后必须搜索另一个表。这会浪费一些时间,因为最长的搜索时间总是在找不到东西的时候。
如果您将两个人都存储在两个表中,那么这只是存储冗余数据,如果您更新一个表中的一个人然后忘记在另一个表中更新他们,可能会导致问题
另一方面,对于 person 表,所有内容都在一个位置,并且可以让一个表指向自身,并且您不会因忘记更新两个表而出现任何更新异常。搜索时间也应该更快,因为您不需要 sql 来打开两个表。
关于mysql - 对该数据库更有效的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28642391/