Советы по созданию внешних ключей в устаревшей базе данных - PullRequest
1 голос
/ 17 сентября 2010

У меня есть база данных, в которой нет внешних ключей. Я сделал несколько проверок, и есть несколько осиротевших записей.

Это довольно большая база данных на 500+ таблиц, и я смотрю на возможность встраивания внешних ключей обратно.

Кроме траления по каждой таблице за раз?

Кто-нибудь когда-либо проходил этот процесс раньше и может предложить несколько советов или советов о том, как сделать процесс немного проще.

Любая помощь приветствуется.

Ответы [ 2 ]

2 голосов
/ 17 сентября 2010

Полагаю, вы имеете в виду "нет внешнего ключа ограничений " ... если бы не было внешних ключей, вы бы не знали, какие записи вообще совпадают.

У полей первичного и внешнего ключей одно и то же имя? Например, в таблице PK есть поле «CustomerId», а в таблицах FK также есть поле «CustomerId»? Если это так, вы можете запросить свойства столбца (возможно, используя INFORMATION_SCHEMA, вы не упомянули СУБД), чтобы выяснить некоторые подразумеваемые отношения. Просто запросите все таблицы, у которых есть поле с именем «CustomerId», которое не является PK, и есть хорошая (но не определенная) ставка на то, что эти таблицы должны иметь ограничение FK для таблицы Customer. Вы даже можете использовать выходные данные запроса для генерации DDL для создания ограничений.

0 голосов
/ 17 сентября 2010

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

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