Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СУБД / УМК СУБД.docx
Скачиваний:
571
Добавлен:
09.02.2016
Размер:
2.51 Mб
Скачать

Тема 7. Концептуальное проектирование баз данных

Одним из средств формализованного представления предметной области является модель «сущность-связь»(ERM – Entity-Relationship Model), предложенная Питером Ченом в 1976 г. Моделирование предметной области базируется на использованииER-диаграмм, причем существует большое число нотаций и методик их построения. Базовыми понятиями модели являются сущность, связь и атрибут.

Сущность (Entity)– реальный или абстрактный объект, имеющий существенное значение для предметной области. Сущность должна иметь наименование, выраженное существительным в единственном числе (рис. 18). Примерами могут быть такие классы объектов, какПоставщик,Сотрудник,Заказ.

Рис. 18. Графическое представление сущности

Неформальный способ идентификации сущностей – это поиск абстракций, описывающих объекты, процессы, роли и другие понятия. Формальный способ идентификации сущностей – анализ текстовых описаний предметной области, выделение имен существительных и выбор их в качестве абстракций.

Экземпляр сущностиэто конкретный представитель данной сущности. Например, экземпляром сущностиСотрудникможет быть сотрудник Иванов.

Каждая сущность должна обладать следующими свойствами:

·    иметь уникальное имя;

·   обладать одним или несколькими атрибутами, которые либо принадлежат сущности, либо наследуются через связь;

·   обладать одним или несколькими атрибутами, которые однозначно идентифицируют каждый экземпляр сущности.

Атрибут (Attribute)– характеристика сущности, значимая для рассматриваемой предметной области и предназначенная для идентификации, классификации, количественной характеристики или выражения состояния сущности.

Сущность Сотрудникможет иметь атрибуты:Табельный номер,Фамилия,Имя,Отчество,Должность. Атрибуты изображаются в пределах прямоугольника, определяющего сущность (рис. 19). Существуют следующие виды атрибутов:

·  простой – состоит из одного элемента данных;

·  составной – состоит из нескольких элементов данных;

·  однозначный – содержит одно значение для одной сущности;

·  многозначный – содержит несколько значений для одной сущности;

·  необязательный – может иметь пустое (неопределенное) значение;

·  производный – значение, производное от значения другого атрибута.

Уникальным идентификатором называется набор атрибутов, значения которых в совокупности являются уникальными для каждого экземпляра сущности. Удаление любого атрибута из идентификатора нарушает его уникальность. Уникальные идентификаторы изображаются на диаграмме подчеркиванием (рис. 20).

Рис. 19. Сущность с атрибутами

Рис. 20. Сущность с уникальным идентификатором

Каждая сущность может обладать любым количеством связей с другими сущностями. Связь (Relationship) – поименованная ассоциация между сущностями, значимая для рассматриваемой предметной области.Степенью связиназывается количество сущностей, участвующих в связи. Связь степени 2 называется бинарной,степени NN-арной. Связь, в которой одна сущность участвует в разных ролях, называется рекурсивной (унарной).

Пары чисел на диаграмме отражают две важные характеристики связи – класс принадлежности (первое число) и мощность связи (второе число).

Класс принадлежностихарактеризует обязательность участия экземпляра сущности в связи. Может принимать значение 0 (необязательное участиеэкземпляр сущности может быть связан с одним, несколькими или ни с одним экземпляром другой сущности) или 1 (обязательное участие – экземпляр сущности должен быть связан не менее чем с одним экземпляром другой сущности). Классы принадлежности на рис. 21 означают: в каждом отделе работает хотя бы один сотрудник, некоторые сотрудники могут не работать в отделах (работают в цехах).

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

В зависимости от значения мощности связь может иметь один из трех типов:

один-ко-многим(обозначается 1:N или 1:∞), показана на рис. 21.

многие-ко-многим(обозначается M:N), показана на рис. 22.

один-к-одному (обозначается 1:1), показана на рис. 23.

В реляционной базе данных связи позволяют избежать избыточности данных.

  • Связь осуществляется путем сопоставления данных в ключевых столбцах; обычно это столбцы, имеющие в обеих таблицах одинаковые названия.

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

Связи "один ко многим" (1:∞)

  • При такой связи каждой строке таблицы А может соответствовать множество строк таблицы Б, однако каждой строке таблицы Б может соответствовать только одна строка таблицы А.

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

  • В Microsoft Access сторона связи "один ко многим", которой соответствует первичный ключ, обозначается символом ключа.

  • Сторона связи, которой соответствует внешний ключ, обозначается символом бесконечности.

Рисунок 21. Связь 1:N(Один ко многим (1:∞)).

Связи "многие ко многим" (∞ : ∞)

  • При установлении связи "многие ко многим" каждой строке таблицы А может соответствовать множество строк таблицы Б и наоборот.

  • Такая связь создается при помощи третьей таблицы, называемой соединительной, первичный ключ которой состоит из внешних ключей, связанных с таблицами А и Б.

