Создание диаграммы сущностей базы данных без каких-либо внешних ключей - PullRequest
3 голосов
/ 13 мая 2009

Мне нужно создать диаграмму сущностей базы данных MSSQL 2005.

Отношения определяются путем последовательного использования первичных ключей, но нигде нет внешних ключей. Я попробовал функцию «Обратный инженер» в Microsoft Visio, которая, конечно, не удалась из-за отсутствия внешних ключей.

Поэтому мне нужен инструмент диаграмм, который не полагается исключительно на внешние ключи при рисовании отношений.

1 Ответ

2 голосов
/ 13 мая 2009

Создайте сценарий, который создает правильные отношения с внешним ключом, запустите инструмент диаграммы и затем запустите второй сценарий, который отбрасывает внешние ключи.

Это позволит вам использовать ваш инструмент, не слишком разрушая базу данных. Если первый скрипт потерпит неудачу, вы поймете, что с данными тоже что-то не так.

[РЕДАКТИРОВАТЬ] Если есть какое-то правило именования столбцов внешнего ключа, вы можете использовать язык сценариев для генерации SQL для вас.

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

Когда вы закончите с исправлением дизайна, вы можете извлечь команды для создания внешних ключей и применить их к реальной системе - если хотите. Таким образом, вы можете почувствовать, насколько велик беспорядок в базе данных. Если нет, то вы можете просто сохранить новую копию, внести в нее любые изменения дизайна и, после их проверки, перенести изменения в рабочую базу данных.

В моих собственных системах у меня всегда есть сценарии для быстрого создания клона текущей базы данных разработки и производства. Обычно я использую встроенную базу данных, такую ​​как Derby или HSQL. Но если вы добавите фильтр к процессу, вы можете использовать $(SCHEMA) в файлах DDL и установить одну и ту же базу данных в разные схемы на одном и том же сервере. Мы использовали это с большим успехом во время проекта переноса данных, где мы сохраняли результаты каждого теста миграции в новой схеме (TABLE_DATE_XX, где XX - двузначное число, поэтому вы можете создавать более одного теста в день) .

Это позволило нам проверить различные исправления, сравнить две миграции и т. Д. Поскольку весь процесс был автоматизирован на 100%, создание новой схемы стало дешевле, чем исправление существующей схемы.

...