double arrow

Идентификация сущностей и связей. ER-диаграмма логического уровня

Erwin имеет два уровня представления модели – логический и физический. Логический уровень – это абстрактный взгляд на данные. Объекты модели, представляемые на нем, называются сущностями и атрибутами. Логическая модель данных является универсальной, т.к. не зависит от конкретной СУБД.

Для отображения информационной модели рассматриваемого процесса на логической модели используются следующие сущности:

- «Отделы» ­– для фиксации информации об отделах библиотеки. Содержит номер отдела, его название, табельный номер и фамилию начальника отдела;

- «СотрудникиБиблиотеки» – для хранения информации о сотрудниках, которые работают в библиотеке;

- «Студенты» – запись информации о студентах, которые пользуются библиотекой;

- «Экземпляр» – книги, зарегистрированные в отделах библиотеки;

- «ЗаменаЭкземпляров» хранит информацию о протоколах замены книг;

- «Преподаватели» – информация о преподавателях-пользователях библиотеки;

- «Периодические издания» – информация о газетах, журналах, которые имеются в библиотеке;

- «Списанные экземпляры» хранит информацию о протоколах списания книг;

- «Книга»;

- «Заказы» – заказы преподавателей на новую литературу.

Для однозначного определения записей в каждом из отношений выделен первичный ключ (простой или составной).

Внешние ключи для отношений БД:

в отношениях «Экземпляр» и «Заказы» - это ключ «ISBN»;

в отношениях «ЗаменаЭкземпляров» и «Списанные экземпляры» - это ключ «Шифр»

В отношениях «Экземпляр» и «Сотрудники» - это ключ «Номер отдела»

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

· неиденцифицирующие связи;

· иденцифицирующие связи;

· связи многие-ко-многим

Связь между сущностями «Отделы» и «Сотрудники библиотеки» неидентифицирующая, не разрешающая присутствие нулей, т.к. каждый сотрудник закреплен за определенным отделом. Тип связи 1 ко многим, т.к. в одном отделе могут работать много сотрудников. и 1 ко многимттствие нулейтрудники библиотеки

Связь между сущностями «Отделы» и «Экземпляр» неидентифицирующая, не разрешающая присутствие нулей, т.к. каждый экземпляр закреплен за определенным отделом. Тип связи 1 ко многим, т.к. в одном отделе могут храниться много экземпляров.

Связь между сущностями «Отделы» и «Периодические издания» неидентифицирующая, не разрешающая присутствие нулей, т.к. каждое издание закреплено за определенным отделом. Тип связи 1 ко многим, т.к. в одном отделе могут храниться много изданий.

Связь между сущностями «Книга» и «Экземпляр» неидентифицирующая, не разрешающая присутствие нулей, т.к. каждый экземпляр это зарегистрированная книга. Тип связи 1 ко многим, т.к. в одна книга может быть зарегистрирована как несколько экземпляров.

Связь между сущностями «Замена экземпляров» и «Экземпляр» идентифицирующая, т.к. для замены экземпляров необходима информация о нем. Тип связи 1 к одному, т.к. замена осуществляется для одного экземпляра.

Связь между сущностями «Списание экземпляров» и «Экземпляр» идентифицирующая, т.к. для списания экземпляров необходима информация о нем. Тип связи 1 к одному, т.к. списание осуществляется для одного экземпляра.

Связь между сущностями «Преподаватели» и «Заказы» идентифицирующая, т.к. для заказа книг необходима информация о заказчике. Тип связи 1 ко многим, т.к. один преподаватель может заказать много книг.

Связь между сущностями «Книги» и «Заказы» идентифицирующая, т.к. для заказа книг необходима информация о заказе. Тип связи 1 ко многим, т.к. одна книга может быть во многих заказах.

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

Связь между сущностями «Студенты» и «Экземпляр» многие-ко-многим, т.к. один студент может пользоваться многими экземплярами, а один экземпляр может быть поочередно у многих студентов.

Связь между сущностями «Сотрудники библиотеки» и «Экземпляр» многие-ко-многим, т.к. один сотрудник библиотеки может пользоваться многими экземплярами, а один экземпляр может быть поочередно у многих сотрудников библиотеки.

ER-диаграмма логического уровня представлена в приложении2 (рисунок 11).

Рисунок 11 – ER-диаграмма логического уровня

2.2.2. ER-диаграмма физического уровня. Ограничения доменов. Ограничения ссылочной целостности. Переопределение триггеров. Индексирование отношений

Физическая модель данных зависит от конкретной СУБД. В ней содержится информация обо всех объектах БД. Одной и той же логической модели может соответствовать несколько разных физических. В физической модели важно описать всю информацию о конкретных физических объектах – таблицах, колонках, индексах, процедурах.

Проверим, удовлетворяют ли все имеющиеся отношения соответствующим наборам ограничений.

