Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив3 / ZADANIE_K_KURSAChU_IT / ЗАДАНИЕ / Нормализация.doc
Скачиваний:
9
Добавлен:
07.08.2013
Размер:
199.68 Кб
Скачать

5. Нормализация данных

Описанные до этого момента методы применимы абсолютно ко всем типам баз данных (иерархическим, реляционным и даже новому классу систем объектных баз данных). Поскольку Access — программа управления реляционными базами данных, то далее основное внимание будет уделено именно реляционным базам данных. Стандартная структура баз данных Access полностью отвечает требованиям реляционной модели. Кроме того, в базу данных Access можно включать таблицы из распределенных СУБД, например, таблицы баз данных архитектуры клиент/сервер. Таким образом, вся представленная дальше информация является обобщенной и применима к любой Access-совместимой системе управления база данных, а также любой системе, для которой имеется 32-разрядный драйвер ODBC. (Эти 32-разрядные драйверы используются Access при работе с файлами внешних таблиц.)

Теоретические основы построения реляционных баз данных базируются на области математики, называемой теорией множеств, а также затрагивают комбинаторный анализ и некоторые статистические методики. Все используемые в теории реляционных баз данных правила относятся к так называемой реляционной алгебре. Это вовсе не означает, что здесь будет раскрыта терминология реляционной алгебры или высшей математики. Такой информации здесь нет, хотя многие термины реляционной алгебры, которые используются для согласования информации о структуре баз данных, все-таки приведены.

Правила нормализации

Нормализация — это формализованная процедура, в процессе выполнения которой атрибуты данных (поля) группируются в таблицы, а таблицы, в свою очередь, — в базы данных. Цели нормализации следующие:

  • исключить дублирование информации в таблицах;

  • обеспечить возможность изменений в структуре таблиц;

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

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

Первая нормальная форма

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

Мастер анализа таблиц в Access является хорошим инструментом для поиска повторяющейся информации в таблицах, созданных из двухмерных файлов. Однако для успешного выполнения этой опера­ции анализируемая таблица уже должна находиться в первой нормальной форме.

Примером ненормализованных данных могут выступать данные, представленные на рисунке с фрагментом расписания. Таким способом обычно составляется расписание движения транспорта. Если в таблице нет крайней правой границы, то это значит, что дальше расположены дополнительные столбцы (поля). Аналогичным образом, отсутствие нижних границ означает, что ниже расположены строки (записи).

Судно

Название

Рейс

Погрузка

Приб.из

Прибытие

Порт

Отправление

Прибытие

Порт

Отправление

528

Балтика

9203

5/31/92

СПб

6/6/92

Од

6/8/92

7/15/92

Коп

7/18/92

603

Ладога

9203

5/05/92

ХЛС

6/19/92

Коп

6/21/92

6/25/92

Сток

6/28/92

531

Онега

9204

6/20/92

КАЛ

7/10/92

Бре

7/11/92

8/28/92

Лон

9/2/92

528

Балтика

9204

8/20/92

СПб

8/27/92

Од

8/29/92

9/30/92

Коп

10/2/92

Рисунок. Фрагмент расписания

Поскольку суда останавливаются во многих портах, столбцы Прибытие, Порт и Отправление повторяются для каждой остановки. Такая структура не подходит для реляционной базы данных, так как запись приведенной информации не соответствует требованиям первой нормальной формы, поскольку содержит повторяющуюся группу столбцов. Эту таблицу необходимо разделить на две: Порты и Рейсы судов, не содержащие повторяющихся групп, как показано на рисунке ниже.

Судно

Название

Рейс

Погрузка

Прибытие из

528

Балтика

9203

5/31/92

СПб

603

Ладога

9203

6/5/92

Хель

531

Онега

9204

6/20/92

Кал

528

Балтика

9204

8/20/92

СПб

Прибытие

Порт

Отправление

6/6/92

Од

6/8/92

6/19/92

Коп

6/21/92

7/10/92

Бре

7/11/92

8/27/92

Од

8/29/92

7/15/92

Коп

7/18/92

6/25/92

Сток

6/28/92

8/28/92

Лон

9/2/92

9/30/92

OSA

10/2/92

Теперь нужно установить связь между таблицами Порты и Рейсы судов. В столбце Рейс указывается текущий год, номер рейса за этот год, а также направление рейса (например, 9204 — это четвертый рейс за 1992 год). Таким образом, для связи между таблицами следует применять поля Судно и Рейс. Использование какого-либо одного из этих столбцов будет недостаточно, поскольку одно судно может делать несколько рейсов в течение года, а в одном направлении могут отправляться сразу несколько судов. Поскольку для удовлетворения требований первой нормальной формы придется создать новую таблицу Порты, отсортировать ее столбцы в порядке значимости. Первыми, как правило, размещаются столбцы, используемые для установки связи. При этом они располагаются в той последовательности, в какой они входят в составной первичный ключ (смотри рисунок ниже).

Судно

Рейс

Порт

Прибытие

Отправление

528

9203W

Од

6/6/92

6/8/92

603

9203W

Коп

6/19/92

6/21/92

531

9204W

Бре

7/10/92

7/11/92

528

9204W

Од

8/27/92

8/29/92

528

9203W

Коп

7/15/92

7/18/92

603

9203W

Сток

6/25/92

6/28/92

531

9204W

Лон

8/28/92

9/2/92

528

9204W

Коп

9/30/92

10/2/92

Рисунок. Добавление ключевых полей в таблицу Порты

Теперь нужно определить ключевые поля таблицы Порты, что даст возможность точно идентифицировать ее записи. Обязательно следует создать первичный ключ, поскольку от этой таблицы могут зависеть многие другие. Следует добавить столбцы Судно и Рейс, так как они обеспечивают связь с данными таблицы Рейсы судов, также добавить поле Порт для создания совершенного уникального ключа (столбцы Судно и Рейс могут содержать повторяющиеся значения). Комбинация Судно + Рейс + Порт представляет собой составной первичный ключ, значение которого однозначно идентифицирует запись. Значения этого ключа не повторяются, поскольку учтена возможность делать остановку в одном порту при движении туда и обратно. Так, если судно возвращается с востока, рейс помечается суффиксом "Е", а с запада – "W".

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

Соседние файлы в папке ЗАДАНИЕ