BD / bd_lab_kn(2008)
.pdfНормализуем таблицу ЗАВОДЫ, разбив ее на 2 таблицы:
-ЗАВОДЫ (в ней будут приведены сведения о заводах),
-ЦЕХИ (сведения о цехах заводов).
ЗАВОДЫ
|
Завод |
|
Город |
|
Начало |
|
Директор |
Телефон |
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ДМЗ |
|
Донецк |
|
1913 |
|
… |
… |
|
|
||
|
Азовсталь |
|
Мариуполь |
|
1930 |
|
… |
… |
|
|
||
|
Макзавод |
|
Макеевка |
|
1947 |
|
… |
… |
|
|
||
|
… |
|
… |
|
… |
|
… |
… |
|
|
||
Первичный ключ таблицы – поле Завод. |
|
|
|
|
|
|
||||||
|
|
|
|
|
ЦЕХИ |
|
|
|
|
|
|
|
|
Завод |
|
Цех |
|
Дата ввода |
Кол-во рабочих |
|
|||||
|
ДМЗ |
|
Литейный |
|
|
… |
|
… |
|
|||
|
ДМЗ |
|
Прокатный |
|
|
… |
|
… |
|
|||
|
ДМЗ |
|
Формовочный |
|
|
… |
ДонНТУ |
|
||||
|
|
|
|
|
… |
|
||||||
|
Азовсталь |
|
Литейный |
|
|
… |
|
… |
|
|||
|
Азовсталь |
|
Прокатный |
|
|
… |
|
… |
|
|||
|
….. |
|
……. |
|
|
… |
|
… |
|
В этой таблице поле Завод - внешний ключ; первичный ключ-составной:
Завод + Цех.
Между таблицами ЗАВОДЫ-ЦЕХИ существует связь “один-ко-многим” |
||||
|
ПМИ |
|||
(один завод имеет несколько цехов). Так как названия цехов повторяются, то |
||||
целесообразно организовывать справочник названий: |
||||
|
НАЗВАНИЯ ЦЕХОВ |
|||
|
Код названия цеха |
Цех |
|
|
|
Л |
Литейный |
|
|
|
П |
Прокатный |
|
|
|
Ф |
Формовочный |
|
|
|
…. |
…….. |
|
|
КафедраВ таблице ЗАВОДЫ введем искусственный первичный |
|
ключ с тем, чтобы |
||
|
В этой таблице поле Код названия цеха – искусственный ПК Так как за период существования металлургической промышленности перечень названий цехов уже сформировался (навряд ли появятся новые цехи), то в качестве кода можно взять первую букву названия цеха ( при условии, что ее значения будут уникальны).
в таблице ЦЕХИ заменить длинное поле Завод коротким полем Код завода:
20
ЗАВОДЫ
|
|
Код завода |
|
Завод |
|
|
|
|
|
Город |
|
Начало |
|
|
Директор |
|
Телефон |
|
|
||||||||||
|
1 |
|
|
ДМЗ |
|
|
|
Донецк |
|
… |
|
|
|
|
… |
|
… |
|
|
||||||||||
|
2 |
|
|
Азовсталь |
|
|
|
Мариуполь |
|
… |
|
|
|
|
… |
|
… |
|
|
||||||||||
|
3 |
|
|
Макзавод |
|
|
|
Макеевка |
|
… |
|
|
|
|
… |
|
… |
|
|
||||||||||
|
|
… |
|
… |
|
|
|
|
|
… |
|
… |
|
|
|
|
…. |
|
… |
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ДонНТУ |
|||||||||||
|
|
Для таблицы ЦЕХИ составной ПК Завод + Цех также нужно заменить |
|||||||||||||||||||||||||||
|
простым ключом . Для этого введем искусственный ПК Код цеха: |
||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
ЦЕХИ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
Код цеха |
|
|
Код завода |
|
|
|
|
Код названия цеха |
Дата ввода |
|
Количество |
|
|||||||||||||||
|
|
1 |
|
|
1 |
|
|
|
|
|
|
Л |
|
|
|
|
|
… |
|
|
|
|
… |
|
|||||
|
2 |
|
|
1 |
|
|
|
|
|
|
П |
|
|
|
|
|
… |
|
|
|
|
… |
|
||||||
|
3 |
|
|
1 |
|
|
|
|
|
|
Ф |
|
|
|
|
|
… |
|
|
|
|
… |
|
||||||
|
4 |
|
|
2 |
|
|
|
|
|
|
Л |
|
|
|
|
|
… |
|
|
|
|
… |
|
||||||
|
5 |
|
|
2 |
|
|
|
|
|
|
П |
|
|
|
|
|
… |
|
|
|
|
… |
|
||||||
|
|
… |
|
|
|
… |
|
|
|
|
|
|
… |
|
|
|
|
|
… |
|
|
|
|
… |
|
||||
|
|
Между объектами ЦЕХИ–ПРОДУКЦИЯ существует отношение “m:n" (с |
|||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
ПМИ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
одной стороны, каждый цех выпускает несколько видов продукции, с другой |
||||||||||||||||||||||||||||
|
стороны, каждый вид продукции выпускается цехами нескольких заводов). |
||||||||||||||||||||||||||||
|
|
Связь “m:n” должна быть приведена с помощью таблицы пересечения к |
|||||||||||||||||||||||||||
|
двум связям “1:n”. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
Разобьем таблицу |
|
|
|
|
|
ПРОДУКЦИЯ на |
две: |
АССОРТИМЕНТ и |
|||||||||||||||||||
|
ВЫПУСКАЕМАЯ ПРОДУКЦИЯ. Код продукции – искусственный первичный |
||||||||||||||||||||||||||||
|
ключ. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
АССОРТИМЕНТ |
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
Код продукции |
|
Тип |
|
|
|
Марка стали |
|
||||||||||||||||
Кафедра |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
1 |
|
|
|
|
Швеллер |
|
|
|
|
|
… |
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
2 |
|
|
|
|
Балка |
|
|
|
|
|
… |
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
3 |
|
|
|
|
Катанка |
|
|
|
|
|
… |
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
… |
|
|
|
… |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
ВЫПУСКАЕМАЯ ПРОДУКЦИЯ |
|
|
|
|
|
|
||||||||||||||||
|
|
Код цеха |
|
Код продукции |
|
Квартал |
|
|
План |
|
Цена единицы |
|
|||||||||||||||||
|
|
1 |
|
|
2 |
|
|
|
|
|
4 |
|
|
|
53 |
|
|
|
120 |
|
|
||||||||
|
1 |
|
|
3 |
|
|
|
|
|
1 |
|
|
|
85 |
|
|
|
210 |
|
|
|||||||||
|
1 |
|
|
3 |
|
|
|
|
|
3 |
|
|
|
100 |
|
|
|
220 |
|
|
|||||||||
|
5 |
|
|
2 |
|
|
|
|
|
1 |
|
|
|
100 |
|
|
|
112 |
|
|
|||||||||
|
|
… |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица ВЫПУСКАЕМАЯ ПРОДУКЦИЯ является таблицей пересечения (Код цеха – внешний ключ, Код продукции- внешний ключ).
Естественный первичный ключ – составной: Код цеха + Код продукции + Квартал, но можно ввести короткий искусственный ПК.
21
Структура рассмотренных таблиц (все находятся в 3НФ) и связи между ними приведены в Схеме данных, представленной на рис. 1.
Рисунок 1- Схема данных для БД “Продукция металлургическихДонНТУзаводов”
Пример 2
В БД, содержащей сведения о научной деятельности сотрудников университета, должны бытьПМИпредставлены данные о сотрудниках (ФИО, дата рождения, факультет, кафедра, должность, публикации (вид(статья, доклад на конференции, тезисы доклада,…), название, дата публикации)) и данные о темах, над которыми они работают (номер темы, финансирование по теме, дата начала выполнения, дата окончания, название, заказчик).
Первоначально можно выделить такие объекты предметной области: СОТРУДНИКИ, ТЕМЫ. Соответствующие им таблицы будут выглядеть так:
|
|
|
|
ТЕМЫ |
|
|
|
Номер |
Финансирование |
Дата |
Дата |
Название |
Заказчик |
|
темы |
|
начала |
окончания |
|
|
|
97-002 |
5000 |
01.01.97 |
31.12.98 |
… |
ВНИИГД |
|
97-010 |
10000 |
01.05.97 |
30.06.98 |
… |
ПКТИ |
|
97-021 |
8500 |
01.01.98 |
31.12.98 |
… |
ДонУГИ |
|
… |
… |
… |
… |
… |
… |
|
Кафедра |
|
|
|
|
Таблица ТЕМЫ находится в 3НФ, Номер темы –
СОТРУДНИКИ
|
Дата |
Факуль- |
Кафед- |
Долж- |
Вид |
Назва- |
Дата |
ФИО |
рожде- |
тет |
ра |
ность |
публи- |
ние |
публи- |
|
ния |
|
|
|
кации |
|
кации |
Иванов |
01.12.54 |
ВТИ |
ПМИ |
ст.н.с. |
статья |
…… |
10.04.84 |
Иванов |
01.12.54 |
ВТИ |
ПМИ |
ст.н.с. |
статья |
…… |
02.02.85 |
Иванов |
01.12.54 |
ВТИ |
ПМИ |
ст.н.с. |
доклад |
…… |
11.10.86 |
Иванов |
01.12.54 |
ВТИ |
ПМИ |
ст.н.с. |
тезисы |
…… |
12.12.89 |
Петров |
25.05.62 |
ВТИ |
ПМИ |
м.н.с. |
статья |
…… |
10.10.88 |
Петров |
25.05.62 |
ВТИ |
ПМИ |
м.н.с. |
тезисы |
…… |
16.08.92 |
Чайка |
13.07.76 |
ВТИ |
ЭВМ |
техник |
тезисы |
…… |
19.10.97 |
22
… |
|
… |
|
… |
|
… |
|
… |
|
… |
|
… |
|
… |
|
СОТРУДНИКИ – нормализованная таблица, находится в 1НФ. Обладает |
|||||||||||||||
следующими недостатками: |
|
|
|
|
|
|
|
|
|
||||||
- сложность определения первичного ключа, |
|
|
|
|
|
||||||||||
1 |
|
Иванов |
01.12.54 |
ВТИ |
ПМИДонНТУст.н.с. 97-010 |
||||||||||
- |
избыточность данных, |
|
|
|
|
|
|
|
|
|
|||||
- |
существование неоднозначных зависимостей между атрибутами, |
||||||||||||||
- отсутствие связи с объектом ТЕМЫ. |
|
|
|
|
|
|
|
||||||||
Проведем |
над |
таблицей |
СОТРУДНИКИ |
процесс |
нормализации, |
учитывая семантику данных и их связи. Разобьем ее на две таблицы: СОТРУДНИКИ и ПУБЛИКАЦИИ. В первой таблице будут содержаться общие сведения о сотрудниках – на каждого сотрудника по одной записи; во второй – сведения о научных публикациях (у сотрудника может быть несколько публикаций, одна или ни одной).
СОТРУДНИКИ
Код |
ФИО |
|
Дата |
Факультет |
Кафедра |
Долж- |
Номер |
сотрудника |
|
|
ПМИ |
|
|
|
|
|
рождения |
|
|
ность |
темы |
||
2 |
Петров |
25.05.62 |
ВТИ |
ПМИ |
м.н.с. |
98-021 |
|
3 |
Чайка |
13.07.76 |
ВТИ |
ЭВМ |
техник |
97-002 |
|
… |
… |
… |
|
… |
… |
… |
|
Так как для этой таблицы практически невозможно определить
естественный ПК, то введем |
искусственный первичный ключ - Код |
сотрудника. Для связи таблицы |
СОТРУДНИКИ с таблицей ТЕМЫ .в таблицу |
СОТРУДНИКИ необходимо ввести внешний ключ – атрибут Номер темы. Между таблицами ТЕМЫ и СОТРУДНИКИ существует связь “1:n”.
Таблица СОТРУДНИКИ находится во 2НФ, так как атрибут Кафедра однозначно зависит от неключевого атрибута Факультет. Нужно продолжить процесс нормализации над таблицей и привести ее к 3НФ.
Кроме того, для уменьшения объема таблицы следует использовать таблицы – справочники (таблицы подстановок): КАФЕДРЫ, ФАКУЛЬТЕТЫ, ДОЛЖНОСТИ:
|
|
|
|
|
|
|
|
ФАКУЛЬТЕТЫ |
|
||
|
|
Код факультета |
|
|
Факультет |
|
Полное название |
|
|||
|
|
|
1 |
|
|
ВТИ |
|
Вычисл. техники и информатики |
|||
|
|
|
2 |
|
|
КИТА |
|
Комп.инф.технологий и автоматики |
|||
|
|
|
… |
|
… |
|
… |
|
|||
|
Кафедра |
|
КАФЕДРЫ |
|
|||||||
|
|
Код |
|
Кафедра |
|
|
Полное название |
|
Код |
||
|
|
кафедры |
|
|
|
|
|
|
факультета |
23
1 |
ПМИ |
Прикладной математики и информатики |
1 |
2 |
ЭВМ |
Электронных выч. машин |
1 |
3 |
АТ |
Автоматики и телемеханики |
2 |
… |
… |
… |
… |
2 |
Петров 25.05.62 |
1 |
ДонНТУ2 98-021 |
|
|
ДОЛЖНОСТИ |
|||
|
Код должности |
Должность |
|
|
|
1 |
ст.н.с. |
|
|
|
2 |
м.н.с. |
|
|
|
3 |
лаборант |
|
|
|
4 |
техник |
|
|
|
… |
… |
|
|
Окончательный вид таблицы СОТРУДНИКИ:
Код |
ФИО |
Дата |
Код |
Код |
Номер |
сотрудника |
|
рождения |
кафедры |
долж- |
темы |
|
|
|
|
ности |
|
1 |
|
ПМИ |
1 |
97-010 |
|
Иванов |
01.12.54 |
1 |
|||
3 |
Чайка |
13.07.76 |
2 |
4 |
97-002 |
… |
… |
… |
… |
… |
… |
Таблица находится в 3НФ; использование справочников уменьшает ее объем и упрощает процесс занесения данных в соответствующие поля.
Для таблицы ПУБЛИКАЦИИ также используем справочник:
Кафедра |
ВИДЫ ПУБЛИКАЦИЙ |
|
|
||||||
|
|
|
|
|
|
||||
|
|
|
Код вида |
Вид публикации |
|
||||
|
|
|
|
1 |
|
|
статья |
|
|
|
|
|
|
2 |
|
|
доклад |
|
|
|
|
|
|
3 |
|
|
тезисы |
|
|
|
|
|
|
… |
|
… |
|
|
|
Окончательный вид таблицы ПУБЛИКАЦИИ : |
|
|
|||||||
|
|
|
|
|
|
|
|
||
|
Код |
|
Код |
|
Код |
Назва- |
Дата |
||
|
публикации |
сотрудника |
|
вида |
ние |
публи- |
|||
|
|
|
|
|
|
|
|
кации |
|
|
1 |
|
|
1 |
|
1 |
…… |
10.04.84 |
|
|
2 |
|
|
1 |
|
1 |
…… |
02.02.85 |
|
|
3 |
|
|
1 |
|
2 |
…… |
11.10.86 |
|
|
4 |
|
|
1 |
|
3 |
…… |
12.12.89 |
|
|
5 |
|
|
2 |
|
1 |
…… |
10.10.88 |
|
|
6 |
|
|
2 |
|
3 |
…… |
16.08.92 |
|
|
… |
|
… |
|
… |
… |
… |
24
Здесь :
Код публикации – искусственный первичный ключ; Код сотрудника - внешний ключ, связывает таблицы СОТРУДНИКИ и
ПУБЛИКАЦИИ (связь “1: n”); |
|
ДонНТУ |
||
Код вида - |
внешний |
ключ, связывает таблицу ПУБЛИКАЦИИ со |
||
справочником |
ВИДЫ ПУБЛИКАЦИЙ. |
|
||
Итак, сформированные |
|
таблицы находятся в 3НФ, поэтому их набор |
является оптимальным и, следовательно, может служить моделью реляционной базы данных.
3НФ таблиц позволяет гораздо эффективнее выполнять операции включения, удаления и модификации записей БД, а также делает избыточность данных минимальной.
Структура спроектированных таблиц и связи между ними приведены в Схеме данных, представленной на рис.2.
КафедраРисунок 2- Схема данных для БД «Научная деятельность сотрудников университета»
Пример 3
Для посреднической фирмы, занимающейся продажей вычислительной техники, необходимы сведения о поставщиках ( название фирмы, город, страна, форма собственности, телефон, адрес) и о представленных ими товарах ( наименование товара, фирма-изготовитель, дата поставки партии, цена единицы, количество единиц).
Структура таблиц, содержащих указанные данные, и связи между таблицами приведены в Схеме данных, представленной на рис.3.
.
25
Рисунок 3- Схема данных для БД о работе посредническойДонНТУфирмы
Для БД, рассмотренной в примере 3, разработаны все примеры, приведенные в последующих лабораторных работах
Задание к лабораторной работе
Для предметной области, описанной в заданном варианте, выделить объекты и представить их взаимосвязанными таблицами, находящимися в 3НФ. Определить базовые таблицы и таблицы-справочники; указать для них первичные и внешние ключи.
|
|
Контрольные вопросы |
1. Сформулировать следующие определения: |
||
• |
|
ПМИ |
предметная область, объект, БД, СУБД, банк данных; |
||
• |
концептуальная, внешняя, внутренняя модели данных; |
|
• |
реляционная модель данных; |
|
• |
нормализованная таблица, нормализация; |
|
• |
нормальные формы таблиц (первая, вторая, третья); |
|
• |
первичный, искусственный, внешний ключи; |
|
• |
целостность данных, ссылочная целостность. |
|
Кафедра |
|
2. Виды связей между объектами предметной области.
3. Реализация связей между таблицами в Access.
26
ЛАБОРАТОРНАЯ РАБОТА 2
СОЗДАНИЕ БАЗЫ ДАННЫХ В СРЕДЕ MICROSOFT ACCESS
Цель работы: освоение возможностей создания таблиц и установления связей между ними. ДонНТУ
Методические указания к выполнению работы
Создание новой базы данных
База данных Microsoft Access представляет собой файл с расширением mdb (multiple database). Для запуска Access нужно щелкнуть по кнопке Пуск на панели задач и выбрать команду Программы Microsoft Access.
Появляется окно, которое позволяет открыть уже созданный файл или создать новый файл базы данных с помощью опции Новая база данных. Создать новую БД можно также из главного окна Access с помощью кнопки Создать
результате открывается окно Файл новой базы данных, где нужно указать имя
новой БД и папку, в которой файл будет сохранен. Щелчок по кнопке Создать завершает создание БД и открывает главное окно Access.
В верхней части главного окна Access расположена строка меню, пункты которой изменяются в зависимости от режима работы системы. Ниже строки меню находится Панель инструментов - группа кнопок для быстрого выполнения наиболее популярных команд меню. В нижней части окна находится строка состояния в которой слева отображается полезная
на панели инструментов или команды Файл Создать. При этом способе создания можно воспользоваться шаблонами баз данных (вкладка База данных в окне Создание) либо сформироватьПМИновый mdb – файл (вкладка Общие). В
Кафедраинформация о текущих действиях, , а справа располагаются индикаторы режимов работы клавиатуры (CapsLock, NumLock).
В центральной части главного окна Access раскрываются другие окна, соответствующие различным этапам работы с БД.
Первоначально в главном окне открывается окно базы данных, содержание которого иллюстрируется рисунком 4. Окно содержит панель Объекты, набор кнопок панели инструментов и список объектов выбранного класса (Таблицы, Запросы, Формы, Отчеты, Страницы, Макросы,
Модули). Дополнительно окно БД содержит три пиктограммы для создания соответствующих типов объектов.
Во время работы с Access пользователь в любой момент может получить справку (с помощью клавиши F1 или команды главного меню Справка Справка по Microsoft Access). Справочная система охватывает все аспекты работы с системой: команды, меню, объекты, термины и концепции Access.
В Access существует множество средств, облегчающих и ускоряющих процесс создания и настройки объектов – программ - Мастеров, помогающих
27
конструировать БД, таблицы, формы, отчеты, диаграммы, приложения, почтовые наклейки, элементы управления и свойства.
Рисунок 4 – ОкноПМИбазы данных Microsoft Access
Режим конструктора таблицы
Создание таблицы то есть формирование ее структуры выполняется в Кафедрарежиме конструктора. ,Для активизации этого режима нужно, щелкнуть по кнопке Создать окна БД и в появившемся диалоговом окне Новая таблица
выбрать опцию Конструктор. Открывается окно конструктора таблиц (рис.5), состоящее из двух областей (панелей): области описания полей и области свойств полей. Для переключения между областями можно использовать клавишу F6.
В области описания полей вводятся имена, типы данных полей, а также
описание полей. В области свойств указываются характеристики полей, называемые свойствами. Свойства определяют порядок использования поля.
Имена полей могут быть длиной от 1 до 64 символов и могут включать буквы (в том числе и русские в русифицированной версии Access), цифры, символ подчеркивания, пробелы (но с пробела имя начинаться не может). Нельзя использовать в имени такие символы как точка, восклицательный знак, апостроф, квадратные скобки.
Описание поля - это своего рода комментарий. Рекомендуется вводить его для полей, назначение которых должно быть уточнено.
28
|
|
|
ПМИ |
|
|
||
|
|
Рисунок |
5 – Окно конструктора таблицы |
|
|||
|
|
|
|
Типы полей |
|
|
|
|
Тип поля - это тип данных, которые будут в нем храниться. Аccess |
||||||
|
поддерживает восемь основных типов данных. Описание типов полей МА |
||||||
|
приведено в следующей таблице: |
|
|
|
|||
|
Кафедра |
|
|
|
|
|
|
|
Тип |
|
|
|
Описание |
|
|
|
Текстовый |
используется |
для |
представления |
алфавитно- |
цифровых |
|
|
|
(символьных) данных, например, имен, адресов, описаний, а |
|||||
|
|
также числовых данных, которые не используются в |
|||||
|
|
вычислениях (номера телефонов, документов, почтовые |
|||||
|
|
индексы и т.п.). Длина их не должна превышать 255 байт |
|||||
|
|
(символов). |
|
|
|
|
|
|
Числовой |
применяется для представления данных, используемых в |
|||||
|
|
вычислениях. Числовые данные могут быть разного размера: |
|||||
|
|
1, 2, 4, 8 или 12 байт. |
|
|
|||
|
Денежный |
используется |
для |
хранения данных |
о денежных суммах |
||
|
|
(занимает 8 байт). Целая часть данного типа может содержать |
|||||
|
|
до 15 десятичных знаков, дробная – до четырех. |
|
||||
|
Счетчик |
предназначен для представления искусственного первичного |
|||||
|
|
ключа. Значения задаются путем автоматической генерации |
|||||
|
|
последовательных целых чисел. Размер – 4 байта (значения до |
|||||
|
|
2 миллиардов); значения счетчика обновлять нельзя. |
|||||
|
Логический |
используется |
для |
хранения данных, |
имеющих |
только два |
29