Первая нормальная форма требует, чтобы значения всех атрибутов отношения были атомарными. При рассмотрении информационной модели было отмечено, что значения атрибутов всех отношений логически разделить на элементы нельзя и, следовательно, они удовлетворяют условию первой нормальной формы. Пример, рассмотрим таблицу «Преподаватели». Ключевой аттрубут в ней – «читательский_номер» не может быть разделен на элементы. Не ключевые аттрубуты – «Имя», «фамилия», «отчество», «должность» также являются атомарными.

Вторая нормальная форма требует, чтобы отношение находилось в первой нормальной форме, и каждый не ключевой атрибут функционально полно зависел от первичного ключа. И это требование также выполняется в рассматриваемой модели. Пример, рассмотрим таблицу «Преподаватели». Ключевой аттрубут в ней – «читательский_номер». Не ключевые аттрубуты – «Имя», «фамилия», «отчество», «должность» зависят функционально полно только от первичного ключа.

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

Реализация ссылочной целостности:

· При изменении информации о каком-либо отделе из таблицы «Отделы» в таблицах «Сотрудники библиотеки», «Периодические издания» и «Экземпляры» информация будет автоматически меняться (каскадное обновление), удалять записи из таблицы «Отделы» запрешено;

· При изменении информации о каком-либо сотруднике из таблицы «Сотрудники» в таблице «Пользование библиотекой» информация будет автоматически изменяться (каскадное обновление);

· В таблице «Книга» разрешено изменение записей (каскадное обновление), удаление данных из этой таблицы запрещается специальным триггером (запрет удаления), т.к. эта таблица содержит информацию обо всех книгах, которые были когда-либо изданы;

· В таблице «Экземпляр» разрешено изменение записей (каскадное обновление), удаление данных из этой таблицы запрещается (запрет удаления), т.к информация обо всех экземплярах книг должна храниться постоянно, независимо от того, имеется ли экземпляр в наличии или он был списан;

· В таблице «Студенты» при изменении информации о студенте происходит каскадное обновление данных. Разрешается удаление информации только в случае, когда на данную информацию нет ссылок в других связанных таблицах (это означает, что за студентом не числится никаких книг). Проверку осуществляет специальный триггер;

· В таблице «Преподаватели» при изменении данных происходит каскадное обновление. Разрешается удаление информации только в случае, когда на данную информацию нет ссылок в других связанных таблицах(это означает, что за студентом не числится никаких книг). Проверку осуществляет специальный триггер;

· В таблицах «Списанные экземпляры» и «Замена экземпляров» не разрешается удаление и изменение записей, т.к. информация из этих таблиц используется для отчета об изменении книжного фонда;

· В таблице «Заказы» разрешается обновление записей. Удаление записей не допускается, т.к. данные этой таблицы используются для построения итоговых отчетов о работе библиотеки.

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

Типы данных

1. Рассмотрим таблицу «Книга». Ключевое поле этой таблицы ISBN содержит номер книг. Номер представляет собой набор цифр и разделяющих их дефисов (например, 5-414-524316-41). Следовательно, тип данных поля ISBN должен быть строковым с длиной не менее 15 символов. Выбираем тип varchar(20).

2. В таблице «Пользование библиотекой» имеется поле «Дата выдачи». Это поле содержит число, месяц, год даты, когда была выдана книга. Тип данных для неё ­ – datetime.

3. Рассмотрим таблицу «Сотрудники библиотеки». Ключевое поле этой таблицы (табельный номер) представляет собой номер, который присваивают каждому сотруднику при принятии на работу. Он представляет собой набор цифр (например, 2431). Следовательно, тип данных поля табельный номер должен быть числовым целым. Выбираем тип int.

Для приложения были разработаны следующие триггеры:

dobavlenie срабатывает при вставке нового элемента в таблицу «Отделы». Он проверяет номер отдела, который должен быть больше 9 и меньше 15;

udalenie проверяет права на удаление пользователем записи из таблицы «Пользование_библиотекой2». Если пользователь не является владельцем базы данных, то прав на удаление он не имеет. Запись удалена не будет;

proverka запрещает добавлять записи в таблицу «Пользование_библиотекой2» в воскресение;

infoInsertSotrud записывает в отдельную таблицу информацию о записях, добавленных в таблицу «Сотрудники библиотеки», чтобы было легче проследить за процессом изменения данных в таблице;

infoUpdateStudent записывает в отдельную таблицу информацию о записях, добавленных в таблицу «Студенты», чтобы было легче проследить за процессом изменения данных в таблице;

InsertedItemPrepdavateli записывает в отдельную таблицу информацию о записях, добавленных в таблицу «Преподаватели», чтобы было легче проследить за процессом изменения данных в таблице;

proverka_otchislenia_Studentov запрещает изменять запись о студенте, у которого год отчисления больше значения текущего года;

DeletedItem записывает в отдельную таблицу информацию о записях, удаленных из таблицы «Преподаватели»;

DeletedSotrudLibrary записывает в отдельную таблицу информацию о записях, удаленных из таблицы «Сотрудники библиотеки»

ER-диаграмма физического уровня показана в приложении 3 (рисунок 12).

Рисунок 12 – ER-диаграмма физического уровня



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: