一直在阅读教程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:用户表与关系(称为友谊)表位于不同的数据库中。因此我不能使用外键。