Это вопрос разработки SQL. Сначала настройка. У меня есть три таблицы:
- A, который автоматически заполняется на основе запроса к связанному серверу. Данные в этой таблице не могут быть изменены;
- B, в котором всего около десятка строк, содержащих имена для коллекций As;
- AtoB - таблица сопоставления, по которой As организованы в именованные коллекции с внешними ключами в обоих столбцах;
Например, A содержит:
- Жираф
- Owl
- Tiger
А В содержит:
- Сиэтлский зоопарк
- Зоопарк Сан-Хосе
А AtoB содержит:
1,1 (Жираф в Сиэтле)
2,1 (Сова в Сиэтле)
3,1 (Тигр в Сиэтле)
2,2 (Сова в Сан-Хосе)
Теперь проблема:
Меня попросили включить в некоторые из этих коллекций элементы, которых нет в A. Итак, я создаю таблицу C с такими же столбцами идентификаторов и имен, что и в A, и заполняю ее. В соответствии с более ранним примером, скажем, C содержит:
- Dragon
Вопрос в том, как включить элементы из C в AtoB? Что если мне нужно будет включить дракона в зоопарк Сиэтла?
Мой первый инстинкт, будучи наивным, состоял в том, чтобы создать представление V, содержащее объединение A и C, и изменить AtoB на VtoB. Вот где моя наивность окупилась: нельзя создать внешний ключ для представления.
Я подозреваю, что есть стандартные, правильные способы связать один или несколько A или C с B.