Лабораторная работа №5 по теме Создание многотабличной базы данных
Цели работы: На примере построения многотабличной базы освоить приёмы нормализации данных в БД.
Задачи работы: научиться проектировать и создавать многотабличную базу данных.
Общие сведения.
Базы данных должны проектироваться предельно аккуратно, чтобы гарантировать надёжное и правильное хранение данных. Поскольку реляционная модель БД основывается на первичных ключах для идентификации объектов и внешних ключах для создания связей, необходимо следить за целостностью (достоверностью) ключей.
Одной из целей создания базы данных является создание нормализованных (правильно разработаны) таблиц. Нормализация подразумевает разделение таблицы на несколько таблиц с целью исключения дублирования данных.
База данных считается нормализованной, когда каждое поле содержит только одно значение, а каждая таблица состоит из верного набора полей.
Нормализация таблиц базы данных - первый шаг на пути проектирования структуры реляционной базы данных. Строго говоря, конечно, не самый первый - сначала надо решить, что же мы вообще будем хранить в базе, то есть определиться со структурой полей, их типами и размерностью, смыслом хранимой в них информации.
Теория нормализации реляционных баз данных была разработана в конце 70-х годов 20 века. Согласно ей, выделяются шесть нормальных форм, пять из которых так и называются: первая, вторая, третья, четвертая, пятая нормальная форма, а также нормальная форма Бойса-Кодда, лежащая между третьей и четвертой. Существует шесть нормальных форм. Каждая нормальная форма разрабатывается на основе предшествующих. На практике в основном применяются три нормальные формы (остальные применяются редко).
База данных считается нормализованной, если ее таблицы (по крайней мере, большинство таблиц) представлены как минимум в третьей нормальной форме. Часто многие таблицы нормализуются до четвертой нормальной формы, иногда, наоборот, производится денормализация.
Главная цель нормализации базы данных - устранение избыточности и дублирования информации. В идеале при нормализации надо добиться, чтобы любое значение хранилось в базе в одном экземпляре, причем значение это не должно быть получено расчетным путем из других данных, хранящихся в базе.
Первая нормальная форма
Первая нормальная форма:
· запрещает повторяющиеся столбцы (содержащие одинаковую по смыслу информацию)
· запрещает множественные столбцы (содержащие значения типа списка и т.п.)
· требует определить первичный ключ для таблицы, то есть тот столбец или комбинацию столбцов, которые однозначно определяют каждую строку
Вторая нормальная форма
Вторая нормальная форма требует, чтобы неключевые столбцы таблиц зависели от первичного ключа в целом, но не от его части. В принципе, если таблица находится в первой нормальной форме и первичный ключ у нее состоит из одного столбца, то она автоматически находится и во второй нормальной форме.
Третья нормальная форма
Чтобы таблица находилась в третьей нормальной форме, необходимо, чтобы неключевые столбцы в ней не зависели от других неключевых столбцов, а зависели только от первичного ключа. Самая распространенная ошибка - это расчетные столбцы, значения которых можно получить путем каких-либо манипуляций с другими столбцами таблицы. Для приведения таблицы в третью нормальную форму такие столбцы из таблиц надо удалить.
Нормальная форма Бойса-Кодда
Нормальная форма Бойса-Кодда требует, чтобы в таблице был только один потенциальный первичный ключ. Чаще всего у таблиц, находящихся в третьей нормальной форме, так и бывает, но не всегда. Если обнаружился второй столбец (комбинация столбцов), позволяющий однозначно идентифицировать строку, то для приведения к нормальной форме Бойса-Кодда такие данные надо вынести в отдельную таблицу.
Четвертая нормальная форма
Для приведения таблицы, находящейся в нормальной форме Бойса-Кодда, к четвертой нормальной форме необходимо устранить имеющиеся в ней многозначные зависимости. То есть обеспечить, чтобы вставка / удаление любой строки таблицы не требовала бы вставки / удаления / модификации других строк этой же таблицы.
Пятая нормальная форма
Таблицу, находящуюся в четвертой нормальной форме и, казалось бы, уже нормализованную до предела, в некоторых случаях еще можно бывает разбить на три или более (но не на две!) таблиц, соединив которые, мы получим исходную таблицу. Получившиеся в результате такой, как правило, весьма искусственной, декомпозиции таблицы и называют находящимися в пятой нормальная форме. Формальное определение пятой нормальной формы таково: это форма, в которой устранены зависимости соединения. В большинстве случаев практической пользы от нормализации таблиц до пятой нормальной формы не наблюдается.
Разработаны специальные формальные математические методы нормализации таблиц реляционных баз данных. На практике же толковый проектировщик баз данных, детально познакомившись с предметной областью, как правило, достаточно быстро набросает структуру, в которой большинство таблиц находятся в четвертой нормальной форме).
Главное, чего мы добьемся, проведя нормализацию базы данных - это устранение (или, по крайней мере, серьезное сокращение) избыточности, дублирования данных. Как следствие, значительно сокращается вероятность появления противоречивых данных, облегчается администрирование базы и обновление информации в ней, сокращается объем дискового пространства.
Например, данные о сотрудниках мы разделили на две таблицы «Сотрудники» и «Дополнительные сведения». В таблицу «Сотрудники» занесены данные, которые потребуются при работе сотрудника с клиентом, а в таблице «Дополнительные сведения» хранятся данные, необходимые при приёме сотрудника на работу и не нужные при работе сотрудника с заказами.
При дальнейшем создании базы обратите особое внимание на распределение данных в таблицах, зависимость неключевых полей от первичного ключа и их независимость от других неключевых полей.
1. Любым способом создайте таблицы «Товары», «Типы», «Клиенты», «Поставщики», «Заказано», «Заказы», «Доставка».
1.1. Таблица Типы должна содержать следующие поля: КодТипа (счётчик, ключевое), Категория (текстовый).
1.2. Таблицу «Клиенты» составьте из полей: КодКлиента (ключевое, текстовый: уникальный пятисимвольный код, образуемый из названия организации), Название (текстовый), ОбращатьсяК (текстовый), Должность (текстовый), Адрес (текстовый), Город (текстовый), телефонФакс (текстовый).
1.3. В таблице «Поставщики» создайте поля: КодПоставщика (счётчик, ключевое), Название (текстовый), ОбращатьсяК (текстовый), Должность (текстовый), Адрес (текстовый), город (текстовый), Страна (текстовый), ТелефонФакс (текстовый).
1.4. В таблице «Доставка» создайте поля: КодДоставки (счётчик, ключевое), Название (текстовый), Телефон (текстовый).
1.5. Таблица «Товары» должна содержать следующие поля: КодТовара (ключевое, счётчик), Марка (текстовый), КодТипа (числовой), КодПоставщика (числовой), ЕдиницаИзмерения (текстовый), Цена (денежный), НаСкладе (текстовый), Ожидается (числовой), МинЗапас (числовой), ПоставкиПрекращ (логический).
Поля «КодТипа» и «КодПоставщика» заполняются по подстановке из таблицы «Типы» и «Поставщики» соответственно. В таблице «Типы» выбирается поле «Категория», в таблице «Поставщики» - поле «Название». Названия полей в таблице «Товары» меняются на «Категория» и «Поставщик» соответственно.
Использование Мастера подстановок: лабораторная работа №3.
Внимание! Тип данных поля, в котором используется Мастер подстановок, должен соответствовать типу данных ключевого поля подстановочной таблицы.
1.6. В таблице «Заказы» должны быть поля: КодЗаказа (счётчик, ключевое), КодКлиента (текстовый), КодСотрудника (числовой), ДатаРазмещения (дата/время), ДатаНазначения (дата/время), ДатаИсполнения (дата/время), Доставка (числовой), СтоимостьДоставки (денежный).
Поля «КодКлиента», «КодСотрудника» и «Доставка» заполняются по подстановке. Для поля «КодКлиента» подстановочная таблица «Клиенты» (поле «Название»), для поля «КодСотрудника» – «Сотрудники» (поле «Фамилия»), для поля «Доставка» – «Доставка» («Название»).
1.7. В таблице «Заказано» ключевыми являются два поля, т.е. имеется составной ключ. Создайте следующие поля: КодЗаказа (числовой, ключевое), КодТовара (числовой, ключевое), Количество (числовой), Скидки (числовой). Чтобы создать составной ключ, выделите оба поля, удерживая левую клавишу мыши и нажмите на пиктограмме ключа.
Поле «КодТовара» заполняется по подстановки из таблицы «Товары» (поле «Марка») Измените название поля «КодТовара» на «НаименованиеТовара».
Поле «Скидки» должно иметь процентное значение: в режиме Конструктор в Свойствах поля укажите Размер поля - одинарное с плавающей точкой, Формат поля - процентный, Десятичных знаков - 0, Значение по умолчанию - 0, Условие на значение - Between 0 And 1, Сообщение об ошибке - необходимо ввести знак процента.
3. Изменение схемы данных
2.1. Откройте окно Схема данных (вкладка Работа с базами данных/раздел Показать или скрыть/Схема данных, Схема данных).
2.2. Вызовите меню, щёлкнув правой кнопкой мыши по пустому месту, выберите Добавить таблицу. В окне Добавление таблицы добавьте в схему данных все созданные таблицы.
На схеме данных должны быть показаны таблицы,
объединённые в две группы тонкими линиями без обозначения типов связей (рис.
8).
Рис. 8. Схема данных после Использования Мастера подстановок.
2.3. Двойным щелчком левой кнопки по линии связи вызовите окно Изменение связей и отметьте флажками Обеспечение целостности данных, Каскадное обновление полей. Связь должна определиться как один-ко-многим.
2.4. Установите связь таблиц «Заказы» и «Заказано», перетащив поле «КодЗаказа» из таблицы «Заказы» на поле «КодЗаказа» в таблицу «Заказано». В открывшемся окне Изменение связей отметьте Обеспечение целостности данных. Поскольку в таблице «Заказано» два ключевых поля, то связь будет установлена один-ко-многим (рис. 9).
Рис. 9. Схема данных базы данных «Продуктовая база»
4. Заполните таблицы данными
4.1. Таблица «Типы»
КодТипа |
Категория |
Описание |
1 |
напитки |
Алкогольные и безалкогольные напитки, чай, кофе и др. |
2 |
хлебобулочные |
Хлеб, крекеры, хлопья и пр. |
3 |
кондитерские |
Десерты, конфеты, джемы, муссы и пр. |
4 |
мясо/птица |
Мясные полуфабрикаты, готовые изделия |
5 |
фрукты |
Сушёные и свежие фрукты |
4.2. Таблица «Доставка»
КодДоставки |
название |
телефон |
1 |
Ространс |
(3452)238745 |
2 |
РЖД |
(3452)256734 |
3 |
Авиа |
(3452)359856 |
4 |
самодоставка |
|
4.3. Таблица «Поставщики» (не менее 10 поставщиков из разных стран и городов)
Код Поставщика |
Название |
Обращаться к |
Должность |
Адрес |
Город |
Страна |
Телефон факс |
1 |
China Traders |
Yoshi Nagase |
совладелец |
9-8 Sekimai |
Пекин |
Китай |
(09)3436277 |
2 |
Производственная компания «Дарья» |
Наталья Седова |
Главный менеджер |
Гагарина, 27 |
Москва |
Россия |
(095)9786432 |
3 |
Производственное предприятие «Толстяк» |
Игорь Матвеев |
Менеджер по продажам |
Садовая, 16 |
Москва |
Россия |
(095)9075449 |
4 |
Nord-Ost-Fisch mbH |
Sven Petersen |
Внешний координатор |
Frahmredder 112a |
Куксхавен |
Германия |
(04721) 8714 |
5 |
Фирма «Морозко» |
Никита Игнатьев |
Представитель |
Ленина, 86 |
Омск |
Россия |
(413)568790 |
…. |
|
|
|
|
|
|
|
10 |
Сельскохозяйственная фирма «Сад» |
Олеся Криванко |
Главный менеджер |
Товарная, 59 |
Краснодар |
Россия |
(267)874390 |
4.4. Таблица «Клиенты» (не менее 10 клиентов по Тюмени и Тюменской области)
Код клиента |
Название |
Обращаться к |
должность |
адрес |
город |
Телефон факс |
ОООПМ |
Триера |
Вероника Коль |
Старший менеджер |
Пермякова, 35 |
Тюмень |
(3452)357856 |
ЧПМСТ |
Ольга |
Инна Кудрявцева |
совладелец |
Республики, 15 |
Тюмень |
(3452)238745 |
ОООСТ |
Триумф |
Пётр Моргунов |
Представитель |
Парковая, 27 |
Ялуторовск |
(34522)38754 |
Не менее 10 |
|
|
|
|
|
|
4.5. Таблица «Товары» (не менее 30 наименований товаров)
Код товара |
Марка |
Поставщик |
Категория |
Единица измерения |
Цена |
На складе |
Ожидается |
Минимальный запас |
Поставка прекращена |
1 |
Фуджи |
China Traders |
фрукты |
30 кг в 1 ящике |
1830р. |
12 |
120 |
10 |
¨ |
2 |
Дарья |
Производственная компания «Дарья» |
мясо/птица |
10 пакетов по 1 кг |
1400р. |
100 |
0 |
5 |
þ |
3 |
Морозко |
Фирма «Морозко» |
мясо/птица |
20 пакетов по 1 кг |
2200р. |
56 |
0 |
5 |
¨ |
4 |
Толстяк |
Производственное предприятие «Толстяк» |
напитки |
24 бутылки по 0,5 л |
720р. |
156 |
0 |
15 |
¨ |
5 |
Алдред |
Сельскохозяйственная фирма «Сад» |
фрукты |
25 кг в ящике |
1425р. |
10 |
0 |
10 |
þ |
…. |
|
|
|
|
|
|
|
|
|
30 |
|
|
|
|
|
|
|
|
|
В таблицах «Заказы» и «Заказано» должно быть одинаковое количество записей (не менее 15) с одними и теми же номерами, т.к. таблица «Заказано» является логическим продолжением таблицы «Заказы». При заполнении полей «ДатаРазмещения», «ДатаНазначения» и «ДатаИсполнения» учитывайте распределение заказов по разным месяцам за 2 года.
4.6. Таблица «Заказы»
Код заказа |
Клиент |
Ответс Сотрудник |
Дата Размещения |
Дата Назначения |
Дата Исполнения |
Доставка |
Стоим Доставки |
1 |
Триера |
Шишкин Андрей |
2.03.08 |
6.03.08 |
4.03.08 |
Ространс |
120,78р. |
2 |
Ольга |
Максимов Павел |
23.09.07 |
13.10.07 |
4.10.07 |
Ространс |
135,00р. |
3 |
Триумф |
Фомин Валерий |
14.01.08 |
19.01.08 |
17.01.08 |
РЖД |
576,45р. |
… |
|
|
|
|
|
|
|
15 |
|
|
|
|
|
|
|
4.7. Таблица «Заказано»
Код заказа |
НаимТовар |
Количество |
скидки |
1 |
Фуджи |
5 |
15% |
2 |
Толстяк |
30 |
3% |
3 |
Морозко |
7 |
0 |
… |
|
|
|
15 |
|
|
|
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.