
- •Глава 1. Файловые системы и базы данных 12
- •Глава 2. Логические структуры реляционной модели 33
- •Глава 3. Ddl – Язык определения данных реляционной модели 62
- •Глава 4. Dml – Язык манипулирования данными реляционной модели 81
- •Глава 5. Dds – Средства администрирования баз данных 116
- •Глава 6. Информационные системы с активным сервером баз данных 121
- •Глава 7. Xml как способ логического представления информации 158
- •Глава 8. Sql и xml 178
- •Введение
- •Глава 1.Файловые системы и базы данных
- •1.2.История систем управления данными
- •1.3.Становление концепции баз данных
- •1.3.1.Файловая система как способ отделения логической и физической структуры данных
- •1.3.2.Структуры данных
- •1.3.3.Целостность данных и метаданные
- •1.3.4.Язык запросов sql
- •1.3.5.Язык sql и унифицированные процедуры
- •1.4.Организация информационных систем на базе субд
- •1.4.1.Субд как средство обеспечения логической и физической независимости данных
- •1.4.2.Субд в составе информационной системы
- •1.4.3.Выделение субд в качестве отдельного компонента информационной системы
- •Глава 2.Логические структуры реляционной модели
- •2.1.Основы реляционной алгебры
- •2.1.1.Объекты и их определения
- •Множество
- •Декартово произведение
- •Отношение
- •Атрибут отношения
- •Заголовок и тело отношения
- •2.1.2.Операторы Объединение отношений
- •Разность отношений
- •Пересечение отношений
- •Произведение отношений
- •Проекция отношения на компоненты
- •Выборка отношения
- •2.2.Основные понятия реляционных баз данных
- •2.2.1.Учебная база данных
- •2.2.2.Первичные ключи
- •2.2.3.Отношение предок/потомок
- •2.2.4.Внешние ключи
- •2.2.5.Индексы
- •2.3.Целостность данных
- •2.3.1.Условия целостности данных
- •2.3.2.Изменения, способные нарушить ссылочную целостность
- •2.3.3.Правила ссылочной целостности
- •2.4.Нормализация данных
- •2.4.1.Понятие функциональной зависимости
- •2.4.2.Первая нормальная форма: атомарные атрибуты
- •2.4.3.Вторая нормальная форма: отсутствие зависимостей частичного ключа
- •2.4.4.Третья нормальная форма: устранение транзитивных зависимостей
- •2.5.Системный каталог
- •2.5.1.Назначение системного каталога
- •2.5.2.Структура системного каталога
- •2.5.3.Информация о таблицах
- •2.5.4.Информация о столбцах
- •2.5.5.Информация о представлениях
- •2.5.6.Информация об отношениях между таблицами
- •2.5.7.Информация о пользователях
- •2.5.8.Информация о привилегиях
- •Глава 3.Ddl – Язык определения данных реляционной модели
- •3.1.Создание базы данных
- •3.1.1.Общий формат оператора create database
- •3.1.2.Определение пароля
- •3.1.3.Указание размера страницы бд
- •3.1.4.Указание национальной кодировки символов
- •3.1.5.Типы данных
- •3.2.Создание доменов
- •3.2.1.Общий формат оператора create domain
- •3.2.2.Ограничения на значения столбцов, ассоциированных с доменом
- •3.2.3.Изменение определения домена
- •3.3.Создание таблиц
- •3.3.1.Инструкция create table
- •Определение столбцов
- •Предложения primary key и foreign key
- •Предложение unique
- •Предложение check
- •3.3.2.Инструкция alter table
- •Добавление столбца
- •Удаление столбца
- •Изменение первичных и вторичных ключей
- •3.4.Создание представлений (view)
- •3.4.1.Общий формат оператора create view
- •3.4.2.Горизонтальное представление
- •3.4.3.Вертикальное представление
- •3.4.4.Удаление представления
- •3.4.5.Недостатки представлений
- •3.5.Создание индексов
- •3.5.1.Общий формат оператора create index
- •3.5.2.Необходимость создания индексов
- •3.5.3.Удаление индекса
- •Глава 4.Dml – Язык манипулирования данными реляционной модели
- •4.1.Оператор выборки select
- •4.1.1.Общий формат оператора select
- •4.1.2.Предложение select
- •4.1.3.Предложение from
- •4.1.4.Предложение where
- •Сравнение
- •Проверка на принадлежность диапазону
- •Проверка на членство в множестве
- •Проверка на соответствие шаблону
- •Проверка на значение null
- •4.1.5.Правила выполнения запроса select
- •4.2.Агрегатные функции
- •4.2.1.Вычисление среднего значения столбца
- •4.2.2.Вычисление суммы значений столбца
- •4.2.3.Вычисление экстремумов
- •4.2.4.Вычисление количества значений в столбце
- •4.2.5.Правила выполнения запросов, в котором участвуют агрегатные функции
- •4.3.Запросы с группировкой
- •4.3.1.Предложение group by
- •4.3.2.Предложение having
- •4.3.3.Предложение order by − определение сортировки
- •4.3.4.Правила выполнения запросов с группировкой
- •4.4.Вложенные запросы
- •4.4.1.Определение подчиненных запросов
- •4.4.2.Условия отбора в подчиненном запросе
- •Сравнение с результатом полученного запроса
- •Проверка на принадлежность результатам вложенного запроса
- •Проверка на существование
- •Многократное сравнение
- •4.4.3.Подчиненные запросы в предложении having
- •4.4.4.Правила выполнения вложенных запросов
- •4.5.Многотабличные запросы
- •4.5.1.Алгоритм выполнения многотабличного запроса
- •4.5.2.Внутреннее объединение таблиц
- •Объединение таблиц по равенству
- •Запросы с использованием отношенияпредок-потомок
- •Запросы на основе составных ключей
- •Правила выполнения многотабличных запросов на выборку
- •4.5.3.Внешнее объединение таблиц
- •Правила выполнения внешних объединений
- •Левое внешнее объединение
- •Правое внешнее объединение
- •Полное внешнее объединение
- •4.6. Операторы обновления данных
- •4.6.1.Оператор insert
- •Однострочная инструкция insert
- •Многострочная инструкция insert
- •4.6.2.Оператор update
- •4.6.3.Оператор delete
- •Глава 5.Dds – Средства администрирования баз данных
- •5.1.Назначение и ликвидация прав
- •5.1.1.Команда grant
- •5.1.2.Команда revoke
- •5.2.Назначение прав исполнения хранимых процедур
- •5.3.Создание группы управления правами – роли
- •5.3.5.Связывание пользователей с ролями
- •Глава 6.Информационные системы с активным сервером баз данных
- •6.1.Хранимые процедуры или функции
- •6.1.1.Структура языка
- •Комментарии
- •6.1.2.Команды и выражения
- •Команды
- •Выражения
- •6.1.3.Переменные
- •Типы данных
- •Объявление переменных
- •Присваивание
- •Аргументы
- •6.1.4.Возвращение переменных
- •6.1.5.Атрибуты
- •Атрибут %type
- •Атрибут %rowtype
- •6.1.6.Конкатенация
- •6.1.7.Передача управления
- •Условные команды
- •6.1.8.Обработка ошибок и исключений
- •6.1.9.Вызов функций
- •6.2.Триггеры
- •6.2.1.Создание триггера
- •6.2.2.Получение информации о триггерах
- •6.2.3.Удаление триггера
- •6.2.4.Pl/pgSql и триггеры
- •Глава 7.Xml как способ логического представления информации
- •7.1.Язык html и его недостатки
- •7.2.Язык xml и его основы
- •7.2.1.Объявление xml
- •7.2.2.Элементы и теги
- •7.2.3.Атрибуты
- •7.2.4.Иерархичность структуры xml-документа
- •7.2.5.Комментарии
- •7.3.Xml Схемы и метаданные
- •7.3.1.Структурирование данных и схема xml
- •7.3.2.Типы данных в схеме xml
- •7.3.3.Элементы и атрибуты в xml Схеме
- •7.3.4.Пространство имен
- •7.4.Стили и форматирование данных xml
- •7.4.1.Основы xsl
- •7.4.2.Структура таблицы стилей xsl
- •Последовательности
- •Шаблоны
- •Глава 8.Sql и xml
- •8.1.Xml как средство представления структурированных данных
- •8.1.1.Представление структурированных данных в xml
- •8.1.2.Сравнение xml и sql
- •8.2.Использование xml с базами данных
- •8.2.1.Хранение данных в формате xml
- •8.2.2.Вывод в формате xml
- •8.2.3.Ввод в формате xml
- •8.2.4.Обмен данными в формате xml
- •8.2.5.Интеграция данных в формате xml
- •Приложение Учебная база данных
Приложение Учебная база данных
В настоящем приложении описана учебная база данных, на которой основано большинство примеров, приведенных в данном курсе лекций. Учебная база данных состоит из пяти таблиц:
CLIENTY (клиенты) содержит по одной строке для каждого из клиентов компании;
SLUZHASCHIE (служащие) содержит по одной строке для каждого служащего компании;
OFFISY (офисы) содержит по одной строке для каждого из пяти офисов компании;
TOVARY (товары) содержит по одной строке для каждого наименования товара, продаваемого компанией;
ZAKAZY (заказы) содержит по одной строке для каждого из заказов, сделанных клиентом. Для простоты считается, что один заказ может содержать только один товар.
На рис. П.1 приведена логическая схема учебной базы данных.
|
Рис. П.1. Структура учебной базы данных |
Таблицы учебной базы данных были созданы под управлением СУБД PostgreSQL с помощью инструкций CREATE TABLE, приведенных ниже.
|
Рис. П.2. Инструкция CREATE TABLE ZAKAZY.CLIENTY |
|
Рис. П.3. Инструкция CREATE TABLE ZAKAZY.SLUZHASCHIE |
|
Рис. П.4. Инструкция CREATE TABLE ZAKAZY.OFFISY |
|
Рис. П.5. Инструкция CREATE TABLE ZAKAZY.TOVARY |
|
Рис. П.6. Инструкция CREATE TABLE ZAKAZY.ZAKAZY |
Ниже приведено содержимое пяти таблиц учебной базы данных после выполнения соответствующих команд INSERT.
Таблица CLIENTY
ID_CLN |
COMPANY |
ID_SLZH |
LIMIT_CREDIT |
12111 |
«Заря» |
2103 |
$50000.00 |
12102 |
«Гранит» |
2101 |
$65000.00 |
12103 |
«Базальт» |
2105 |
$50000.00 |
12123 |
«Марс» |
2102 |
$40000.00 |
12107 |
«Комета» |
2110 |
$35000.00 |
12115 |
«Сатурн» |
2101 |
$20000.00 |
12101 |
«Метеор» |
2106 |
$65000.00 |
12112 |
«Юпитер» |
2108 |
$50000.00 |
12121 |
«Агат» |
2103 |
$45000.00 |
12114 |
«Аметист» |
2102 |
$20000.00 |
12124 |
«Меркурий» |
2107 |
$40000.00 |
12108 |
«Алмаз» |
2109 |
$55000.00 |
12117 |
«Цезарь» |
2106 |
$35000.00 |
12122 |
«Центурион» |
2105 |
$30000.00 |
12120 |
«Взлет» |
2102 |
$50000.00 |
12106 |
«Атлант» |
2102 |
$65000.00 |
12119 |
«Аргонавт» |
2109 |
$25000.00 |
12118 |
«Стрела» |
2108 |
$60000.00 |
12113 |
«Кристалл» |
2104 |
$20000.00 |
12109 |
«Самолет» |
2103 |
$25000.00 |
12105 |
«Энергия» |
2101 |
$45000.00 |
Таблица SLUZHASCHIE
ID_SLZH |
FAMILY |
NAME |
AGE |
ID_OFC |
DLZH |
MNGR |
QUOTA |
SALES |
2105 |
Филатов |
Петр |
37 |
313 |
Брокер |
2104 |
$350000.00 |
$367911.00 |
2109 |
Полев |
Андрей |
31 |
311 |
Брокер |
2106 |
$300000.00 |
$392725.00 |
2102 |
Пронин |
Игорь |
48 |
321 |
Брокер |
2108 |
$350000.00 |
$474050.00 |
2106 |
Петров |
Петр |
52 |
311 |
Гл.Брокер |
NULL |
$275000.00 |
$299912.00 |
2104 |
Иванов |
Иван |
33 |
312 |
Ст.Брокер |
2106 |
$200000.00 |
$142594.00 |
2101 |
Федоров |
Федор |
45 |
312 |
Брокер |
2104 |
$300000.00 |
$305673.00 |
2110 |
Уткин |
Денис |
41 |
NULL |
Брокер |
2101 |
NULL |
$75985.00 |
2108 |
Нилов |
Лев |
62 |
321 |
Ст.Брокер |
2106 |
$350000.00 |
$361865.00 |
2103 |
Филин |
Федор |
29 |
312 |
Брокер |
2104 |
$275000.00 |
$286775.00 |
2107 |
Ганин |
Сергей |
49 |
322 |
Брокер |
2108 |
$300000.00 |
$186042.00 |
Таблица OFFISY
ID_OFC |
CITY |
REGION |
MNGR |
TARGET |
SALES |
322 |
Инза |
Ульяновская |
2108 |
$300000.00 |
$186042.00 |
311 |
Буинск |
Татарстан |
2106 |
$575000.00 |
$692637.00 |
312 |
Тверь |
Московская |
2104 |
$800000.00 |
$735042.00 |
313 |
Орел |
Орловская |
2105 |
$350000.00 |
$367911.00 |
321 |
Киров |
Кировская |
2108 |
$725000.00 |
$835915.00 |
400 |
Омск |
Омская |
NULL |
NULL |
NULL |
Таблица TOVARY
ID_MFR |
ID_PRD |
DESCRIPTION |
PRICE |
COUNT |
УАЗ |
2A45C |
Деталь кузова |
$79.00 |
210 |
ВАЗ |
4100Y |
Деталь двигателя |
$2750.00 |
25 |
ПМЗ |
XK47 |
Сопло |
$355.00 |
38 |
УПЗ |
41672 |
Плата |
$180.00 |
0 |
Утес |
779C |
Пылесос А300 |
$1875.00 |
9 |
ВАЗ |
41003 |
Дверь 1 |
$107.00 |
207 |
ВАЗ |
41004 |
Дверь 2 |
$117.00 |
139 |
УПЗ |
41003 |
Корпус |
$652.00 |
3 |
Утес |
887P |
Пылесос ручной |
$250.00 |
24 |
ПМЗ |
XK48 |
Ось |
$134.00 |
203 |
УАЗ |
2A44L |
Левая дверь |
$4500.00 |
12 |
УМЗ |
112 |
Цепь |
$148.00 |
115 |
Утес |
887H |
Шланг пылесоса |
$54.00 |
223 |
УПЗ |
41089 |
Крышка |
$225.00 |
78 |
ВАЗ |
41001 |
Ручка |
$55.00 |
277 |
Утес |
775C |
Пылесос В200 |
$1425.00 |
5 |
ВАЗ |
4100Z |
Карбюратор |
$2500.00 |
28 |
ПМЗ |
XK48A |
Редуктор |
$177.00 |
37 |
ВАЗ |
41002 |
Педаль |
$76.00 |
167 |
УАЗ |
2A44R |
Правая дверь |
$4500.00 |
12 |
Утес |
773C |
Пылесос Д100 |
$975.00 |
28 |
ВАЗ |
4100X |
Дворник |
$25.00 |
37 |
УМЗ |
114 |
Поршень |
$243.00 |
15 |
Утес |
887X |
Brace Retainer |
$475.00 |
32 |
УАЗ |
2A44G |
Ручной тормоз |
$350.00 |
14 |
Таблица ZAKAZY
ID_ORDER |
DATE_ORDER |
ID_CLN |
ID_SLZH |
ID_MFR |
ID_PRD |
COUNT |
PRICE_ALL |
312961 |
12/17/89 |
12117 |
2106 |
УАЗ |
2A44L |
7 |
$31500.00 |
313012 |
01/11/90 |
12111 |
2105 |
ВАЗ |
41003 |
35 |
$3745.00 |
312989 |
01/03/90 |
12101 |
2106 |
УМЗ |
114 |
6 |
$1458.00 |
313051 |
02/10/90 |
12118 |
2108 |
ПМЗ |
XK47 |
4 |
$1420.00 |
312968 |
10/12/89 |
12102 |
2101 |
ВАЗ |
41004 |
34 |
$3978.00 |
313036 |
01/30/90 |
12107 |
2110 |
ВАЗ |
4100Z |
9 |
$22500.00 |
313045 |
02/02/90 |
12112 |
2108 |
УАЗ |
2A44R |
10 |
$45000.00 |
312963 |
12/17/89 |
12103 |
2105 |
ВАЗ |
41004 |
28 |
$3276.00 |
313013 |
01/14/90 |
12118 |
2108 |
УПЗ |
41003 |
1 |
$652.00 |
313058 |
02/23/90 |
12108 |
2109 |
УМЗ |
112 |
10 |
$1480.00 |
312997 |
01/08/90 |
12124 |
2107 |
УПЗ |
41003 |
1 |
$652.00 |
312983 |
12/27/89 |
12103 |
2105 |
ВАЗ |
41004 |
6 |
$702.00 |
313024 |
01/20/90 |
12114 |
2108 |
ПМЗ |
XK47 |
20 |
$7100.00 |
313062 |
02/24/90 |
12124 |
2107 |
УМЗ |
114 |
10 |
$2430.00 |
312979 |
10/12/89 |
12114 |
2102 |
ВАЗ |
4100Z |
6 |
$15000.00 |
313027 |
01/22/90 |
12103 |
2105 |
ВАЗ |
41002 |
54 |
$4104.00 |
313007 |
01/08/90 |
12112 |
2108 |
УТЕС |
773C |
3 |
$2925.00 |
313069 |
03/02/90 |
12109 |
2107 |
УТЕС |
775C |
22 |
$31350.00 |
313034 |
01/29/90 |
12107 |
2110 |
УАЗ |
2A45C |
8 |
$632.00 |
312992 |
11/04/89 |
12118 |
2108 |
ВАЗ |
41002 |
10 |
$760.00 |
312975 |
10/12/89 |
12111 |
2103 |
УАЗ |
2A44G |
6 |
$2100.00 |
313055 |
02/15/90 |
12108 |
2101 |
ВАЗ |
4100X |
6 |
$150.00 |
313048 |
02/10/90 |
12120 |
2102 |
УТЕС |
779C |
2 |
$3750.00 |
312993 |
01/04/89 |
12106 |
2102 |
УАЗ |
2A45C |
24 |
$1896.00 |
313065 |
02/27/90 |
12106 |
2102 |
ПМЗ |
XK47 |
6 |
$2130.00 |
313003 |
01/25/90 |
12108 |
2109 |
УТЕС |
779C |
3 |
$5625.00 |
313049 |
02/10/90 |
12118 |
2108 |
ПМЗ |
XK47 |
2 |
$776.00 |
312987 |
12/31/89 |
12103 |
2105 |
ВАЗ |
4100Y |
11 |
$27500.00 |
313057 |
02/18/90 |
12111 |
2103 |
ВАЗ |
4100X |
24 |
$600.00 |
313042 |
02/02/90 |
12113 |
2101 |
УАЗ |
2A44R |
5 |
$22500.00 |
Учебное издание
ТОКМАКОВ Геннадий Петрович
Базы данных. Концепция баз данных, реляционная модель данных, языки SQL и XML
|
Учебное пособие
Редактор М. В. Штаева
|
ЛР №020640 от 22.10.97 Подписано в печать 00.00.2011. Формат 6084/16. Усл. печ. л. Х,ХХ. Тираж 100 экз. Заказ ХХХ
|
Ульяновский государственный технический университет 432027, г. Ульяновск, ул. Сев. Венец, 32.
Типография УлГТУ, 432027, г.Ульяновск, ул. Сев. Венец, 32. |