Рассмотрим моделирование информационного представления сдачи студентом экзаменов.
1. Выделим сущности и дадим им имена: СТУДЕНТ, ЭКЗАМЕН.
2. Определим атрибуты каждой сущности:
o СТУДЕНТ - № зачетной книжки, фамилия, имя, отчество, специальность, группа, телефон, домашний адрес;
o ЭКЗАМЕН – номер экзамена, название предмета, дата, преподаватель;
3. Определим уникальный идентификатор каждой сущности – первичный ключ:
o СТУДЕНТ - № зачетной книжки,
o ЭКЗАМЕН – номер экзамена,
4. Определим связь и дадим ей имя: СТУДЕНТ сдает ЭКЗАМЕН. Эта связь – «многие-ко-многим», ее надо заменить новой таблицей, дадим ей имя ЭКЗАМЕН_СТУДЕНТА. Основной атрибут этой сущности – оценка. Чтобы отличать оценки, полученные разными студентами на разных экзаменах, добавим атрибут для первичного ключа – номер оценки.
5. Определим связи новой сущности:
o ЭКЗАМЕН_СТУДЕНТА позволяет оценить знания СТУДЕНТа (студент сдает конкретный экзамен один раз, а таких экзаменов – много, «один-ко-многим»), для связывания таблиц в дочернюю таблицу ЭКЗАМЕН_СТУДЕНТА копируем первичный ключ таблицы СТУДЕНТ – поле «№ зачетной книжки»;
o ЭКЗАМЕН_СТУДЕНТА сдается на ЭКЗАМЕНе (на конкретном экзамене многие студенты сдают экзамен и каждый получает оценку, связь «один-ко-многим»); для связывания таблиц в дочернюю таблицу ЭКЗАМЕН_СТУДЕНТА копируем первичный ключ таблицы ЭКЗАМЕН – поле «номер экзамена».
6. Построим ER-диаграмму, таблицы ЭКЗАМЕН и СТУДЕНТ можно определить как справочники, из них берется информация для таблицы ЭКЗАМЕН_СТУДЕНТА (ЭКЗАМЕН и СТУДЕНТ – родительские, расположим их выше, ЭКЗАМЕН_СТУДЕНТА – дочерняя).
СТУДЕНТ | ЭКЗАМЕН | ||||||||
РК | № зачетной книжки фамилия имя отчество дата поступления специальность, группа домашний адрес | PK | номер экзамена название предмета дата преподаватель | ||||||
ЭКЗАМЕН_СТУДЕНТА | |||||||||
PK FK FK | номер оценки № зачетной книжки номер экзамена оценка |
7. Проверим, можно ли получить ответы на запросы:
o определить оценку студента по фамилии «Иванов» по предмету «Математика»,
o узнать, когда Иванов сдавал информатику,
o какой преподаватель принимал химию у Иванова,
o сколько «пятерок» поставил преподаватель Петров.
ПРИМЕЧАНИЕ. В данной задаче в таблице ЭКЗАМЕН_СТУДЕНТА можно было не вводить поле «номер оценки» (п. 4), а использовать составной первичный ключ – поля «№ зачетной книжки» и «номер экзамена», т.к. они однозначно определяют оценку каждого студента по конкретному экзамену.