Автор: Пользователь скрыл имя, 03 Января 2011 в 10:41, курсовая работа
Целью данной работы является детальное рассмотрение понятия "ER-модель".
Задачами работы являются рассмотрение концепции ER-модели, графическое представление, связь ER-модели и реляционной базы данных.
Основные данные о работе 2
Введение 4
1. Проектирование базы данных 6
1.1. Семантические модели данных 6
1.2. Основные этапы проектирования баз данных 8
2. ER-диаграммы 10
2.1 Концепции ER-модели 10
2.2. Пример построения ER-модели 14
2.3. Переход к реляционной модели данных 16
2.4 Более сложные элементы ER-модели 18
Заключение 21
Глоссарий 22
Библиографический список 24
Приложение А Диаграмма «Сущность-Связь» 25
Приложение Б Пример построения ER – модели 26
Определение 3. Атрибут сущности - это именованная характеристика, являющаяся некоторым свойством сущности1.
Наименование атрибута должно быть выражено существительным в единственном числе (возможно, с характеризующими прилагательными).
Примерами атрибутов сущности "Сотрудник" могут быть такие атрибуты как "Табельный номер", "Фамилия", "Имя", "Отчество", "Должность", "Зарплата" и т.п.
Атрибуты изображаются в пределах прямоугольника, определяющего сущность (Рис. 2):
Рис. 2 Атрибуты сущности «Сотрудник»
Определение 4. Ключ сущности - это неизбыточный набор атрибутов, значения которых в совокупности являются уникальными для каждого экземпляра сущности. Неизбыточность заключается в том, что удаление любого атрибута из ключа нарушается его уникальность.
Сущность
может иметь несколько
Ключевые атрибуты изображаются на диаграмме подчеркиванием (Рис.3):
Рис. 3 Изображение ключевого атрибута
Определение 5. Связь - это некоторая ассоциация между двумя сущностями. Одна сущность может быть связана с другой сущностью или сама с собою.
Связи позволяют по одной сущности находить другие сущности, связанные с нею.
Например, связи между сущностями могут выражаться следующими фразами - "СОТРУДНИК может иметь несколько ДЕТЕЙ", "каждый СОТРУДНИК обязан числиться ровно в одном ОТДЕЛЕ".
Графически связь изображается линией, соединяющей две сущности (Рис.4 ):
Рис. 4 Связь между сущностями
Каждая связь имеет два конца и одно или два наименования. Наименование обычно выражается в неопределенной глагольной форме: "иметь", "принадлежать" и т.п. Каждое из наименований относится к своему концу связи. Иногда наименования не пишутся ввиду их очевидности.
Каждая связь может иметь один из следующих типов связи (Рис. 5):
Рис.
5 Типы связей
Связь типа один-к-одному означает, что один экземпляр первой сущности (левой) связан с одним экземпляром второй сущности (правой). Связь один-к-одному чаще всего свидетельствует о том, что на самом деле мы имеем всего одну сущность, неправильно разделенную на две.
Связь типа один-ко-многим означает, что один экземпляр первой сущности (левой) связан с несколькими экземплярами второй сущности (правой). Это наиболее часто используемый тип связи. Левая сущность (со стороны "один") называется родительской, правая (со стороны "много") - дочерней. Характерный пример такой связи приведен на Рис. 4.
Связь типа много-ко-многим означает, что каждый экземпляр первой сущности может быть связан с несколькими экземплярами второй сущности, и каждый экземпляр второй сущности может быть связан с несколькими экземплярами первой сущности. Тип связи много-ко-многим является временным типом связи, допустимым на ранних этапах разработки модели. В дальнейшем этот тип связи должен быть заменен двумя связями типа один-ко-многим путем создания промежуточной сущности.
Каждая связь может иметь одну из двух модальностей связи (Рис.6 ):
Рис. 6 Модальность связи
Модальность "может" означает, что экземпляр одной сущности может быть связан с одним или несколькими экземплярами другой сущности, а может быть и не связан ни с одним экземпляром.
Модальность "должен" означает, что экземпляр одной сущности обязан быть связан не менее чем с одним экземпляром другой сущности.
Связь может иметь разную модальность с разных концов (как на Рис. 4).
Описанный
графический синтаксис
<Каждый экземпляр СУЩНОСТИ 1> <МОДАЛЬНОСТЬ СВЯЗИ> <НАИМЕНОВАНИЕ СВЯЗИ> <ТИП СВЯЗИ> <экземпляр СУЩНОСТИ 2>.
Каждая связь может быть прочитана как слева направо, так и справа налево. Связь на Рис. 4 читается так:
Слева направо: "каждый сотрудник может иметь несколько детей".
Справа налево: "Каждый ребенок обязан принадлежать ровно одному сотруднику".
При построении ER-диаграммы главная проблема заключается в определении используемых сущностей; в большинстве случаев множество сущностей не уникально.
В качестве примера построим диаграмму, отображающую связь данных для подсистемы учета персонала предприятия. Выделим интересующие нас сущности и связи:
Прежде всего предприятие состоит из отделов, в которых работают сотрудники. Оклад каждого сотрудника зависит от занимаемой им должности (инженер, ведущий инженер, бухгалтер, уборщик и т.д.).
Далее предположим, что на предприятии допускается совместительство должностей, т.е. каждый сотрудник может иметь более чем одну должность (и работать более чем в одном отделе), причем может занимать неполную ставку. В то же время, одну и ту же должность могут занимать одновременно несколько сотрудников. В результате этих рассуждений получим наборы сущностей
ОТДЕЛ(ИМЯ_ОТДЕЛА),
СОТРУДНИК(ТАБЕЛЬНЫЙ_НОМЕР, ИМЯ),
ДОЛЖНОСТЬ(ИМЯ_ДОЛЖНОСТИ, ОКЛАД),
и набор
связей РАБОТАЕТ_В с атрибутом
ставка между ними. Атрибут ставка
может принимать значения из интервала
]0,1] (больше нуля, но меньше или равен
единице), он определяет какую часть
должностного оклада получает данный
сотрудник(рис.7).
Рис.7.ER-
модель
Каждый n-арный набор связей можно заменить несколькими бинарными наборами.
связь
не может быть одновременно обязательной,
"супертип-подтип" или ассоциативной.
Рассмотрим правила преобразования ER-модели в реляционную.
Каждой сущности ставится в соответствие отношение реляционной модели данных. При этом имена сущности и отношения могут быть различными, потому что на имена сущностей могут не накладываться дополнительные синтаксические ограничения, кроме уникальности имени в рамках модели. Имена отношений могут быть ограничены требованиями конкретной СУБД, чаще всего эти имена являются идентификаторами в некотором базовом языке, они ограничены по длине и не должны содержать пробелов и некоторых специальных символов. Например, сущность может быть названа "Книжный каталог", а соответствующее ей отношение желательно назвать, например, BOOKS (без пробелов и латинскими буквами).
Каждый атрибут сущности становится атрибутом соответствующего отношения. Переименование атрибутов должно происходить в соответствии с теми же правилами, что и переименование названия отношений. Для каждого атрибута задается конкретный допустимый в СУБД тип данных и обязательность или необязательность данного атрибута (то есть допустимость или недопустимость NULL значений для него).
EMPLOYEE |
T_NUM
F_NAME NAME L_NAME POST SALARY |
Рис. 8.
Преобразование сущности СОТРУДНИК к
отношению EMPLOYEE
Первичный ключ сущности становится PRIMARY KEY соответствующего отношения. Атрибуты, входящие в первичный ключ отношения, автоматически получают свойство обязательности (NOT NULL).
Column Code | Type |
T_NUM | Int Not Null |
F_NAME | Varchar(30) Not Null |
NAME | Varchar(30) Null |
L_NAME |
|
POST |
|
SALARY |
|
Таблица
1. Свойства атрибутов отношения EMPLOYEE
В каждое отношение, соответствующее подчиненной сущности, добавляется набор атрибутов основной сущности, являющейся первичным ключом основной сущности. В отношении, соответствующем подчиненной сущности, этот набор атрибутов становится внешним ключом (FOREING KEY).
Для моделирования необязательного типа связи на физическом уровне у атрибутов, соответствующих внешнему ключу, устанавливается свойство допустимости неопределенных значений (признак NULL). При обязательном типе связи атрибуты получают свойство отсутствия неопределенных значений (признак NOT NULL).
Для отражения
категоризации сущностей при
переходе к реляционной модели возможны
несколько вариантов
К числу более сложных элементов модели относятся следующие:
Подтипы и супертипы сущностей. Как в языках программирования с развитыми типовыми системами (например, в языках объектно-ориентированного программирования), вводится возможность наследования типа сущности, исходя из одного или нескольких супертипов. Интересные нюансы связаны с необходимостью графического изображения этого механизма.
Связи “many-to-many”. Иногда бывает необходимо связывать сущности таким образом, что с обоих концов связи могут присутствовать несколько экземпляров сущности (например, все члены кооператива сообща владеют имуществом кооператива). Для этого вводится разновидность связи “многие-со-многими”.
Уточняемые степени связи. Иногда бывает полезно определить возможное количество экземпляров сущности, участвующих в данной связи (например, служащему разрешается участвовать не более чем в трех проектах одновременно). Для выражения этого семантического ограничения разрешается указывать на конце связи ее максимальную или обязательную степень.
Каскадные удаления экземпляров сущностей. Некоторые связи бывают настолько сильными (конечно, в случае связи “один-ко-многим”), что при удалении опорного экземпляра сущности (соответствующего концу связи “один”) нужно удалить и все экземпляры сущности, соответствующие концу связи “многие”. Соответствующее требование “каскадного удаления” можно сформулировать при определении сущности.
Домены. Как и в случае реляционной модели данных бывает полезна возможность определения потенциально допустимого множества значений атрибута сущности (домена).
Эти и другие более сложные элементы модели данных “Сущность-Связи” делают ее существенно более мощной, но одновременно несколько усложняют ее использование. Конечно, при реальном использовании ER-диаграмм для проектирования баз данных необходимо ознакомиться со всеми возможностями.
Сущность может быть расщеплена на два или более взаимно исключающих подтипа, каждый из которых включает общие атрибуты и/или связи. Эти общие атрибуты и/или связи явно определяются один раз на более высоком уровне. В подтипах могут определяться собственные атрибуты и/или связи. В принципе подтипизация может продолжаться на более низких уровнях, но опыт показывает, что в большинстве случаев оказывается достаточно двух-трех уровней.