2017-01-20 16 views
0

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

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

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

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

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

ответ

0

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

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

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

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

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

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

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

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

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

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

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