gpt4 book ai didi

sql - "friendship"数据库中的唯一对

转载 作者:行者123 更新时间:2023-12-04 14:06:38 25 4
gpt4 key购买 nike

我发布了这个问题,这是对我的另一个问题的总结 question .

我有 两个数据库 :
1) db_users。
2) db_friends。

我强调它们存储在 单独的数据库 在不同的服务器上,因此不能使用外键。

在“db_friends”中,我有一个表“tbl_friends”,它包含以下列:
- id_user
- id_friend

现在 我如何确保每一对都是独一无二的 在这张 table 上('tbl_friends')?
我想在表级别执行此操作,而不是通过查询。

例如 这些是无效行 :
1 - 2
2 - 1

我希望这是不可能添加的。

另外 - 我将如何搜索用户 713 的所有 friend 虽然他可以被提及 ,在一些友谊行上,在第二列 ('id_friend')?

最佳答案

您可能无法在数据库级别执行此操作——您的应用程序代码将不得不执行此操作。如果您确保您的 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 = ?)

为了提高效率,您可能希望向前和向后索引它——即通过 (id_user, id_friend) 和 (id_friend, id_user)。

如果您 必须在数据库级别执行此操作,然后在插入之前将参数交换到(低,高)的存储过程将起作用。

关于sql - "friendship"数据库中的唯一对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3597078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com