СОЗДАНИЕ СТРУКТУРЫ БАЗЫ ДАННЫХ НА ЯЗЫКЕ ЗАПРОСОВ Лабораторная работа №1
Концептуальная модель базы данных для железнодорожного вокзала
1. Анализ предметной области:
а) система должна хранить и обрабатывать информацию о сотрудниках, маршрутах движения и пассажирах;
б) система будет использоваться управленческим персоналом ;
в) в предметной области выделяются следующие сущности:
Железнодорожный вокзал,
Сотрудник,
Маршрут движения,
Пассажир
г)определяется такой состав атрибутов для выбранных сущностей:
Железнодорожный вокзал ¤
Полное название вокзала (первичный ключ),
Адрес,
Контактный телефон,
Директор;
Сотрудник ¤
№ трудового договора (первичный ключ),
Фамилия,
Имя,
Отчество,
Дата рождения,
Должность,
Оклад,
Контактный телефон;
Маршрут движения ¤
Название маршрута,
Время отправления (первичный ключ),
Дата отправления,
Стоимость билета,
№ поезда,
№ платформы;
Пассажиры ¤
Личный № (первичный ключ),
Фамилия,
Имя,
Отчество,
№ и серия паспорта,
Дата покупки билета,
д) определяются пары взаимосвязанных сущностей и типы взаимосвязей:
Железнодорожный вокзал ¤ Сотрудник – 1 : N,
Железнодорожный вокзал ¤ Маршрут движения – 1 : N,
Маршрут движения ¤ Пассажир – 1 : N ;
е) определяются атрибуты взаимосвязей:
Железнодорожный вокзал ¤ Сотрудник – Полное название вокзала (вводится в сущность Сотрудник),
Железнодорожный вокзал ¤ Маршрут движения – Полное название вокзала (вводится в сущность Маршрут движения ),
Маршрут движения ¤ Пассажир – Название маршрута и время оправления (вводится в сущность Транспорт).
Разработка модели “сущность-связь” предметной области.
Сотрудник
|
| Железнодорожный
вокзал
|
| Маршрут движения
| № трудового договора
|
| Полное название вокзала
|
| Название маршрута
| Фамилия
|
| Адрес
|
| Дата отправления
| Имя
|
| Телефон
|
| Время отправления
| Отчество
|
| Директор
|
| Стоимость билета
| Дата рождения
|
|
|
| № поезда
| Должность
|
|
|
| № платформы
| Оклад
|
| Пассажир
|
| Полное название вокзала
| Контактный тел.
|
| Личный №
|
|
| Полное название вокзала
|
| Фамилия
|
|
| Имя
| | Отчество
| | № и серия паспорта
| | Дата покупки билета
| | Название маршрута
| | Дата отправления
| | Время отправления
| | На представленной ER-диаграмме отсутствуют взаимосвязи “многие-ко-многим”, а состав атрибутов определен без избыточности. Поэтому данный вариант будет считаться окончательным
Лабораторная работа №2
Изучение основ реляционной алгебры
Цель занятия
Изучение основных понятий реляционной алгебры. Отработка следующих навыков:
а) определение структурных элементов отношений;
б) решение заданий по операциям реляционной алгебры.
A
|
| B
|
| C
|
| D
| X1
| X2
| X3
|
| X1
| X2
| X3
|
| X1
| X2
| X3
|
| X1
| X2
| X3
| x
|
| I
|
| x
|
| I
|
| x
|
| I
|
| x
|
| I
| x
|
| II
|
| xx
|
| II
|
| y
|
| II
|
| x
|
| II
| x
|
| I
|
| xxx
|
| III
|
| z
|
| I
|
| x
|
| I
| xx
|
| II
|
| y
|
| I
|
| x
|
| II
|
| y
|
| II
| xx
|
| III
|
| yy
|
| II
|
| y
|
| I
|
| y
|
| I
| xxx
|
| IV
|
| yyy
|
| III
|
| z
|
| II
|
| y
|
| II
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| E
|
| F
| Y1
| Y2
| Y3
| Y4
| Y5
| Y6
| Y7
|
| Y1
| Y2
| Y3
| Y4
| Y5
| Y6
| Y7
| i
| a
| I
| x
|
| a
| +
|
| i
| a
| I
| x
|
| a
| +
| i
| b
| I
| x
|
| aa
| –
|
| i
| b
| I
| y
|
| a
| +
| i
| c
| II
| x
|
| aaa
| +
|
| ii
| a
| I
| z
|
| a
| +
| ii
| a
| II
| y
|
| a
| –
|
| ii
| b
| II
| x
|
| aa
| +
| ii
| b
| III
| y
|
| aa
| +
|
| iii
| a
| II
| y
|
| aa
| +
| iii
| a
| III
| y
|
| aaa
| –
|
| iii
| b
| II
| z
|
| aa
| –
| iii
| b
| IV
| z
|
| a
| +
|
| iv
| a
| III
| x
|
| aaa
| –
| iv
| a
| IV
| z
|
| aa
| –
|
| iv
| b
| III
| y
|
| aaa
| –
| iv
| b
| V
| z
|
| aaa
| +
|
| v
| a
| III
| z
|
| aaa
| –
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| G
|
| H
|
| I
|
| J
|
| K
|
| L
| X1
|
| X2
|
| X3
|
| Y1
| Y3
|
| Y2
| Y4
|
| Y5
| Y6
| Y7
| x
|
|
|
| I
|
| i
| I
|
| a
| x
|
|
| a
| +
| xx
|
|
|
| II
|
| i
| II
|
| b
| y
|
|
| aa
| –
|
|
|
|
| III
|
| ii
| II
|
| c
| z
|
|
|
|
|
Упражнение 1. Представить схемы, перечислить кортежи и определить ранги отношений B и L
1. Для отношения B:
а)схема – B (X1, X2, X3);
б)кортежи ¤
(x, 1, I ),
(xx, 2, II ),
(xxx, 3, III ),
(y, 1, I ),
(yy, 2, II ),
(yyy, 3, III ),
в) ранг равен 3.
2. Для отношения L:
а) схема – L (X5, X6, X7);
б)кортежи ¤
(1, a, + ),
(2, aa, - );
в) ранг равен 3.
Упражнение 2. Выполнить:A / C, J ´ I, , .
1. Находим A / C.
Отношения A и C имеют одинаковый перечень атрибутов, поэтому данная операция выполнима.
Определяется отношение A \ B , которое содержит кортежи, принадлежащие отношению A, но не принадлежащие отношению C.
A / C
| X1
| X2
| X3
| x
|
| I
| xx
|
| II
| xx
|
| III
| xxx
|
| IV
|
2. Определяем J ´ I.
J ´ I
| Y1
| Y3
| X3
| i
| I
| I
| i
| II
| II
| ii
| II
| III
| i
| I
| I
| i
| II
| II
| ii
| II
| III
| i
| I
| I
| i
| II
| II
| ii
| II
| III
| 3. Находим .
| Y7
| Y6
| Y5
| +
| a
|
| +
| a
|
| +
| aa
|
| +
| aa
|
| -
| aa
|
| -
| aaa
|
| -
| aaa
|
| 4. Строим
| Y1
| Y2
| Y3
| Y4
| Y5
| Y6
| Y7
| i
| a
| I
| x
|
| a
| +
| i
| c
| II
| x
|
| aaa
| +
| ii
| b
| III
| y
|
| aa
| +
| iii
| b
| IV
| z
|
| a
| +
|
Лабораторная работа №3
Анализ качества проекта Базы данных
Цель занятия
Изучение применения реляционной алгебры к оценке качества проекта базы данных:
а) определение множества функциональных зависимостей;
б) построение третьей нормальной формы для набора схем отношений;
в) проверка правильности построения третьей нормальной формы (исследование на свойство соединения без потерь).
Постановка задачи
1.Нормализация схем отношений. В данном случае необходимо:
а)составить схемы исходных отношений;
б) проверить наличие первой нормальной формы для каждой схемы отношения;
в)определить множество функциональных зависимостей;
г) разработать вторую нормальную форму для каждой схемы либо удостовериться в ее наличии;
д) разработать третью нормальную форму для каждой схемы либо удостовериться в ее наличии.
2. Проверка выполнения нормализации. Здесь необходимо провести исследование полученной декомпозиции на соединение без потерь информации.
Ход работы
1. Нормализация схем отношений:
а)схемы исходных отношений:
Железнодорожный вокзал ¤
Полное название вокзала
Адрес,
Контактный телефон,
Директор;
Сотрудник ¤
№ трудового договора
Фамилия,
Имя,
Отчество,
Дата рождения,
Должность,
Оклад,
Контактный телефон;
Маршрут движения ¤
Название маршрута,
Время отправления
Дата отправления,
Стоимость билета,
№ поезда,
№ платформы;
Пассажир ¤
Личный №
Фамилия,
Имя,
Отчество,
№ и серия паспорта,
Дата покупки билета,
б)атрибуты всех схем отношений являются атомарными, следовательно, схемы Железнодорожный вокзал ( ), Сотрудник ( ), Маршрут движения ( ), Пассажир ( ) находятся в первой нормальной форме;
в)определяем наборы функциональных зависимостей для схем отношений:
Сотрудник ( ):
№ трудового договора ® {¼} – зависимость от ключа,
Должность ® Оклад;
Железнодорожный вокзал ( ):
Полное название вокзала ® {¼} – зависимость от ключа;
Маршрут движения ( ):
Название маршрута, время отправления, дата отправления, ® {¼} – зависимость от ключа,
Пассажир ( ):
Личный № ® {¼} – зависимость от ключа,
г)первичные ключи отношений Железнодорожный вокзал ( ), Сотрудник ( ), Пассажир ( ) являются атомарными, следовательно, каждая схема соответствует требованиям второй нормальной формы; А в отношении Маршрут движения ( ) отсутствуют функциональные зависимости в которых слева находятся один или два атрибута входящие в состав первичного ключа этого отношения, а справа находятся не ключевые атрибуты, что означает что отношение Маршрут движения ( ) также находится во второй нормальной форме.
д)в схемах Железнодорожный вокзал ( ), Маршрут движения ( ), Пассажир ( ) имеются только зависимости от ключа, поэтому эти схемы находятся в третьей нормальной форме;
В схеме Сотрудник ( ) существует зависимость между не ключевыми атрибутами Должность ® Оклад, таким образом, Сотрудник ( ) не находится в третьей нормальной форме и необходимо провести декомпозицию, образовав две новые схемы:
Сотрудник1(
№ трудового договора,
Фамилия,
Имя,
Отчество,
Дата рождения,
Должность,
Оклад,
Контактный телефон
Полное название вокзала );
Справочник окладов (
Должность,
Оклад);
Полученная в результате декомпозиции совокупность пяти схем отношений Железнодорожный вокзал ( ), Сотрудник1 ( ), Справочник окладов(), Маршрут движения ( ), Пассажир ( ) удовлетворяет требованиям третьей нормальной формы.
2. Проверка выполнения нормализации:
a)для исследования декомпозиции r1{Сотрудник1( ), Справочник окладов ( )} на соединение без потерь построим следующую таблицу:
| №
Т¤ Д
| Ф
| И
| О
| Д ¤ Р
| Д
| О
| К ¤ Т
| П Н ¤ В
| Сотрудник1
| a
| а
| а
| а
| а
| b1
| а
| а
| а
| Спр. окладов
| b2
| b2
| b2
| b2
| а
| а
| b2
| b2
| b2
| После рассмотрения функциональной зависимости Должность ® Оклад будет получена таблица, которая содержит первую строку, состоящую только из значений a, поэтому декомпозиция r1 обладает свойством соединения без потерь:
| №
Т¤ Д
| Ф
| И
| О
| Д ¤ Р
| Д
| О
| К ¤ Т
| П
Н ¤ В
| Сотрудник1
| a
| а
| а
| а
| а
| а
| а
| а
| а
| Спр. окладов
| b2
| b2
| b2
| b2
| а
| а
| b2
| b2
| b2
|
Лабораторная работа №4
СОЗДАНИЕ СТРУКТУРЫ БАЗЫ ДАННЫХ НА ЯЗЫКЕ ЗАПРОСОВ
SQL
Цель занятия
Изучение возможностей и практическое использование языка запросов SQL по созданию структуры базы данных.
Постановка задачи
1. Создание структуры таблиц базы данных. Сюда входит:
а) определение имен полей и типов данных;
б) назначение первичных ключей.
2. Установление взаимосвязей, где необходимо составить запросы по установлению имеющихся взаимосвязей между таблицами.
Ход работы
Создаем структуру реляционной базы данных на основании модели, оптимизированной в лабораторной работе №3.
1.Создание структуры таблиц базы данных:
а)создание таблицы Железнодорожный вокзал (соответствует схеме Железнодорожный вокзал):
CREATE TABLE [Железнодорожный вокзал] (
[Полное название вокзала] TEXT(20),
Адрес TEXT(50),
Телефон TEXT(9),
Директор TEXT(12)
);
создание таблицы Сотрудник (соответствует схеме Сотрудник1):
CREATE TABLE Сотрудник (
[№ трудового договора] NUMBER,
Фамилия TEXT(12),
Имя TEXT(12),
Отчество TEXT(12),
[Дата рождения] DATETIME,
Должность TEXT(10),
[Контактный телефон] TEXT(9),
[Полное название вокзала] TEXT(20)
);
создание таблицы Справочник окладов (соответствует схеме Справочник окладов):
CREATE TABLE [Справочник окладов] (
Должность TEXT(10),
Оклад CURRENCY
);
создание таблицы Маршрут движения (соответствует схеме Маршрут движения):
CREATE TABLE [маршрут движения] (
[Название маршрута] TEXT(30),
[Дата отправления] DATETIME,
[Время отправления] TEXT(10),
[Стоимость билета] CURRENCY,
[№ поезда] NUMBER,
[№ платформы] NUMBER,
[Полное название вокзала] TEXT(20)
);
создание таблицы Пассажир (соответствует схеме Пассажир):
CREATE TABLE Пассажир (
[Личный №] NUMBER,
Фамилия TEXT(12),
Имя TEXT(12),
Отчество TEXT(12),
[№ и серия паспорта] TEXT(30),
[Дата покупки билета] DATETIME,
[Название маршрута] TEXT(30),
[Дата отправления] DATETIME,
[Время отправления] TEXT(10),
);
б)назначение атомарным первичным ключом таблицы Железнодорожный вокзал поля Полное название вокзала:
CREATE INDEX [первичный ключ] ON [Железнодорожный вокзал] ([полное название вокзала])
WITH PRIMARY;
назначение атомарным первичным ключом таблицы Сотрудник поля № трудового договора:
CREATE INDEX [первичный ключ] ON Сотрудник ([№ трудового договора])
WITH PRIMARY;
назначение атомарным первичным ключом таблицы Справочник окладов поля Должность:
CREATE INDEX [первичный ключ] ON [Справочник окладов] (Должность)
WITH PRIMARY;
назначение состовым первичным ключом таблицы Маршрут движения полей Название маршрута, время отправления, дата отправления:
CREATE INDEX [первичный ключ] ON Маршрут (
[Название маршрута],
[Дата отправления],
[Время отправления])
WITH PRIMARY;
назначение атомарным первичным ключом таблицы Пассажир поля Личный №:
CREATE INDEX [первичный ключ] ON Пассажир ([Личный №])
WITH PRIMARY;
2.Установление взаимосвязей:
создание взаимосвязи вида “один-ко-многим” между таблицами Железнодорожный вокзал и Сотрудник:
ALTER TABLE Сотрудник
ADD CONSTRAINT Связь FOREIGN KEY ([Полное название вокзала])
REFERENCES [Железнодорожный вокзал] ([Полное название вокзала]);
создание взаимосвязи вида “один-ко-многим” между таблицами Справочник окладов и Сотрудник:
ALTER TABLE Сотрудник
ADD CONSTRAINT Связь FOREIGN KEY (Должность)
REFERENCES [Справочник окладов] (Должность);
создание взаимосвязи вида “один-ко-многим” между таблицами Железнодорожный вокзал и Маршрут движения:
ALTER TABLE [Маршрут движения]
ADD CONSTRAINT Связь2 FOREIGN KEY ([Полное название вокзала])
REFERENCES [Железнодорожный вокзал] ([Полное название вокзала]);
создание взаимосвязи вида “один-ко-многим” между таблицами Маршрут движения и Пассажир:
ALTER TABLE Пассажир
ADD CONSTRAINT Связь FOREIGN KEY (
[Название маршрута],
[Дата отправления],
[Время отправления])
REFERENCES [Маршрут движения] (
[Название маршрута],
[Дата отправления],
[Время отправления]
);
Сотрудник
|
| Железнодорожный
вокзал
|
| Маршрут движения
| № трудового договора
|
| Полное название вокзала
|
| Название маршрута
| Фамилия
|
| Адрес
|
| Дата отправления
| Имя
|
| Телефон
|
| Время отправления
| Отчество
|
| Директор
|
| Стоимость билета
| Дата рождения
|
|
|
| № поезда
| Должность
|
|
|
| № платформы
| Контактный тел.
| | Пассажир
|
| Полное название вокзала
| Полное название вокзала
|
| Личный №
|
|
|
|
| Фамилия
|
|
|
|
| Имя
| |
|
| Отчество
| | Справочник окладов
|
| № и серия паспорта
| | Должность
|
| Дата покупки билета
| | Оклад
|
| Название маршрута
| |
|
| Дата отправления
| |
|
| Время отправления
| | | | | | | |
Лабораторная работа №5
|