我正在创建一个允许网站用户成为朋友的表格。我正在尝试确定哪个是最好的桌面设计来存储和返回用户的朋友。目标是快速查询,而不是耗尽大量的数据库空间。
我有两个选择:
为每个友谊提供单独的行。
+----+-------------+-------------------+
| ID | User_ID | Friend_ID |
+----+-------------+-------------------+
| 1 | 102 | 213 |
| 2 | 64 | 23 |
| 3 | 4 | 344 |
| 4 | 102 | 2 |
| 5 | 102 | 90 |
| 6 | 64 | 88 |
+----+-------------+-------------------+
或以CSV格式将所有朋友存储在一行
+----+-------------+-------------------+
| ID | User_ID | Friend_ID |
+----+-------------+-------------------+
| 1 | 102 | 213,44,34,67,8 |
| 2 | 64 | 23,33,45,105 |
+----+-------------+-------------------+
在检索朋友时,我可以使用explode()
创建一个数组,但删除用户会比较棘手。
编辑:对于第二种方法,我会将php中数组中的每个id分开来计算其他函数。
您认为哪种方法更好?
答案 0 :(得分:13)
第一种方法肯定更好。这就是关系数据库很棒的原因:)
它允许您搜索和分组比第二种方法更具体的标准。
假设你想写一个查询,以便用户可以看到谁将他们作为朋友。第二种方法需要你使用IN(),并且比使用JOINS慢得多。
答案 1 :(得分:6)
第一种方法几乎在所有方面都更好。您不仅可以利用数据库索引更快地查找记录,还可以使修改变得更加容易。
答案 2 :(得分:5)
通常不希望与1st normal form分手,因为
答案 3 :(得分:4)
使用关系数据库的强大功能。绝对采用第一种方法。 MySQL比你想象的要快,它经常处理非常大的数据集。