Третья нормальная форма

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

Пример: Рассмотрим таблицу «Товар». В ней есть поле «Цена», но цены, как известно, имеют свойство меняться. Если мы будем их менять прямо здесь, то будет пропадать вся информация о предыдущих ценах. Чтобы не терять эту информацию, надо добавить поле «Дата» (когда изменилась цена). Тогда таблица будет выглядеть так:

Даже не прибегая к 3НФ видно, что такая таблица будет содержать избыточную информацию. Но посмотрим на ее поля: поля «Наименование» и «Дата» зависят от id товара, а поле «Цена» зависит также и от «Даты», т.е. таблица не находится в 3НФ. Для устранения транзитивной зависимости необходимо провести «расщепление» объекта на два:

Все остальные таблицы базы данных находятся в 3НФ. Кстати, в таблице «Товар» можно было и не вводить поле «id товара», а сделать первичным ключом поле «Наименование», но как уже говорилось ранее суррогатные ключи все-таки предпочтительнее.

Подведем итог. Схема базы данных после нормализации несколько изменилась и выглядит теперь так:

Таким образом, мы преобразовали концептуальную модель в реляционную. Дальше необходимо эту модель реализовать в конкретной СУБД. Для этого нам понадобится сама СУБД и знание языка SQL.

 

Выводы

Проектирование БД процесс, как правило, трудоемкий и небыстрый. Ведь нужно очень хорошо изучить предметную область, чтобы учесть все нюансы, пожелания и требования пользователей. Затем всю собранную информацию изобразить в виде объектов, атрибутов и связей. Причем сделать это надо наиболее рационально. Да, база данных – это всего лишь хранилище данных, но от того насколько грамотно организовано это хранилище, будет зависеть работа приложения, использующего данные.

Предположим, что необходимо организовать на сайте регистрацию пользователей с тем, чтобы обеспечить им доступ к закрытым материалам сайта. Для реализации этого вопроса потребуется создать БД, которая будет хранить информацию о пользователях, их логинах и паролях. А также сделать html-формы регистрации и входа в закрытый раздел. Когда пользователь регистрируется, эти данные программными средствами (например, с помощью языка PHP) заносятся в созданную БД. Когда пользователь вводит логин и пароль в форме входа в закрытый раздел, к базе данных отправляется запрос (на языке SQL), есть ли пользователь с такими данными. И если ответ положительный, то пользователю посылается запрашиваемая страница (разумеется, тоже с помощью программы на PHP). Таким образом, чтобы реализовывать такие приложения необходимо уметь создавать БД, строить запросы на языке SQL к БД и знать какой-нибудь язык программирования, применимый для разработки динамических web-страниц (например, PHP).

 








Дата добавления: 2018-03-01; просмотров: 270;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.