Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ_ЛР_БД_бак_ГОС_Соболева.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
217.86 Кб
Скачать

4.2 Проектирование базы данных в третьей нормальной форме

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

  • данные в таблицах соответствуют своим доменам;

  • неключевые поля зависят от полного составного ключа (так объединение в одной таблице полей № студента, Код дисциплины, Название дисциплины, Оценка ошибочно, так как первичным ключом таблицы является ключ из № студента и Кода дисциплины, но Название дисциплины полностью определяется Кодом дисциплины и №студента для этого не нужен, а Оценка определяется только составным ключом);

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

Рассмотрим процедуру нормализации на примере задания №1.

Дан список атрибутов: Код факультета, Наименование факультета, Код специальности, Наименование специальности, № группы, Код студента, ФИО студента, Наименование дисциплины, Оценка.

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

Результат (в виде отношений реляционной модели):

  • ФАКУЛЬТЕТ (Код факультета, Наименование факультета), т.к. каждому коду факультета соответствует одно наименование;

  • СПЕЦИАЛЬНОСТЬ (Код специальности, Наименование специальности, Код факультета), т.к. каждому коду специальности соответствует одно наименование специальности и каждая специальность строго на одном факультете;

  • ГРУППА (№ группы, Код специальности), т.к. предполагается, что все студенты одной группы учатся на одной и той же специальности;

  • СТУДЕНТ (Код студента, ФИО студента, № группы) при условии, что данный студент всегда учится в одной группе, и в БД не предполагается хранить историю перехода студента из группы в группу;

  • УСПЕВАЕМОСТЬ (Код студента, Наименование дисциплины, Оценка) при условии, что в БД фиксируется строго одна оценка студента по каждой дисциплине.

Если в БД необходимо хранить все оценки по дисциплине, получаемые студентом в процессе обучения, то к исходному списку атрибутов необходимо добавить атрибут Дата.

Если наименование дисциплины не гарантирует уникальности (например, физика на одной специальности и физика на другой специальности преподаются по разным учебным планам), то необходимо создать справочник дисциплин, добавив атрибут Код дисциплины. В результате структура БД измениться следующим образом:

  • добавится отношение ДИСЦИПЛИНА (Код дисциплины, Наименование дисциплины);

  • изменится отношение УСПЕВАЕМОСТЬ (Код студента, Код дисциплины, Дата, Оценка).

4.3 Создание таблиц бд

При создании таблиц необходимо обеспечить поддержку целостности БД.

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

  • тип данных и ограничения, накладываемые на данные, например, в виде диапазона и/или маски ввода (см. справку);

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

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

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

Целостность по сущностям обеспечивается заданием первичного ключа или заданием уникального индекса (повторение значений не допускается). Ключ или индекс может быть задан на одном или нескольких атрибутах.

СУБД предоставляет альтернативные сценарии выполнения одной и той же работы.

Возможный алгоритм создания таблицы базы данных:

  1. Выбрать объект базы данных Таблицы.

  2. Одним из возможных способов (см. справку) включить режим конструктора.

  3. Последовательно описать поля таблицы:

    • указать имя поля;

    • при необходимости задать подпись;

    • выбрать тип поля;

    • задать свойства поля с учётом необходимости обеспечения целостности базы данных;

    • задать первичный ключ;

    • задать индексы.

  1. Сохранить таблицу.

  2. Перейти в режим таблицы и заполнить таблицу данными.