Например: Чтобы узнать ставку сотрудника, нужно знать не только его табельный номер, но и номер отдела (рис. 23). Ставка является атрибутом обеих сущностей СотрудникиОтдел. Это – атрибут связи.

Рисунок 22. Связь типа M:N (Многие ко многим (∞ : ∞)).

Связи "один к одному" (1:1)

  • При установлении связи "один к одному" каждой строке таблицы А может соответствовать только одна строка таблицы Б и наоборот.

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

  • Этот вид связи используется редко, поскольку в такой ситуации связываемые данные обычно можно хранить в одной таблице. Использовать связь вида "один к одному" можно в указанных ниже случаях.

• Чтобы разделить таблицу, содержащую слишком много столбцов. • Чтобы изолировать часть таблицы по соображениям безопасности. • Для хранения данных кратковременного использования, удалить которые проще всего путем очистки таблицы.

• Для хранения данных, имеющих отношение только к подмножеству основной таблицы.

  • В Microsoft Access сторона связи "один к одному", которой соответствует первичный ключ, обозначается символом ключа.

  • Сторона связи, которой соответствует внешний ключ, также обозначается символом ключа.

Рисунок 23. Связь типа 1:1 (Один к одному)

Создание связей между таблицами

  • При установлении связи между таблицами связанные поля не обязательно должны иметь одинаковые названия.

  • При этом у них должен быть один и тот же тип данных, если только поле, являющееся первичным ключом, не относится к типу "Счетчик".

  • Поле типа "Счетчик" можно связать с полем типа "Числовой" только в том случае, если для свойства FieldSize (размер поля) каждого из них задано одно и то же значение.

  • Например, можно связать столбцы типов "Счетчик" и "Числовой", если для свойства FieldSize каждого из них установлено значение "Длинное целое". Даже если оба связываемых столбца относятся к типу "Числовой", значение свойства FieldSize для обоих полей должно быть одинаковым.

В связи «супертип-подтип»общие атрибуты типа определяются в сущности-супертипе, сущность-подтип (подкласс) наследует атрибуты супертипа. Экземпляр подтипа существует только при условии существования экземпляра супертипа. Подтип не может иметь идентификатора (он импортирует его из супертипа). Например, супертипУЧредительобразуют подтипыюридическое лицоифизическое лицо(рис. 24). Свойство, по которому проводится разбиение, называется дискриминатором.

Существуют следующие виды идентификаторов:

·   первичный / альтернативныйсущность может иметь несколько идентификаторов (рис. 25). Один должен быть основным (первичным), другие – альтернативными. Первичный идентификатор на диаграмме подчеркивается. Альтернативные идентификаторы предваряются символами <1> для первого, <2> для второго и т. д.;

·   простой / составнойидентификатор, состоящий из одного атрибута, является простым, из нескольких атрибутов – составным;

·   абсолютный / относительныйесли атрибуты, составляющие идентификатор, принадлежат сущности, то идентификатор является абсолютным. Если один или более атрибутов идентификатора принадлежат другой сущности, то идентификатор является относительным, а сущность определяется как зависимая.

Рисунок 24. Связь «супертип-подтип»

Рисунок 25. Составной альтернативный идентификатор

На рис. 26 идентификатор сущности Строка_заказаявляется относительным. Он включает идентификатор сущностиЗаказ, что показывается подчеркиванием 1,1.

Рисунок 26. Относительный идентификатор

При построении ER-модели необходимо ответить на вопросы:

  • ·что следует считать сущностью, а что – атрибутом?

  • ·когда следует делить класс на подклассы?

В качестве самостоятельного объекта следует изображать сущности:

    • имеющие более одного идентификатора;

    • для которых фиксируются какие-либо свойства;

    • которые участвуют более чем в одной связи.

В случае сомнений лучше принять решение о создании самостоятельного объекта, так как это в дальнейшем потребует меньших переделок модели.

Количественные характеристики всегда являются атрибутами и никогда – сущностями. Они никогда не являются идентификаторами и не входят в состав идентификаторов. Следует стремиться отобразить информацию как можно более детально. Так, например, если Адрес,ФИОявляются составными характеристиками, то желательно отразить это в модели.

Сущность-супертип следует вводить, чтобы подчеркнуть общность и различие сущностей, входящих в один класс, или если объекты разных подклассов участвуют в разных связях. Если для сотрудников мужского и женского пола фиксируются одни свойства, эти объекты участвуют в одних связях, то соответствующие подклассы выделять не следует. Если же для мужчин фиксируются сведения о воинской обязанности, а для женщин – нет, подклассы следует выделить.

Каждый подкласс может быть изображен в модели как самостоятельный объект, а не как подкласс какого-то родового класса. Чтобы иметь больше информации о предметной области и сократить число элементов (свойств, связей) в модели, в большинстве случаев лучше объединять подклассы в класс.

Связи устанавливаются на уровне сущностей. Нельзя устанавливать связь между атрибутом одной сущности и другой сущностью или ее атрибутом. Нельзя также непосредственно связывать сами связи. Подклассы могут участвовать в связях, так же как и классы.

Соседние файлы в папке СУБД