Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > Нормальизация БД


Автор: QVO 3.11.2014, 10:56
Здравствуйте форумчани!

Описание:
Помогите разобраться в правильности понимания материала из книги "К.ДЖ.Дейт - Введение в базы данных". Я стараюсь спроектировать БД согласно 3 правилам нормализации (1НФ, 2НФ, 3НФ).
У меня есть сущность Service, которая содержит множество изображений из сущности Preview, а так же есть сущность Skin, которая так же содержит множество изображение из сущности Preview.
Для того, чтобы связать эти 3 сущности между собой, я создал две дополнительные с названием Skin_has_Preview и Service_has_Preview, которые содержат ссылки на предыдущие 3 таблицы.

Skin_has_Preview связан с Preview один-к-одному
Service_has_Preview связан с Preview один-к-одному

Skin связан с Skin_has_Preview многое-к-одному
Service связан с Service_has_Preview многое-к-одному

К прикрепленным файлам я приложил изображение ER-диаграммы.

Вопросы:
1. Правильно ли я сделал?
2. Могули я в таблицах Skin_has_Preview и Service_has_Preview иметь первичный ключь ссылающийся на первичный ключь сущности Preview?

Если не понятно изложился, задайте пожалуйста уточняющий вопрос.

user posted image

Автор: QVO 4.11.2014, 11:50
Вопрос снимаю.

Ответ:
Если связь типа 1:М и класс принадлежности сущности на стороне М  является необязательным, то необходимо построить три таблицы – по одной для каждой сущности и одну для связи. Первичный ключ сущности  должен быть первичным ключом соответствующей таблицы. Таблица для связи среди своих атрибутов должна иметь ключи обеих сущностей.

Автор: Akina 4.11.2014, 22:34
Цитата(QVO @  4.11.2014,  12:50 Найти цитируемый пост)
Если связь типа 1:М и класс принадлежности сущности на стороне М  является необязательным, то необходимо построить три таблицы – по одной для каждой сущности и одну для связи. 

Для связи 1:М двух таблиц достаточно. Вне зависимости от обязательности записи на стороне Много. Вот в случае N:M - да, три таблицы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)