Как сослаться на один столбец с уникальным ограничением на другой столбец? - PullRequest
0 голосов
/ 19 октября 2018

У меня есть таблица «Типы»

+-----------+--------+
| RefTypeID | TypeID |
+-----------+--------+
| 1         | 1      |
| 1         | 2      |
| 1         | 3      |
| 2         | 2      |
| 2         | 4      |
| 3         | 5      |
+-----------+--------+

Поскольку пара значений в каждой строке повторяться не будет, я создал уникальное ограничение, включающее оба столбца.

У меня естьдругая таблица (Prymes), которая выглядит следующим образом

+---------+-----------+--------------------+
| PrymeID | RefTypeID | ***More Columns*** |
+---------+-----------+--------------------+
| 1       | 2         |         ***        |
| 2       | 2         |         ***        | 
| 3       | 3         |         ***        |
| 4       | 1         |         ***        |
| 5       | 1         |         ***        |
| 6       | 3         |         ***        |
+---------+-----------+--------------------+

И я хочу создать внешний ключ в Prymes, который ссылается только на столбец RefTypeID в Types, но из-за ограничения отношение должно включать два столбца в Prymes.и два столбца в ключах.

Можно ли как-нибудь создать отношение, используя только столбец RefTypeID в обеих таблицах?

1 Ответ

0 голосов
/ 19 октября 2018

Вы не можете.

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

Другими словамивам понадобится таблица с уникальными RefTypeId s и сделать RefTypeId первичным ключом этой таблицы и ссылаться на него из Types и Prymes с внешним ключом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...