Ссылка из нескольких столбцов в таблице, чтобы выделить другую таблицу, используя внешние ключи? - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть таблица в SQL Сервер, который имеет 5 столбцов, которые я хотел бы ссылаться на строки другой таблицы, используя внешние ключи.

Вопрос: Возможно ли, что одна строка будет ссылаться на одни и те же или разные строки одной другой таблицы через внешние ключи? Если да, то как я могу объявить это в MS SQL. Существуют ли какие-либо специальные параметры, которые следует добавить к внешним ключам, чтобы я не выдавал ошибок при обновлении или удалении строки первой таблицы?

Пример:

 Table 2: 

 Id Value1 Value2  Value3
 1  aaa    bbb     ccc
 2  ddd    eee     fff
 3  aaa    bbb     ccc
 ...


  Table 1:

 Id Column1=FK to table2  Column2=FK to table2 Column3=FK to table2
 1  1                     1                    3
 2  3                     2                    1

etc.

1 Ответ

0 голосов
/ 21 февраля 2020

Нет ничего сложнее, чем один внешний ключ. У этого есть определенный запах к этому, что дизайн не идеален. Но без знания бизнес-требований невозможно быть уверенным или помочь найти лучшую архитектуру.

Вот рабочий пример, изложенный в вашем вопросе.

create table Table2
(
    Id int identity primary key
    , Value1 varchar(10)
)

create table Table1
(
    Id int identity primary key
    , Val1 int 
    , Val2 int
    , Val3 int
    , constraint FK_Table1_Table2_Val1 foreign key (Val1) references Table2(Id)
    , constraint FK_Table1_Table2_Val2 foreign key (Val2) references Table2(Id)
    , constraint FK_Table1_Table2_Val3 foreign key (Val3) references Table2(Id)
)

insert Table2 values
('first val')
, ('second')
, ('third')

insert Table1 values
(1, 1, 3)
, (3, 2, 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...