Скажем, у меня есть таблица, для которой требуется составной PK:
Table1
+---------+---------+
| CompA | CompB |
+---------+---------+
| Value 1 | Value 2 |
| Value 1 | Value 3 |
| Value 2 | Value 3 |
+---------+---------+
Затем я построил вторую таблицу и хотел использовать PK из Таблицы 1 в качестве FK в этой новой Таблице 2. Есть дваспособы, которыми вы можете сделать это.
Опция 1 - И вариант, с которого я изначально пошел, - это просто использовать составной ключ из Таблицы 1 в качестве FK в Таблице 2.
Table 2
+------+---------+---------+
| T2PK | CompA | CompB |
+------+---------+---------+
| A | Value 1 | Value 2 |
| B | Value 1 | Value 3 |
| C | Value 2 | Value 3 |
| D | Value 2 | Value 3 |
+------+---------+---------+
Вариант 2 - вариант, к которому я теперь хочу перейти, состоит в том, чтобы изменить PK в таблице 1 на столбец ID и установить составное УНИКАЛЬНОЕ ограничение на пары значений
Table 1
+----+---------+---------+
| ID | CompA | CompB |
+----+---------+---------+
| 1 | Value 1 | Value 2 |
| 2 | Value 1 | Value 3 |
| 3 | Value 2 | Value 3 |
+----+---------+---------+
Так что теперьв любых других таблицах, в которых вы хотите использовать Таблицу 1 в качестве FK, вы ссылаетесь на один столбец идентификатора (поскольку это теперь PK таблицы 1)
Table 2
+----+------+
| PK | T1FK |
+----+------+
| A | 1 |
| B | 2 |
| C | 3 |
| D | 3 |
+----+------+
Проблема - IИзначально мои таблицы создавались с помощью Варианта 1. Наличие FK, которые охватывают несколько столбцов для 1 объекта, стало раздражающим и делает мои операторы объединения более сложными, чем они должны быть.Теперь я хочу перейти к варианту 2. Я построил таблицы с методологией варианта 2, но я не могу найти хороший способ выгрузить данные моей таблицы варианта 1 в мои новые таблицы варианта 2.Я не могу понять, как, после сброса данных Table1, Option1
в таблицу Table1 Option2
и получения сгенерированных идентификаторов, как связать эти сгенерированные идентификаторы с тем же набором данных Table2 Option1
с новым Table2 Option2