ER диаграмма для преобразования базы данных

Предположим, у меня есть две сильные сущности E1 и E2, связанные отношением 1 ко многим R.

E1 <--------- R ---------- E2

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

Я знаю, что когда E2 будет в общем участии, ответ будет 2. Так как, первичный ключ E2 будет отлично сливаться. Я не уверен насчет выше. Я видел несколько мест и нашел другой ответ. Я ищу какой-то веский аргумент с ответом.

Ответ может быть 2 или 3. Я хочу знать, что является более правильным.

1 ответ

Оригинальный метод Чена отобразил каждое отношение сущности и отношение отношения к отдельной таблице. Это даст 3 таблицы:

E1 (e1 PK)
E2 (e2 PK)
R (e2 PK, e1)

Полное участие любого E1 или же E2 может быть обработано ограничением FK.

Как вы видете, E2 а также R имеют один и тот же определитель / PK. Это позволяет нам объединить два отношения в одну таблицу, используя обнуляемый e1 столбец, если E2 частично участвует в отношениях, не допускает обнуления, если участвует полностью. Полное участие E1 все еще требует ограничения FK:

E1 (e1 PK)
E2 (e2 PK, e1)

Я хочу знать, что является более правильным.

Логически, два решения в значительной степени эквивалентны.

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

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

Другие требования также могут повлиять на решение. Если у меня есть 50 необязательных атрибутов, я определенно не хочу иметь дело с 50 различными таблицами! Однако, если бы я хотел создать еще одну связь (R2), который применяется только к значениям в E2 которые уже участвуют в RЯ мог бы применить это ограничение в первом проекте, используя ограничение FK: R2 (e2) referencing R (e2), Во втором проекте мне нужно будет использовать триггер, так как я хочу только разрешить ссылки на e2 которые имеют ненулевое значение e1 ценности.

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

Другие вопросы по тегам