Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 reference на несколько таблиц  [new]
Шпунтик
Member

Откуда:
Сообщений: 148
автор
CREATE TABLE [dbo].[Table](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[Table2or3ID] [bigint] NULL,
CONSTRAINT [PK_Table] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO


положим. есть следующая структура:

таблица [dbo].[Table], в которой есть ссылка на ID таблицы Table2 или таблицы Table3 (если [Table2or3ID] чётный на - первую, нечётный - на вторую)

как в связи с последним условием модернизировать код:

автор
ALTER TABLE [dbo].[Table] WITH CHECK ADD CONSTRAINT [FK_Table_Table2] FOREIGN KEY([Table2or3ID])
REFERENCES [dbo].[Table2] ([ID])
GO

ALTER TABLE [dbo].[Table] CHECK CONSTRAINT [FK_Table_Table2]
GO


возможно ли такое реализовать?
26 июл 11, 15:06    [11028710]     Ответить | Цитировать Сообщить модератору
 Re: reference на несколько таблиц  [new]
Glory
Member

Откуда:
Сообщений: 104751
А нормальную структуру спроектировать никак ?
26 июл 11, 15:08    [11028726]     Ответить | Цитировать Сообщить модератору
 Re: reference на несколько таблиц  [new]
Шпунтик
Member

Откуда:
Сообщений: 148
Glory,

ну если мне подскажут по структуре, буду не против:

суть такая, есть n типов документов, по которым проходит оплата и планирование одинаковой структуры
хочется завести одну таблицу на эту оплату и сделать с неё референс в зависимость от остатка при делении на n IDшника документа на соответствующую таблицу (в которых соответственно выставлены подходящие начальные ID и шаг)
26 июл 11, 15:17    [11028811]     Ответить | Цитировать Сообщить модератору
 Re: reference на несколько таблиц  [new]
Glory
Member

Откуда:
Сообщений: 104751
Шпунтик
Glory,

ну если мне подскажут по структуре, буду не против:

суть такая, есть n типов документов, по которым проходит оплата и планирование одинаковой структуры
хочется завести одну таблицу на эту оплату и сделать с неё референс в зависимость от остатка при делении на n IDшника документа на соответствующую таблицу (в которых соответственно выставлены подходящие начальные ID и шаг)

И зачем тут много таблиц для каждого типа документа?
26 июл 11, 15:20    [11028841]     Ответить | Цитировать Сообщить модератору
 Re: reference на несколько таблиц  [new]
Шпунтик
Member

Откуда:
Сообщений: 148
потому что иначе придётся делать огромную таблицу, в каждой строке которой процентов 90 атрибутов будут null

документы сильно отличаются по структуре
------------------------------------

правда тут надо как-то застраховаться от того, что появятся новые типы документов и придётся всё перебиндивать, я уже создавал тему про то, можно ли добавить префикс к идентификатору (но там развели флуд), поэтому я решил остановиться на таком решении
26 июл 11, 15:24    [11028882]     Ответить | Цитировать Сообщить модератору
 Re: reference на несколько таблиц  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
Шпунтик,

Множество таблиц тут совершенно ни к чему. Можно вполне одной обойтись. Но если очень хочется поизвращаться, то вот:
use tempdb
go
begin tran

create table dbo.Table1
(
 t1_id int not null primary key
)

create table dbo.Table2
(
 t2_id int not null primary key
)

create table dbo.Table3
(
 t3_id int not null primary key,
 t3_Value int not null,
 t3_t1 as case when t3_Value % 2 = 0 then t3_Value end persisted,
 t3_t2 as case when t3_Value % 2 = 1 then t3_Value end persisted,
 constraint FK_Table3_Table1 foreign key (t3_t1) references dbo.Table1 (t1_id),
 constraint FK_Table3_Table2 foreign key (t3_t2) references dbo.Table2 (t2_id)
)

insert into dbo.Table3
values
 (1, 2)
 
insert into dbo.Table3
values
 (2, 3)

rollback
26 июл 11, 15:25    [11028903]     Ответить | Цитировать Сообщить модератору
 Re: reference на несколько таблиц  [new]
Glory
Member

Откуда:
Сообщений: 104751
Шпунтик
потому что иначе придётся делать огромную таблицу, в каждой строке которой процентов 90 атрибутов будут null

документы сильно отличаются по структуре

Вам бы в Проектирование сначала
26 июл 11, 15:26    [11028906]     Ответить | Цитировать Сообщить модератору
 Re: reference на несколько таблиц  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
Шпунтик, может, стоит все общие атрибуты документов и Id хранить в одной таблице, а в отдельных таблицах - специфические для конкретных типов документов атрибуты и ссылки на первую таблицу?
26 июл 11, 15:27    [11028915]     Ответить | Цитировать Сообщить модератору
 Re: reference на несколько таблиц  [new]
ZezaM
Member [заблокирован]

Откуда:
Сообщений: 540
Шпунтик,
...подскажут по структуре, буду не против:..
блин, с начинать( и заканччивать) нухно с этого

суть - ЗАКАЗЧИК()
26 июл 11, 15:27    [11028927]     Ответить | Цитировать Сообщить модератору
 Re: reference на несколько таблиц  [new]
Шпунтик
Member

Откуда:
Сообщений: 148
всем, кто высказался по существу - спасибо, надо, правда, более простую структуру организовать, а то тут заблудиться можно
26 июл 11, 15:31    [11028962]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить