我有一个数据结构,必须在其中存储元素对。每对恰好有 2 个值,因此我们使用一个表,其中包含字段(左值,右值......)。
这些对应该是唯一的,如果密钥发生更改,它们将被视为相同。
Example: (Fruit, Apple) is the same as (Apple, Fruit).
如果可以有效的方式实现,我会在字段上设置数据库约束,但不会不惜一切代价 - 性能更重要。
我们正在使用MSSQL server 2008
目前,但可以进行更新。
有没有一种有效的方法来实现这一目标?
两种解决方案,实际上都是为了将问题变得更容易。我通常更喜欢T1
如果强制消费者做出改变是可以接受的解决方案:
create table dbo.T1 (
Lft int not null,
Rgt int not null,
constraint CK_T1 CHECK (Lft < Rgt),
constraint UQ_T1 UNIQUE (Lft,Rgt)
)
go
create table dbo.T2 (
Lft int not null,
Rgt int not null
)
go
create view dbo.T2_DRI
with schemabinding
as
select
CASE WHEN Lft<Rgt THEN Lft ELSE Rgt END as Lft,
CASE WHEN Lft<Rgt THEN Rgt ELSE Lft END as Rgt
from dbo.T2
go
create unique clustered index IX_T2_DRI on dbo.T2_DRI(Lft,Rgt)
go
在这两种情况下,都没有T1
nor T2
中可以包含重复值Lft,Rgt
pairs.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)