mysql - 对该数据库更有效的方法是什么?

标签 mysql database

我需要一个数据库,可以让我在游戏中对 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/

相关文章:

mysql - 获取不同值的总数

java - 在Java中查询不起作用,但在MySQL中它工作正常,我该如何解决这个问题?

php - 文件导出脚本在大输出时挂起

mysql - 如何在 MySQL 中添加多于一列同时也将删除重复项?

mysql - 如何从列中删除多个关键字

sql - 数据库推荐

mysql - 在 MySQL 中使用浮点存储超过一百万的值的最大可能值

MySQL 构建此查询的最佳方式?

php - 如何链接到数据库页面

php - 如何创建包含 6 个字段的数据表来定期存储 90 天的记录