【发布时间】:2011-04-05 13:07:18
【问题描述】:
一直在看教程How to handle a Many-to-Many relationship with PHP and MySQL。
在这个问题中,我参考了“数据库架构”部分,其中规定了以下规则:
这个新表必须被构造成 允许以下:
* It must have a column which links back to table 'A'. * It must have a column which links back to table 'B'. * It must allow no more than one row to exist for any combination of rows from table 'A' and table 'B'. * It must have a primary key.
现在已经很清楚了。
我遇到的唯一问题是第三条规则(“它必须允许任何组合不得超过一行”)。
我也想应用它,但它似乎不能这样工作。
在我的 mysql (5.XX) 测试实例中,我可以添加反映相同关系的两行!
例如,如果我建立这种关系(通过添加一行):
A 到 B
它也允许我建立这种关系:
B 到 A
所以问题实际上是两个问题:
1) 我该如何执行不允许执行上述操作的第三条规则?无论组合如何,都只有一个唯一关系。
2) 当我想要搜索“A”的所有关系时,SQL 查询会是什么样子?
注意#1:基本上我的最终目标是创建一个“友谊”系统,据我了解,解决方案是多对多表。如果可能,请提出其他建议。
注意 #2:用户表与关系位于不同的数据库中(称为友谊)表。因此我不能使用外键。
【问题讨论】:
-
我在这里发布了一个“澄清”问题:stackoverflow.com/questions/3597078
标签: mysql many-to-many database-relations