- •Оглавление
- •Глава 1 Представление данных 6
- •Глава 2 Реляционные базы данных 10
- •Глава 3 Язык структурированных запросов 42
- •Глава 4 Задание к выполнению лабораторных работ 72
- •Глава 5 Курсовая работа 97 Введение
- •Представление данных
- •Уровни представления данных
- •Инфологическая модель «сущность-связь»
- •Основные понятия
- •Характеристика связей
- •Вопросы для самопроверки
- •Реляционные базы данных
- •Основные понятия
- •Объекты реляционной структуры
- •Операции реляционной алгебры
- •Неопределенные значения
- •Ограничения целостности
- •Разработка реляционной базы данных
- •Основные предпосылки
- •Нормализация
- •Нормальные формы
- •Правила нормализации
- •Алгоритм нормализации
- •Нормализация в примерах.
- •Заключение
- •Вопросы для самопроверки
- •Язык структурированных запросов
- •Основные понятия
- •Типы данных
- •Операции над данными и null
- •Выбор данных из базы
- •Выбор данных из базы – оператор join
- •Выбор данных из базы – источник данных запрос
- •Управление структурой базы данных
- •Типы команд управления структурой
- •Типы объектов структуры
- •Создание таблицы
- •Удаление таблицы
- •Создание представления
- •Удаление представления
- •Изменение представления
- •Создание триггера
- •Изменение данных
- •Удаление данных
- •Ограничения целостности при манипулировании данными
- •Пример создания базы данных
- •Заключение
- •Вопросы для самопроверки
- •Задание к выполнению лабораторных работ
- •Лабораторная работа №1. Изучение команды select – простые запросы
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Содержание отчета
- •Лабораторная работа №2. Изучение команды select – запрос из нескольких источников
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Видео прокат
- •Вариант 2 Биржа
- •Вариант 3 Биржа труда
- •Вариант 4 Коктейли
- •Вариант 5 Урожай
- •Вариант 6 Фитнес центр
- •Вариант 7 Овощная база
- •Вариант 8 Оборудование
- •Вариант 9 Курортная карта
- •Вариант 10 осаго
- •Контрольные вопросы
- •Содержание отчета
- •Лабораторная работа №3. Разработка структуры базы данных. Вторая часть
- •Задания для самостоятельного решения
- •Контрольные вопросы
- •Содержание отчета
- •Лабораторная работа №3. Разработка системы протоколирования операций над данными реляционной таблицы с использованием триггеров
- •Задание для самостоятельного решения:
- •Контрольные вопросы:
- •Содержание отчета
- •Лабораторная работа №2. Разработка пользовательских функций и процедур
- •Задания для самостоятельного решения
- •Контрольные вопросы:
- •Содержание отчета
- •Лабораторная работа №2. Импорт данных
- •Задания для самостоятельного решения
- •Контрольные вопросы:
- •Содержание отчета
- •Курсовая работа
- •Библиографический список
Пример создания базы данных
Рассмотрим пример создания структуры разработанной нами ранее базы данных по учету билетов на рейсы пассажирских авиалиний в системе управления базами данных MS SQL Server.
Структуру будем создавать согласно даталогической схеме, приведенной на рис. 8, и в нее войдут следующие типы объектов базы данных:
таблицы;
поля таблицы;
первичные ключи;
внешние ключи.
Внешние и первичные ключи будем создавать как ограничения полей или таблиц. Для простых ключей – как ограничения полей, для составных – как ограничения таблиц. При таком подходе необходимо соблюдать последовательность создания таблиц: родительские таблицы должны быть созданы ранее дочерних.
Каждая таблица базы данных участвует, как минимум, в одной связи. В рассматриваемой нами схеме таблица «Авиабилеты» участвует в двух связях, и в них обеих она выступает в роли дочерней таблицы. Поэтому таблицы «Пассажиры» и «Рейсы» должны быть созданы ранее таблицы «Авиабилеты». Таблица «Рейсы» участвует в трех связях, в двух из которых выступает в роли дочерней таблицы. Поэтому таблицы «Марки» и «Пункты» должны быть созданы ранее таблицы «Рейсы».
Создадим таблицу «Пассажиры»:
CREATE TABLE "Пассажиры" (
"№Пассажира" INT PRIMARY KEY,
"ФИО" VARCHAR(100) NOT NULL,
"Паспортные_данные" VARCHAR(100) NOT NULL,
"Скидка" INT);
Создадим таблицу «Пункты»:
CREATE TABLE "Пункты" (
"№Пункта" INT PRIMARY KEY,
"Пункт_прибытия " VARCHAR(100) NOT NULL);
Создадим таблицу «Марки»:
CREATE TABLE "Марки" (
"№Марки" INT PRIMARY KEY,
"Марка_самолета" VARCHAR(100) NOT NULL,
"кол-во_мест" int);
Создадим таблицу «Рейсы»:
CREATE TABLE "Рейсы" (
"№Рейса" INT PRIMARY KEY,
"№Марки" INT FOREIGN KEY REFERENCES "Марки"("№Марки"),
"Время_вылета" DATETIME NOT NULL,
"Цена_билета" DECIMAL(8,2) NULL,
"№Пункта" INT FOREIGN KEY REFERENCES "Пункты" ("№Пункта"));
Создадим таблицу «Авиабилеты»:
CREATE TABLE "Авиабилеты" (
"№Рейса" INT FOREIGN KEY REFERENCES "Рейсы" ("№Рейса"),
"Дата_вылета" DATETIME,
"№Пассажира" INT FOREIGN KEY REFERENCES "Пассажиры" ("№Пассажира"),
PRIMARY KEY ("№Рейса", "Дата_вылета", "№Пассажира") );
Первичный ключ таблицы «Авиабилеты» является составным, поэтому он создается как ограничение таблицы, все остальные ключи являются простыми и создаются как ограничения поля.
Далее необходимо заполнить данными созданную структуру, согласно рис. 6. При заполнении также важен порядок обработки данных. При вставке данных в дочернюю таблицу проверяется наличие соответствующей значению внешнего ключа записи в родительской таблице. В случае несоответствия данные не будут вставлены.
Заполним таблицу «Пассажиры»:
INSERT INTO "Пассажиры" VALUES (1, 'Петров А.А. ', '3000 № 1234567', 5);
INSERT INTO "Пассажиры" VALUES (2, 'Боброва А.А. ', '3000 № 7654321', 0);
INSERT INTO "Пассажиры" VALUES (3, 'Шамаров А.А. ', '3000 № 2345678', 1);
INSERT INTO "Пассажиры" VALUES (4, 'Иванов А.А. ', 'X-EP № 3456789', 0);
Заполним таблицу «Пункты»:
INSERT INTO "Пункты" VALUES (1, 'Москва');
INSERT INTO "Пункты" VALUES (2, 'Ухта');
Заполним таблицу «Марки»:
INSERT INTO "Марки" VALUES (1, 'ТУ-154', 150);
INSERT INTO "Марки" VALUES (2, 'ТУ-134', 70);
Заполним таблицу «Рейсы»:
INSERT INTO "Рейсы" VALUES (111, 1, '10:20', 1000, 1);
INSERT INTO "Рейсы" VALUES (1252, 2, '23:15', 1200, 2);
INSERT INTO "Рейсы" VALUES (115, 1, '22:20', 1000, 2);
Заполним таблицу «Авиабилеты»:
INSERT INTO "Авиабилеты" VALUES (111, '10.12.1999', 1);
INSERT INTO "Авиабилеты" VALUES (111, '10.12.1999', 2);
INSERT INTO "Авиабилеты" VALUES (1252, '10.12.1999', 3);
INSERT INTO "Авиабилеты" VALUES (111, '11.12.1999', 4);
INSERT INTO "Авиабилеты" VALUES (111, '11.12.1999', 1);
INSERT INTO "Авиабилеты" VALUES (1252, '12.12.1999', 1);
INSERT INTO "Авиабилеты" VALUES (115, '21.12.1999', 1);
