我在MS SQL Server数据库中有一个不寻常的建模情况:表的主键是由5个外键(固定大小)组成的多段“自然”键。
我希望能够定义一个用户定义的数据类型来实现基于char(8)原语的数据结构,这样元素就可以作为单个字段进行寻址。
例如(在错误的伪代码中):
UDT seggy
(
seg1 char(2),
seg2 char(1),
seg3 char(1),
seg4 char(2),
seg5 char(2)
)
create table yotable
(
pkfield seggy NOT NULL,
etc varchar(14), --whatever etc.
)
with pkfield as the primary key,
and also with seg1 as a foreign key to tableseg1,
and also with seg2 as a foreign key to tableseg2,
and so on
然后能做这样的事情:
insert into yotable (pkfield, etc) values ('abcdefgh','whatever')
select * from yotable where seg2 = 'c'
insert into yotable (seg1,seg2,seg3,seg4,seg5,etc)
values ('ab','c','d','ef','gh', 'whatever')
到目前为止我只找到了这个
CodeProject article
它不够深入或提供链接以获取更多信息
MSDN link
.
显然,我的google fu今晚很弱,任何链接/提示都非常感谢!
替代标题:如何在SQL Server中模拟“覆盖”字段?
假定/首选MS SQL Server 2005或更高版本。