我有一个数据库,其中包含使用外键表示它们之间关系的表。在一个表中我有2列.. 1是id(外键),其他包含friendsids(来自friends表的外键)。
我可以将朋友放在不同的行上:
| id | friendsids |
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
或将它们打包到一个字符串字段中:
| id | friendsids |
| 1 | 3,4,5 |
稍后我将使用PHP explode()
分隔朋友。还记得我有很多记录。哪种方式更有效,为什么?
提前致谢。
答案 0 :(得分:3)
数据库规范化规则规定您在1
字段中只有1
值。这样您就可以使用正确的主键访问任何单个值,而不必使用一些丑陋的代码来拆分返回的字符串。
无论何时设计数据库,都应始终牢记规范化规则。 Here是维基百科文章的链接。
万一你忘了:
钥匙,整个钥匙,只有钥匙 - 所以帮助我Codd。
答案 1 :(得分:2)
忘记在PHP中拆分。你正在做的是一个所谓的映射表,它应该是1:1。这允许你
并且可能更多。
答案 2 :(得分:0)
如前所述,选项之一是走的路,不了解性能,选项1已经在如此多的数据库中有效地工作了很多年..
请记住将正确的索引放在正确的表格上,你就可以了。
SQL用于处理大量数据