我发布这个问题,这有点是我的另一个问题的摘要.
我有两个数据库:
1)db_users.
2)db_friends.
我强调它们存储在不同服务器上的不同数据库中,因此不能使用外键.
在'db_friends'中我有'tbl_friends'表,其中包含以下列:
- id_user
- id_friend
现在我该如何确保每一对在这个表中都是唯一的('tbl_friends')?
我想在表级别,而不是通过查询.
例如,这些是无效的行:
1 - 2
2 - 1
我希望这是不可能添加的.
另外 - 在第二列('id_friend')的某些友谊行中,如果可以提及用户713的所有朋友,我将如何搜索?
小智 6
您可能无法在数据库级别执行此操作 - 您的应用程序代码必须执行此操作.如果你确保你的tbl_friends记录总是输入(lowId,highId),那么典型的PK /唯一索引将解决重复的问题.事实上,我会把你的tbl_friends中的列重命名为(id_low,id_high)以加强这一点.
您查询以查找用户713的任何内容将是类似的
SELECT id_low AS friend FROM tbl_friends WHERE (id_high = ?)
UNION ALL
SELECT id_high AS friend FROM tbl_friends WHERE (id_low = ?)
Run Code Online (Sandbox Code Playgroud)
为了提高效率,您可能希望将其向前和向后编入索引 - 即(id_user,id_friend)和(id_friend,id_user).
如果必须在数据库级别执行此操作,则在插入之前将参数交换为(低,高)的存储过程将起作用.