我正在为聊天列表设计一个表格。每个聊天都引用两个用户,每个给定的用户对必须是唯一的。显然,用户对的排列是对称的:无关紧要,一对中的哪个用户是第一个,哪个是第二个。
假设用户表具有整数 UserID 作为PK。然后聊天表将有一对FK字段: UserID1,UserID2 。我希望每对用户在聊天表中都有一个独特的记录。然后我可以创建唯一的 INDEX(UserID1,UserID2)。但是,此索引在用户对方面不是唯一的,因为当UserID2首先出现时,它也可能包含排列:(UserID1,UserID2)和(UserID2,UserID1)将是两个不同的不同对,而按要求的逻辑,它们应该被视为一个不同的记录。
有没有办法在没有外部编码的情况下在纯SQL中实现此构造,例如DB触发器或脚本?我正在使用MS SQL Server进行原型设计。但我希望尽可能使设计具有通用性和中性,以与大多数SQL兼容的数据库兼容。这仅仅是关于最佳体系结构的问题,而不是特定的SQL实现代码。
可能的想法:
但是所有这些都限制了SQL之外的外部查询。