- •ЧАСТЬ I. Введение в реляционные базы данных
- •1. Структура реляционной базы данных
- •2. Целостность реляционных данных
- •2.3. Правила внешних ключей
- •3. Обработка данных
- •4. Проектирование РБД
- •4.4. Категоризация сущностей
- •4.5. Этапы проектирования
- •4.5.1. Логическое проектирование
- •4.5.2. Физическое проектирование
- •4.6. Условные обозначения, применяемые при проектировании РБД
- •4.7. Примеры проектов РБД
- •ЧАСТЬ И. Введение в язык SQL
- •5. Язык определения схемы (SDL)
- •5.1. Таблицы
- •6. Язык манипулирования данными (DML)
- •6.2. Запросы
- •Слисок литература
ЧАСТЬ И. Введение в язык SQL
SQL (Structured Query Language) - структурированный язык запросов. Этот язык был разработан в 1974 году фирмой IBM для экспериментальной реляционной СУБД System R. После появления на рынке двух пионерских СУБД этой фирмы - SQL/DS в 1981 году и DB2 в 1983 году - SQL приобрел статус стандарта де-факто для профессиональных реляционных СУБД. В 1987 году SQL стал международным стандартом языка баз данных, а в 1992 году вышла вторая версия этого стандарта - ANSI 92 (SQL-92), принятого американским национальным институтом стандартов (ANSI) и международной организацией стандартов (ISO).
Составляющими SQL являются:
язык определения схемы (Scheme Definition Language) - SDL, который содержит команды создания, изменения и удаления объектов РБД: таблиц, индексов, ограничений и др.;
язык манипулирования данными (Data Manipulation Language) - DML, который содержит команды добавления, изменения, удаления и поиска данных. Составной частью DML являются запросы.
Ниже кратко изложены основы языка SQL, при этом используются следующие термины.
Список столбцов - имена столбцов, разделенные запятыми. В качестве списка всех столбцов может быть использован символ Вместе с именами столбцов могут быть использованы их алиасы (от англ, alias - псевдоним).
Алиас - необязательное краткое название (псевдоним) таблицы или столбца, которое указывается рядом с названием таблицы или столбца и отделяется пробелом, например: table4 t4, field7 f7. Алиас таблицы может быть использован в именах столбцов этой таблицы (при этом он отделяется точкой), например: tl .fieldid, t2.field_id. Использование алиаса таблиц особенно важно в тех случаях, когда названия первичного ключа одной таблицы и соответствующего ему внешнего ключа другой таблицы совпадают.
Предикат - логическое выражение.
Значение - конкретное число, символьная строчка (в двойных или одинарных кавычках), дата (в двойных или одинарных кавычках) и т. д.
Более подробную информацию о языке SQL можно найти в [1,2,3,4,8].
5. Язык определения схемы (SDL)
Объектами РБД называются составные части РБД, информацию о которых необходимо хранить в РБД: таблицы (table), индексы (index), ограничения (constraints) и др.
5.1. Таблицы
Таблицы определяются с помощью команды CREATE TABLE, которая создает пустую таблицу и формирует состав и тип данных отдельных столбцов, а
также ограничения на данные и ограничения, которые обеспечивают так называемую декларативную целостность.
Синтаксис команды создания таблицы:
CREATE TABLE <имя таблицы> (
<имя столбца> <тип даиных> [(размер)] [ограничения],
[ограничения (<список столбцов>)]
)
типы данных - INTEGER, CHARACTER, DECIMAL, DATE и др.; размер - если не указан, подставляется по умолчанию; ограничения - ограничения на значения столбца:
NOT NULL - запрет null значений; UNIQUE - уникальное значение;
PRIMARY KEY - ограничение первичного ключа;
CHECK (предикат) - условие размещения данных; DEFAULT = <значение> - значение столбца по умолчанию;
FOREIGN KEY <список столбцов> REFERENCES <имя таблицы> [(список столбцов)] - ограничения внешнего ключа.
Например, для создания таблицы "Деятельность" в РБД "Партнеры" (рис. 9 и 10) необходимо выполнить следующую команду:
CREATE TABLE Деятельность
(
номер_деятельности INTEGER,
номерфирмы |
INTEGER NOT NULL, |
название |
CHAR(40) NOT NULL, |
CONSTRAINT деятельность_пк PRIMARY KEY (номер_деятельности), CONSTRAINT деятельность__вк1 FOREIGN KEY (номер фирмы) REFERENCES Фирма ON UPDATE CASCADE ON DELETE CASCADE, CONSTRAINT деятельность_ак1 UNIQUE (номер_фирмы, название)
)
Удалить можно только пустую таблицу. Синтаксис команды удаления таблицы:
DROP TABLE <имя таблицы>
Например:
DROP TABLE Деятельность
5.2.Индексы
Индексы - упорядоченные списки содержимого столбцов в таблице. Основным преимуществом использования индексов [3] является значительное
ускорение процесса выборки или извлечения данных, а основным недостатком - замедление процесса обновления данных.
Фирма |
|
|
|
Деятельность |
|
|
|
Номер |
Название |
Город |
Капитал |
Номер |
Номер |
Название |
|
фирмы |
деятельности |
фирмы |
|||||
|
|
|
|
||||
1 |
Эрнест |
Москва |
4 000 000 |
1 |
3 |
Торговля |
|
2 |
Спецстрой |
Омск |
|
2 |
4 |
Производство |
|
3 |
Квант |
Мурманск |
500 000 |
3 |
1 |
Аудит |
|
4 |
Вега |
Москва |
2 200 000 |
4 |
3 |
Производство |
|
|
|
Сотрудник |
|
|
|
|
|
|
|
Номер |
ФИО |
Должность |
Номер |
|
|
|
|
сотрудника |
фирмы |
|
|||
|
|
1 |
Иванов И.И. |
директор |
1 |
|
|
|
|
2 |
Сидорова М.Н. |
гл. бухгалтер |
1 |
|
|
|
|
3 |
Петров П.П. |
директор |
4 |
|
|
|
|
4 |
Антонов А.А. |
менеджер |
2 |
|
Рис. 9. Реляционная база данных "Партнеры"
Рис. 10. Проект реляционной базы данных "Партнеры"
Синтаксис команды создания индекса:
CREATE [UNIQUE] INDEX <имя индекса>
ON <имя таблицы> (<список столбцов>)
Например, для создания индекса на поле "Номер фирмы" в таблице "Фирмы" в РБД "Партнеры" (рис. 9 и 10) необходимо выполнить следующую команду:
CREATE INDEX Фирма_индекс_пк ON Фирма (номер фирмы)