Нормализация базы данных и описание отношений между таблицами
Для приведения таблиц ко второй нормальной форме (2НФ), приводимые таблицы должны быть уже в 1НФ. Нормализация должна проходить по порядку. Во второй нормальной форме, должно быть соблюдено условие — любой столбец, который не является ключом (в том числе внешним), должен зависеть от первичного ключа. Обычно такие столбцы, имеющие значения, который не зависят от ключа, легко определить. Если… Читать ещё >
Нормализация базы данных и описание отношений между таблицами (реферат, курсовая, диплом, контрольная)
Для приведения таблиц ко второй нормальной форме (2НФ), приводимые таблицы должны быть уже в 1НФ. Нормализация должна проходить по порядку. Во второй нормальной форме, должно быть соблюдено условие — любой столбец, который не является ключом (в том числе внешним), должен зависеть от первичного ключа. Обычно такие столбцы, имеющие значения, который не зависят от ключа, легко определить. Если данные, содержащиеся в столбце, не имеют отношения к ключу, который описывает строку, то их следует отделять в свою отдельную таблицу.
В таблице находятся данные не имеющие связи с первичным ключом, который в данном случае является «название препаратов». Такими данными является информация о сотрудниках. Поэтому стоит разделить их на отдельные таблицы: «Препараты» и «Сотрудники».
Таблица «Препараты».
Наз. препаратов. | Кол-во. | Группа препаратов. | Описание препаратов. | Закуп. цена. | Цена продаж. | Поставщик. | Контакты. | Заказы (кол-во). |
Аевит. | A11JA. | Витамины и витаминоподобные средства в комбинациях. | РОСТА. | |||||
Бекламетазон. | R03BA01. | Глюкокортикостероиды. | РОСТА. | |||||
Мукалтин. | R05CA. | Отхаркивающие препараты. | 0.50. | ПрофитМед. | ||||
Бронхикум. | R05CA10. | Отхаркивающие препараты в комбинации. | АБРИС+. | |||||
Анаприлин. | C07AA. | Бета-адреноблокаторы. | ПУЛЬС. | |||||
Парацетамол. | N02BE01. | Анальгетизирующее, жаропонижающее. | 0,50. | АБРИС+. |
Таблица «Сотрудники».
Фамилия. | Имя. | Должн. | Дата.р | Дата.н. | Зарпл. |
Федоров. | Алексей. | провизор | 02.10.72. | 14.04.96. | |
Тоиров. | Умед. | Заведующ. провиз. | 19.07.80. | 30.03.2001. | |
Носиров. | Наим. | фармацевт. | 12.05.1992. | 29.11.2006. | |
Хакимов. | Немонджон. | фармацевт. | 28.12.1993. | 31.05.2011. | |
Робиева. | Матлюба. | бухгалтер | 05.04.1990. | 20.04.2014. | |
Чориева. | Дильбар | уборщик. | 08.09.1967. | 05.10.2002. |
База данных будет находиться в третьей нормальной форме, если она приведена ко второй нормальной форме и каждый не ключевой столбец независим друг от друга. Если следовать процессу нормализации правильно до этой точки, с приведением к 3НФ может и не возникнуть вопросов. Следует знать, что 3НФ нарушается, если изменив значение в одном столбце, потребуется изменение и в другом столбце. Чтобы привести таблицу в третью нормальную форму надо выполнить следующие шаги:
Шаг 1. Определить, в каких полях каких таблиц имеется взаимозависимость. Как только что говорилось, поля, которые зависят больше друг от друга (поставщики и контакты поставщиков), чем от ряда в целом. Взглянув на таблицу препараты, увидите, что группы лекарств имеет связь с описанием лекарств, а поставщики имеет связь с заказами и контактами поставщиков.
Отношения таблицы препараты.
По отношению препараты, видно, что имеются связи не зависящие от первичного ключа «Название препаратов». Для этих связей создадим отдельные отношения:
В отношении «Группа препаратов» и «Описание препаратов» ключом является «Группа препаратов».
Таким же образом выявим независящие от первичного ключа связи в таблице «Сотрудники»:
Отношения сотрудники.
Первичный ключ в данном отношении является составным ключом — это «Фамилия» и «Имя». В данном случае полных тесок нет, поэтому ФИО можно использовать как составной ключ. В данном отношении «Зарплата» имеет связь с «Должностью», который является ключом. Разделим их на отдельную таблицу:
Исходя из этих отношений создадим таблицу «Препараты» и таблицы вспомогательные:
Таблица Препараты.
Наз. Препар. | Кол-во. | Группа препар. | Закуп. цена. | Цена продаж. | поставщик. | контакты. | Заказы (кол-во). |
Аевит. | A11JA. | РОСТА. | |||||
Бекламетазон. | R03BA01. | РОСТА. | |||||
Мукалтин. | R05CA. | 0.50. | ПрофитМед. | ||||
Бронхикум. | R05CA10. | АБРИС+. | |||||
Анаприлин. | C07AA. | ПУЛЬС. | |||||
Парацетамол. | N02BE01. | 0,50. | АБРИС+. |
Для таблицы «Препаратов» внешним ключом является «Группа препаратов».
Группа препаратов. | Описание препаратов. |
A11JA. | Повышает устойчивость тканей к гипоксии, нормализует тканевое дыхание. |
R03BA01. | Глюкокортикостероиды. |
R05CA. | Отхаркивающие препараты. |
R05CA10. | Отхаркивающие препараты в комбинации. |
C07AA. | Пропронолог. |
N02BE01. | Анальгетизирующее, жаропонижающее. |
Пока таблица «Препараты» не соответствует 3НФ, так как можно наблюдать явное дублирование. Наименование поставщиков препаратов и контактов поставщиков дублируются. Для того чтобы решить проблему надо вывести эти столбцы в отдельную таблицу. Отношение будет следующее:
Исходя из данного отношения составим таблицу «Заказы». В данной таблице имеется явное дублирование контактов поставщиков.
Таблица «Заказы».
Название препаратов. | Поставщик. | Контакты. | Заказы (кол-во). | Закуп. цена. |
Аевит. | РОСТА. | |||
Бекламетазон. | РОСТА. | |||
Мукалтин. | ПрофитМед. | 0.50. | ||
Бронхикум. | АБРИС+. | |||
Анаприлин. | ПУЛЬС. | |||
Парацетамол. | АБРИС+. | 0,50. |
Таблица «Поставщики».
Поставщик. | Контакты. |
РОСТА. | |
ПрофитМед. | |
ПУЛЬС. | |
АБРИС+. |
Получим исходную таблицу «Заказы». Остается неявное дублирование.
Название препаратов. | Поставщик. | Заказы (кол-во). | Закуп. цена. |
Аевит. | РОСТА. | ||
Бекламетазон. | РОСТА. | ||
Мукалтин. | ПрофитМед. | 0.50. | |
Бронхикум. | АБРИС+. | ||
Анаприлин. | ПУЛЬС. | ||
Парацетамол. | АБРИС+. | 0,50. |
Создадим исходную таблицу «Препараты», которая отвечает требованиям 3НФ:
Наз. препаратов. | Кол-во. | Группа препаратов. | Цена продаж. |
Аевит. | A11JA. | ||
Бекламетазон. | R03BA01. | ||
Мукалтин. | R05CA. | ||
Бронхикум. | R05CA10. | ||
Анаприлин. | C07AA. | ||
Парацетамол. | N02BE01. |
Приступим к таблице «Сотрудники»:
Фамилия. | Имя. | Должн. | Дата рожд. | Дата найма. |
Федоров. | Алексей. | провизор | 02.10.72. | 14.04.96. |
Тоиров. | Умед. | Заведующ. провиз. | 19.07.80. | 30.03.2001. |
Носиров. | Наим. | фармацевт. | 12.05.1992. | 29.11.2006. |
Хакимов. | Немонджон. | фармацевт. | 28.12.1993. | 31.05.2011. |
Робиева. | Матлюба. | бухгалтер | 05.04.1990. | 20.04.2014. |
Чориева. | Дильбар | уборщик. | 08.09.1967. | 05.10.2002. |
В данной таблице нет явного дублирования, исходя из этого можно сказать что таблица «Сотрудники» соответствует третей нормальной форме.
Таблица «Должность», так же находится в 3НФ.
Должн. | Зарплата. |
провизор | |
Заведующ. провиз. | |
фармацевт. | |
бухгалтер | |
уборщик. |