- •Отчет о курсовой работе по курсу «Базы данных»
- •Оглавление
- •1. Инфологическое проектирование
- •1.1. Анализ предметной области
- •1.2. Анализ информационных задач и круга пользователей системы
- •1) Функциональные возможности:
- •2) Готовые запросы:
- •2. Определение требований к операционной обстановке
- •3. Выбор субд и других программных средств
- •4. Логическое проектирование реляционной бд
- •4.1. Преобразование er–диаграммы в схему базы данных
- •4.2. Составление реляционных отношений
- •4.3. Нормализация полученных отношений(до 4нф)
- •4.4. Определение дополнительных ограничений целостности
- •4.5. Описание групп пользователей и прав доступа
- •5 Реализация проекта базы данных
- •5.1 Создание таблиц
- •5.2. Создание представлений (готовых запросов)
- •5.3. Назначение прав доступа
- •5.4. Создание индексов
- •5.5. Разработка стратегии резервного копирования
4.3. Нормализация полученных отношений(до 4нф)
1НФ.
Для приведения таблиц к 1НФ требуется составить прямоугольные таблицы (одно значение атрибута – одна ячейка таблицы) и разбить сложные атрибуты на простые.
Разделим атрибут Имя, фамилия на два атрибута: Имя и Фамилия.
2НФ.
В нашем случае составные первичные ключи имеют отношения ПЕСНИ-ИСПОЛНИТЕЛИ, ПЕСНИ-НОСИТЕЛИ. Неключевые атрибуты этих отношений отсутствуют.
3НФ.
В отношении ПЕСНИ атрибут Качество звука зависит от атрибута Битрейт, а не от первичного ключа, поэтому его следует вынести в отдельное отношение КАЧЕСТВО. Первичным ключом нового отношения станет атрибут Битрейт.
В отношении НОСИТЕЛИ атрибут Емкость зависит от атрибута Объем памяти. Поступим с этой транзитивной зависимостью так же, как в предыдущем случае: создадим отношение РАЗМЕР, перенесём в него атрибуты Объем памяти и Емкость, а первичным ключом сделаем объем памяти.
Теперь транзитивных зависимостей нет. Но атрибут Жанр модно вынести в отдельную таблицу, чтобы песни распределить по определенным категориям жанра и чтобы была возможность найти все песни определенного жанра.
4НФ.
Отношения данного примера не нарушают 4НФ, т.к. не содержат нетривиальных многозначных зависимостей.
Отношения, полученные после нормализации, приведены в таблицах 6-13.
Таблица 6. Схема отношений ПЕСНИ (SONGS)
Содержание поля |
Имя поля |
Тип, длина |
Примечания |
Код песни |
S_ID |
N(4) |
суррогатный первичный ключ |
Название |
S_NAME |
V(30) |
обязательное поле |
Год написания |
S_YEAR |
N(4) |
необязательное поле |
Жанр |
S_GENRE |
V(20) |
внешний ключ (к GENRES) |
Битрейт, Кбит/сек |
S_BIT |
N(3) |
внешний ключ (к QUALITY) |
Автор |
S_WRITER |
V(30) |
внешний ключ (к MUSICIANS) |
Таблица 7. Схема отношения МУЗЫКАНТЫ (MUSICIANS)
Содержание поля |
Имя поля |
Тип, длина |
Примечания |
Сценическое имя (название группы) |
M_ID |
V(30) |
первичный ключ |
Имя (солиста группы) |
M_NAME |
V(30) |
необязательное поле |
Фамилия (солиста группы) |
M_SURNAME |
V(30) |
необязательное поле |
Таблица 8. Схема отношения НОСИТЕЛИ (CARRIERS)
Содержание поля |
Имя поля |
Тип, длина |
Примечания |
Регистрационный код |
C_ID |
С(3) |
первичный ключ |
Вид носителя |
C_TYPE |
V(10) |
необязательное поле |
Объем памяти, Гб |
C_MEM |
N(5,2) |
внешний ключ (к SIZE), ≥0, по умолчанию – 0 |
Таблица 9. Схема отношения ПЕСНИ-ИСПОЛНИТЕЛИ (A_SINGERS)
Содержание поля |
Имя поля |
Тип, длина |
Примечания | |
Код песни |
A_SONG_ID |
N(4) |
внешний ключ (к SONGS) |
состав-ной ПК |
Сценическое имя |
A_MUS_ID |
V(30) |
внешний ключ (к MUSICIANS) |
Таблица 10. Схема отношения ПЕСНИ-НОСИТЕЛИ (B_SONG_CAR)
Содержание поля |
Имя поля |
Тип, длина |
Примечания | |
Код песни |
B_SONG_ID |
N(4) |
внешний ключ (к SONGS) |
состав-ной ПК |
Код носителя |
B_CAR_ID |
N(3) |
внешний ключ (к CARRIERS), по умолчанию – 0 |
Таблица 11. Схема отношения КАЧЕСТВО (QUALITY)
Содержание поля |
Имя поля |
Тип, длина |
Примечания |
Битрейт, Кбит/сек |
Q_BIT |
N(3) |
первичный ключ |
Качество звука |
Q_QUALITY |
V(10) |
обязательное поле |
Таблица 12. Схема отношения РАЗМЕР (SIZE)
Содержание поля |
Имя поля |
Тип, длина |
Примечания |
Объем памяти, Гб |
S_MEM |
N(5,2) |
первичный ключ |
Емкость, час |
S_TIME |
N(7,2) |
необязательное поле, ≥0 |
Таблица 13. Схема отношения ЖАНРЫ (GENRES)
Содержание поля |
Имя поля |
Тип, длина |
Примечания |
Название жанра |
G_GENRE |
V(20) |
первичный ключ |
Схема базы данных после нормализации выглядит следующим образом: