- •Содержание
- •Глава 1 Концепция баз данных 6
- •Глава 2 Модели данных 12
- •Глава 3 Реляционная модель данных 24
- •Глава 4 Элементы языка sql 42
- •Глава 5 Проектирование баз данных 66
- •Глава 6 Функции субд и системы обработки транзакций 81
- •Глава 7 Технологии, модели и архитектура систем обработки данных 88
- •Глава 1 Концепция баз данных
- •1.1 Данные и эвм
- •1.2 Поколения субд и направления исследований
- •1.3 Терминология в субд
- •1.4 Вопросы для самоконтроля к главе 1
- •Глава 2 Модели данных
- •2.1. Классификация моделей данных
- •2.2 Основные особенности систем, основанных на инвертированных списках
- •2.2.1 Структуры данных
- •2.2.2 Манипулирование данными
- •2.2.3 Ограничения целостности
- •2.3 Иерархические модели
- •2.3.1. Иерархические структуры данных
- •2.3.2 Манипулирование данными
- •2.3.3 Ограничения целостности
- •2.4 Сетевые модели
- •2.4.1 Сетевые структуры данных
- •2.4.2 Манипулирование данными
- •2.4.3 Ограничения целостности
- •2.5 Физические модели организации баз данных
- •Файловые структуры, используемые для хранения данных в бд
- •Модели страничной организации данных в современных бд
- •Этапы доступа к бд
- •Вопросы и упражнения для самоконтроля к главе 2
- •Глава 3 Реляционная модель данных
- •3.1 Базовые понятия реляционных баз данных
- •3.1.1. Тип данных
- •3.1.2. Домен
- •3.1.3 Схема отношения, схема базы данных
- •3.1.4 Кортеж, отношение, ключи
- •3.1.5 Связи в реляционных базах данных
- •3.2 Фундаментальные свойства отношений
- •3.2.1 Отсутствие кортежей-дубликатов
- •3.2.2 Отсутствие упорядоченности кортежей
- •3.2.3 Отсутствие упорядоченности атрибутов
- •3.2.4 Атомарность значений атрибутов
- •3.3. Характеристика реляционной модели данных
- •3.4 Трехзначная логика (3vl)
- •3.5 Реляционная алгебра
- •Эквисоединение. Наиболее важным частным случаем -соединения является случай, когда есть просто равенство. Синтаксис эквисоединения:
- •3.6 Особенности операций реляционной алгебры
- •Реляционное исчисление
- •Вопросы и упражнения для самоконтроля к главе 3
- •Глава 4 Элементы языка sql
- •4.1 История языка sql
- •4.2 Структура языка sql
- •Ddl (Data Definition Language) - операторы определения объектов базы данных:
- •Dml (Data Manipulation Language) - операторы манипулирования данными:
- •Dcl (Data Control Language) - операторы контроля данных, защиты и управления данными:
- •4.3 Создание запроса с помощью оператора select
- •4.3.1 Создание простых запросов
- •4.3.2. Агрегирование данных в запросах
- •4.3.3 Формирование запросов на основе соединения таблиц
- •4.3.4 Формирование структур вложенных запросов
- •Простые подзапросы
- •4.3.4.2 Соотнесенные (коррелированные) подзапросы
- •Запросы с использованием кванторов
- •4.3.5 Объединение нескольких запросов в один
- •4.3.6 Синтаксис оператора select
- •4.4 Операторы манипулирования данных
- •4.4.1 Оператор удаления данных delete
- •4.4.2 Оператор вставки данных insert
- •4.4.3 Оператор обновления данных update
- •Операторы определения объектов базы данных
- •4.5.1 Операторы определения таблицы
- •4.5.2 Оператор определения представлений create view
- •Операторы контроля данных, защиты и управления данными
- •4.6.1 Операторы управления привилегиями
- •4.6.2 Операторы управления транзакциями
- •4.6.3 Проблемы параллельной работы транзакций
- •Вопросы и упражнения для самоконтроля к главе 4
- •Глава 5 Проектирование баз данных
- •5.1 Проектирование реляционных бд с использованием принципов нормализации
- •Проектирование реляционных бд с использованием семантических моделей
- •5.2.1 Применение семантических моделей при проектировании
- •5.2.2. Основные понятия модели Entity-Relationship
- •5.2.3 Пример разработки простой er-модели
- •Практические рекомендации по проектированию бд
- •Вопросы и упражнения для самоконтроля к главе 5
- •Глава 6 Функции субд и системы обработки транзакций
- •6.1 Основные функции субд
- •1.Непосредственное управление данными во внешней памяти
- •2. Управление буферами оперативной памяти
- •3. Управление транзакциями
- •4. Журнализация
- •5. Поддержка языков бд
- •Системы обработки транзакций
- •6.2.1 Oltp-системы
- •6.2.2 Olap -системы
- •6.2.3 Мониторы транзакций
- •Архитектура субд
- •6.4 Пользователи бд
- •6.4 Вопросы и упражнения для самоконтроля по главе 6
- •Глава 7 Технологии, модели и архитектура систем обработки данных
- •7.1 Технологии и модели архитектуры «клиент-сервер»
- •7.2 Распределенная обработка данных
- •Аспекты сетевого взаимодействия
- •Технология распределенной бд (технология star)
- •Технология тиражирования данных
- •7.3 Концепция активного сервера в модели dbs
- •7.4 Вопросы и упражнения для самоконтроля к главе 7
- •Литература
4.2 Структура языка sql
Основу языка SQL составляют операторы, условно разбитые на несколько групп по выполняемым функциям. Можно выделить следующие группы операторов (перечислены не все операторы SQL):
Ddl (Data Definition Language) - операторы определения объектов базы данных:
CREATE SCHEMA - создать схему базы данных;
DROP SHEMA - удалить схему базы данных;
CREATE DATABASE - создать базы данных;
DROP DATABASE - удалить базу данных;
CREATE TABLE - создать таблицу;
ALTER TABLE - изменить таблицу;
DROP TABLE - удалить таблицу;
CREATE DOMAIN - создать домен;
ALTER DOMAIN - изменить домен;
DROP DOMAIN - удалить домен;
CREATE INDEX - создать индекс;
DROP INDEX - удалить индекс;
CREATE COLLATION - создать последовательность;
DROP COLLATION - удалить последовательность;
CREATE VIEW - создать представление;
DROP VIEW - удалить представление.
Dml (Data Manipulation Language) - операторы манипулирования данными:
SELECT - отобрать строки из таблиц;
INSERT - добавить строки в таблицу;
UPDATE - изменить строки в таблице;
DELETE - удалить строки в таблице;
Dcl (Data Control Language) - операторы контроля данных, защиты и управления данными:
CREATE ASSERTION - создать ограничение;
DROP ASSERTION - удалить ограничение;
COMMIT - зафиксировать внесенные изменения;
ROLLBACK - откатить внесенные изменения.
GRANT - предоставить привилегии пользователю или приложению на манипулирование объектами;
REVOKE - отменить привилегии пользователя или приложения.
Кроме того, есть группы операторов установки параметров сеанса, получения информации о базе данных, операторы статического SQL, операторы динамического SQL.
Наиболее важными для пользователя являются операторы манипулирования данными (DML).
В языке SQL/89 поддерживаются следующие типы данных (таблица 4.1):
Таблица 4.1 – Типы данных SQL/89
Тип данных SQL/89 |
Определяемые данные |
CHARACTER(n) или CHAR(n) |
символьные строки с постоянной длиной n |
NUMERIC[(n,m)], DECIMA[(n,m)] или DEC[(n,m)] |
точные числа, здесь n – общее число цифр в числе; m – количество цифр слева от десятичной точки |
INTEGER или INT |
целые числа |
SMALLINT |
целые числа меньшего диапазона |
REAL |
вещественные числа в форме с плавающей точкой |
FLOAT[(n)] |
вещественные числа большой точности в форме с плавающей точкой, здесь n – общее число байт, отводимое на хранение чисел |
DOUBLE PRECISION |
вещественные числа большой точности в форме с плавающей точкой |
В стандарте SQL/92 добавлены типы данных:
VARCHAR(n) – строки символов переменной длины;
BIT(n) – строки битов постоянной длины;
DATE – календарная дата;
INTERVAL – временной интервал и др.
Заметим еще, что в большинстве реализаций SQL поддерживаются некоторые дополнительные типы данных, например, TIME, INTERVAL, MONEY. Некоторые из этих типов специфицированы в стандарте SQL/92, но в текущих реализациях синтаксические и семантические свойства таких типов могут различаться.
Конкретными реализациями SQL поддерживаются собственные наборы типов данных и встроенных функций, позволяющих выполнять обработку данных числового и строкового типов. Определены арифметические операции: + | - | * | /
В качестве удобного примера при дальнейшем рассмотрении реализации операторов SQL будем использовать учебную БД условной торговой фирмы «ЗАКАЗЫ» (пример взят у М. Грабера [3]). БД состоит из трех таблиц (таблицы 4.2-4.4). Для продавцов заданы: номер – SNUM; имя – SNAME; город, в котором он живет, - CITY; комиссионные, которые он получает с каждого оформленного заказа, - COMM. Для заказчиков заданы: номер – CNUM; имя – CNAME; город, в котором он живет, - CITY; номер продавца, который обслуживает данного заказчика, - SNUM. Для заказов (здесь они названы порядками) заданы: номер – ONUM; сумма заказа – AMT; дата оформления заказа – ODATE; номер заказчика, который оплатил данный заказ, - CNUM; номер продавца, который обслуживает данный заказ, - SNUM. Приняты следующие соглашения:
один продавец может обслуживать несколько заказчиков;
один заказчик работает только с одним продавцом данной фирмы.
Таблица 4.2 - Продавцы
SNUM |
SNAME |
CITY |
COMM |
1001 |
Пил |
Лондон |
0.12 |
1002 |
Серенс |
Мехико |
0.13 |
1004 |
Мотье |
Лондон |
0.11 |
1007 |
Рифкин |
Барселона |
0.15 |
1003 |
Аксельрод |
Париж |
0.10 |
Таблица 4.3 - Заказчики
CNUM |
CNAME |
CITY |
RATING |
SNUM |
2001 |
Хофман |
Лондон |
100 |
1001 |
2002 |
Джованни |
Рим |
200 |
1003 |
2003 |
Луи |
Мехико |
200 |
1002 |
2004 |
Грасс |
Берлин |
300 |
1002 |
2006 |
Клеменс |
Лондон |
100 |
1001 |
2008 |
Киснерос |
Мехико |
300 |
1007 |
2007 |
Перера |
Рим |
100 |
1004 |
Таблица 4.4 - Порядки
ONUM |
AMT |
ODATE |
SNUM |
SNUM |
3001 |
18.67 |
10/03/2003 |
2008 |
1007 |
3003 |
767.19 |
10/03/2003 |
2001 |
1001 |
3002 |
1900.10 |
10/03/2003 |
2007 |
1004 |
3005 |
5160.45 |
10/03/2003 |
2003 |
1002 |
3006 |
1098.16 |
10/03/2003 |
2008 |
1007 |
3009 |
1713.23 |
10/04/2003 |
2002 |
1003 |
3007 |
75.76 |
10/04/2003 |
2004 |
1002 |
3008 |
4723.00 |
10/05/2003 |
2006 |
1001 |
3009 |
1309.95 |
10/06/2003 |
2004 |
1002 |
3011 |
9891.88 |
10/06/2003 |
2006 |
1001 |