У меня необычная ситуация для моделирования в базе данных 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 , в которой недостаточно информации или ссылок для получения дополнительной информации, и эта элементарная ссылка MSDN .
Судя по всему, мой гугл-фу сегодня слаб, любые ссылки / советы очень ценятся!
Альтернативный заголовок: как смоделировать 'оверлейные' поля в SQL SERVER?
MS SQL SERVER 2005 или более поздней версии предполагается / предпочтительнее.