Третья нормальная форма
Таблица находится в третьей нормальной форме, если она находится во второй нормальной форме, и каждое неключевое поле нетранзитивно зависит от первичного ключа. Транзитивная зависимость наблюдается в том случае, если одно из двух неключевых полей зависит от первичного ключа, а другое зависит от первого неключевого поля.
Пример: Рассмотрим таблицу «Товар». В ней есть поле «Цена», но цены, как известно, имеют свойство меняться. Если мы будем их менять прямо здесь, то будет пропадать вся информация о предыдущих ценах. Чтобы не терять эту информацию, надо добавить поле «Дата» (когда изменилась цена). Тогда таблица будет выглядеть так:
Даже не прибегая к 3НФ видно, что такая таблица будет содержать избыточную информацию. Но посмотрим на ее поля: поля «Наименование» и «Дата» зависят от id товара, а поле «Цена» зависит также и от «Даты», т.е. таблица не находится в 3НФ. Для устранения транзитивной зависимости необходимо провести «расщепление» объекта на два:
Все остальные таблицы базы данных находятся в 3НФ. Кстати, в таблице «Товар» можно было и не вводить поле «id товара», а сделать первичным ключом поле «Наименование», но как уже говорилось ранее суррогатные ключи все-таки предпочтительнее.
Подведем итог. Схема базы данных после нормализации несколько изменилась и выглядит теперь так:
Таким образом, мы преобразовали концептуальную модель в реляционную. Дальше необходимо эту модель реализовать в конкретной СУБД. Для этого нам понадобится сама СУБД и знание языка SQL.
Выводы
Проектирование БД процесс, как правило, трудоемкий и небыстрый. Ведь нужно очень хорошо изучить предметную область, чтобы учесть все нюансы, пожелания и требования пользователей. Затем всю собранную информацию изобразить в виде объектов, атрибутов и связей. Причем сделать это надо наиболее рационально. Да, база данных – это всего лишь хранилище данных, но от того насколько грамотно организовано это хранилище, будет зависеть работа приложения, использующего данные.
Предположим, что необходимо организовать на сайте регистрацию пользователей с тем, чтобы обеспечить им доступ к закрытым материалам сайта. Для реализации этого вопроса потребуется создать БД, которая будет хранить информацию о пользователях, их логинах и паролях. А также сделать html-формы регистрации и входа в закрытый раздел. Когда пользователь регистрируется, эти данные программными средствами (например, с помощью языка PHP) заносятся в созданную БД. Когда пользователь вводит логин и пароль в форме входа в закрытый раздел, к базе данных отправляется запрос (на языке SQL), есть ли пользователь с такими данными. И если ответ положительный, то пользователю посылается запрашиваемая страница (разумеется, тоже с помощью программы на PHP). Таким образом, чтобы реализовывать такие приложения необходимо уметь создавать БД, строить запросы на языке SQL к БД и знать какой-нибудь язык программирования, применимый для разработки динамических web-страниц (например, PHP).
Дата добавления: 2018-03-01; просмотров: 273;