- •Содержание
- •1. Задание на курсовое проектирование 4
- •Введение
- •1. Задание на курсовое проектирование
- •2. Концептуальное проектирование информационной системы
- •2.1. Диаграммы прецедентов
- •2.2. Диаграммы классов
- •2.3. Диаграммы последовательностей
- •2.4. Диаграммы состояний
- •2.5. Диаграммы действий
- •2.6. Диаграммы развертывания
- •3. Проектирование базы данных
- •3.1. Реляционная модель данных
- •3.1.1. Построение отношений
- •3.1.2. Связи между отношениями
- •3.1.3. Ограничения целостности
- •3.2. Нормализация отношений базы данных
- •3.2.1. Функциональные зависимости
- •3.2.2. Нормальные формы
- •4. Использование субд Access для создания базы данных
- •4.1. Основные характеристики и возможности субд Access
- •4.2. Конструирование базы данных
- •4.3. Основы создания форм
- •4.4. Обработка данных средствами субд Access
- •4.4.1. Конструирование запросов
- •4.4.2. Элементы языка sql и запросы в форме sql
- •5. Рекомендации по выполнению проекта
- •Библиографический список
- •Приложение Примерный перечень тем курсового проекта
- •Информационные ресурсы муниципальных систем
3.2.2. Нормальные формы
Одни и те же данные могут группироваться в таблицы различными способами. Группировка атрибутов в отношениях должна быть рациональной, т.е. минимизирующей дублирование данных и упрощающей процедуры их обработки и обновления. Устранение избыточности данных, аномалий модификации, являющиеся важнейшими задачами при проектировании баз данных, обеспечиваются нормализацией.
Нормализация – это формальный аппарат ограничений на формирование таблиц, который позволяет устранить дублирование, обеспечивает непротиворечивость хранимых данных и уменьшает трудозатраты на ведение (ввод, корректировку) базы данных.
Процесс нормализации заключается в разложении (декомпозиции) исходных отношений базы данных на более простые отношения. При этом на каждой ступени этого процесса схемы отношений приводятся в нормальные формы. Для каждой ступени нормализации имеются наборы ограничений, которым должны удовлетворять отношения базы данных. Тем самым удаляется из таблиц избыточная не ключевая информация.
Общее понятие нормализации подразделяется на несколько нормальных форм.
Рассмотрим пример ненормализованной (табл. 1) и нормализованной таблиц.
Таблица 1
Пример ненормализованной таблицы
КодПоставщика |
КодПродукта |
Продукт |
123 |
1 5 12 |
Сахар Соль Мука |
412 |
36 5 15 |
Кукуруза Соль Пшено |
357
|
54 16 |
Кефир Молоко |
Ненормализованная форма – таблица, содержащая одну или несколько повторяющихся групп данных.
Первая нормальная форма
Любая таблица, удовлетворяющая определению отношения, находится в первой нормальной форме (1НФ). Основные характеристики таблицы в 1НФ:
В каждой строке таблицы должны содержаться данные, соответствующие некоторому объекту или его части;
В каждом столбце должны находиться данные, соответствующие одному из атрибутов отношения;
В каждой ячейке таблицы должно находиться только единственное значение;
У каждого столбца должно быть уникальное имя;
Все строки (записи) в таблице должны быть различными;
Порядок расположения столбцов и строк в таблице не имеет значение.
Таблица в 1НФ приведена в табл. 2.
Таблица 2
Пример таблицы в 1НФ
КодПоставщика |
КодПродукта |
Продукт |
123 |
1 |
Сахар |
123 |
5 |
Соль |
123 |
12 |
Мука |
412 |
36 |
Кукуруза |
412 |
5 |
Соль |
412 |
15 |
Пшено |
357 |
54 |
Кефир |
Вторая нормальная форма
Каждая таблица в 1НФ должна иметь первичный ключ. Он может состоять из одного или более атрибутов. В последнем случае ключ называется составным. Чтобы таблица была во 2НФ, все ее неключевые столбцы должны однозначно определяться всем ключом, т.е. всеми его компонентами, а не некоторыми из них.
Рассмотрим пример отношения Секции (Фамилия, Секция, Плата), показанный в табл. 3.
Таблица 3
Отношение Секции (Фамилия, Секция, Плата)
-
Фамилия
Секция
Плата
Дмитриев
Футбол
300
Ткачева
Волейбол
250
Колесников
Шахматы
200
Ларина
Теннис
350
Кислов
Футбол
300
Ключом в данном отношении является {Фамилия, Секция}, но он содержит функциональную зависимость Секция Плата. Левая часть этой зависимости является лишь частью составного ключа. Отношение Секции имеет аномалии удаления и добавления. Так, если мы захотим удалить запись с фамилией «Колесников», то потеряем стоимость шахматной секции. Мы не можем добавить запись о новой секции, пока в нее кто-то не запишется.Данных аномалий можно было бы избежать, если бы атрибут Плата зависел от всего ключа (однозначно определялся всем ключом).
Отношение Секции (Фамилия, Секция, Плата) в 1НФ можно разбить на два отношения во 2НФ:
Секция_Спортсмен (Фамилия, Секция);
Секция_Плата (Секция, Плата).
Третья нормальная форма
В отношениях могут быть так называемые транзитивные зависимости, являющиеся источником аномалий модификации данных, против которых 2НФ бессильна. Транзитивная зависимость имеет место тогда, когда один атрибут однозначно определяет второй, второй однозначно определяет третий и т.д.
Рассмотрим в качестве примера отношение Проживание_Студентов (НомерСтудента, Общежитие, Плата), представляющее сведения о студентах, проживающих в общежитиях (табл. 4).
Таблица 4
Пример отношения с транзитивной зависимостью
НомерСтудента |
Общежитие |
Плата |
129 |
№ 2 |
700 |
536 |
№6 |
1000 |
435 |
№1 |
650 |
269 |
№2 |
700 |
419 |
№1 |
650 |
Ключом в этом отношении является НомерСтудента. Плата однозначно определяется атрибутом Общежитие, т.е. имеется функциональная зависимость Общежитие Плата. Поскольку один студент проживает только в одном общежитии, и каждое общежитие взимает со всех проживающих в нем студентов одинаковую плату, в отношении есть и функциональная зависимость НомерСтудента Общежитие. Таким образом, возникает транзитивная зависимость НомерСтудента Плата.
Ключом отношения Проживание_Студентов является НомерСтудента, который представляет собой одиночный атрибут, и, следовательно, отношение находится во 2НФ. Несмотря на это, в рассматриваемом отношении существует аномалия удаления. Удалив вторую запись, мы потеряем не только тот факт, что студент №536 проживает в общежитии №6, но и тот факт, сколько стоит проживание в этом общежитии.
Чтобы устранить указанную аномалию, следует декомпозировать исходное отношение Проживание_Студентов (НомерСтудента, Общежитие, Плата) на два (рис. 16):
Проживание (НомерСтудента, Общежитие);
Стоимость (Общежитие, Плата).
НомерСтудента |
Общежитие |
|
Общежитие |
Плата |
129 |
№ 2 |
|
№ 2 |
700 |
536 |
№6 |
|
№6 |
1000 |
435 |
№1 |
|
№1 |
650 |
269 |
№2 |
|
№2 |
700 |
419 |
№1 |
|
№1 |
650 |
Рис. 16. Отношения, не имеющие транзитивных зависимостей
Отношение находится в 3НФ, если оно находится во 2НФ и в нем отсутствует транзитивная зависимость непервичного атрибута от ключа.
