SQL索引

时间:2016-07-19 10:54:42

标签: sql sql-server database

我正在为聊天列表设计一个表格。每个聊天都引用两个用户,每个给定的用户对必须是唯一的。显然,用户对的排列是对称的:无关紧要,一对中的哪个用户是第一个,哪个是第二个。

假设用户表具有整数 UserID 作为PK。然后聊天表将有一对FK字段: UserID1,UserID2 。我希望每对用户在聊天表中都有一个独特的记录。然后我可以创建唯一的 INDEX(UserID1,UserID2)。但是,此索引在用户对方面不是唯一的,因为当UserID2首先出现时,它也可能包含排列:(UserID1,UserID2)(UserID2,UserID1)将是两个不同的不同对,而按要求的逻辑,它们应该被视为一个不同的记录。

有没有办法在没有外部编码的情况下在纯SQL中实现此构造,例如DB触发器或脚本?我正在使用MS SQL Server进行原型设计。但我希望尽可能使设计具有通用性和中性,以与大多数SQL兼容的数据库兼容。这仅仅是关于最佳体系结构的问题,而不是特定的SQL实现代码。

可能的想法:

  1. 对有序用户对的散列进行制作和索引
  2. 检查用户订单,并在所有查询中首先放置ID较小的用户
  3. 但是所有这些都限制了SQL之外的外部查询。

0 个答案:

没有答案