Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Роли сущности (ER-моделирование)



Роли сущности (ER-моделирование)

 

Описание предметной области:

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

 

Особенности проектирования БД:

Постараемся выделить сущности в заданной предметной области. Важно понимать, что для хранения информации об отправителях и получателях сообщений необходимо использовать одну и ту же таблицу. Если всё-таки использовать две таблицы (см рис. 1), то мы столкнёмся с проблемой избыточности. (1) Данные с одними и теми же атрибутами (очевидно, что отправитель и получатель обладают одинаковым набором атрибутов) будут находиться в разных местах, что, как минимум, усложняет поиск пользователей. Еще одна сложность – (2) если один из пользователей, зарегистрированный как получатель сообщения, решит сам написать кому-нибудь, то тогда нам придётся продублировать его персональные данные и в таблицу «отправители». В таком случае мы имеем абсолютно идентичные строки в двух разных таблицах, что затруднит редактирование строк (нужно будет исправлять два раза одно и то же в двух разных таблицах).

Рис. 1. Неверная схема БД с таблицами «получатель» и «отправитель»

 

Основная ошибка, допущенная при проектировании выше, заключается в выделении таблиц БД на основе ролей пользователей. На самом же деле, одинаковый набор атрибутов делает отправителя и получателя в терминах БД одним информационным объектом, назовем его «пользователь портала». Именно информационный объект, а не роль, должен быть представлен в виде таблицы в схеме БД. Тот факт, что пользователь может выступать в различных ролях, целесообразно отобразить в связях между таблицами (рис. 2):

Рис. 2. Верная схема БД с одной таблицей и двойной связью

 

Таким образом, верное решение следующее:

· Выделить один информационный объект – «пользователь»

· Указать на то, что пользователь может выступать в двух разных ролях (используются две связи между таблицами «пользователь» и «сообщение». Поле «отправитель» и «адресат» ссылаются на идентификатор «пользователя»)


Дата добавления: 2015-11-04; просмотров: 25 | Нарушение авторских прав




<== предыдущая лекция | следующая лекция ==>
 | 

mybiblioteka.su - 2015-2024 год. (0.008 сек.)