Из вашего описания я понимаю, что таблицы действительно функционально связаны , поскольку они совместно используют общую информацию (priceListID
в новой таблице относится к id
в исходной таблице).С одной стороны, эта установка все еще позволяет писать запросы, объединяющие таблицы.
Недостатком не создания внешнего ключа для представления этой связи является то, что с точки зрения базы данных, последовательность отношений не может быть гарантирована.Например, возможно, что записи создаются в новой таблице, где priceListID
не существует в исходной таблице.Также было бы возможно удалить записи в старой таблице, в то время как связанные записи существуют в новой, следовательно, превращая детей в сирот.
В заключение: не используя внешние ключи, разработчики полагаются исключительно наприложение для поддержания целостности данных.Нет очевидного преимущества, если не использовать встроенные функции, которые предлагает СУБД, для защиты целостности данных, и есть вероятность, что разработчики просто забыли эту критическую часть определения таблицы.Я бы предложил поговорить с ними и рассказать им об этом, чтобы создать недостающий внешний ключ (если только они не могут дать четкого объяснения, почему они этого не сделали).
Это должно быть так просто, как:
ALTER TABLE newtable
ADD CONSTRAINT fk_new_to_original_fk
FOREIGN KEY (priceListID )
REFERENCES originaltable(id);
Обратите внимание, что для этого необходимо, чтобы все значения в столбце ссылок были доступны в родительской таблице.