3.1. CREATE TABLE S
(НОМЕР_ПОСТАВЩИКА CHAR(5) NOT NULL,
ФАМИЛИЯ CHAR(20),
СОСТОЯНИЕ SMALLINT,
ГОРОД CHAR(15));
S | НОМЕР_ПОСТАВЩИКА | ФАМИЛИЯ | СОСТОЯНИЕ | ГОРОД |
S1 S2 S3 S4 S5 | Смит Джонс Блейк Кларк Адамс | Лондон Париж Париж Лондон Атенс |
P | НОМЕР_ДЕТАЛИ | НАЗВАНИЕ | ЦВЕТ | BEС | ГОРОД |
Р1 Р2 РЗ Р4 Р5 Р6 | Гайка Болт Винт Винт Кулачок Блюм | Красный Зеленый Голубой Красный Голубой Красный | Лондон Париж Рим Лондон Париж Лондон |
J | НОМЕР_ИЗДЕЛИЯ | НАЗВАНИЕ | ГОРОД |
J 1 J2 J3 J4 J5 J6 J7 | Сортировщик Перфоратор Считыватель Консоль Сортировочно-подборочная машина Терминал Лента | Париж Рим Атенс Атенс Лондон Осло Лондон |
SPJ | НОМЕР_ПОСТАВЩИКА | НОМЕР_ ДЕТАЛИ | НОМЕР_ ИЗДЕЛИЯ | КОЛИЧЕСТВО |
S1 S1 S2 S2 S2 S2 S2 S2 S2 S2 S3 S3 S4 S4 S5 S5 S5 S5 S5 S5 S5 S5 S5 S5 | Р1 Р1 РЗ РЗ РЗ РЗ РЗ РЗ РЗ Р5 РЗ Р4 Р6 Р6 Р2 Р2 Р5 Р5 Р6 Р1 РЗ Р4 Р5 Р6 | J1 J4 J1 J2 J3 J4 J5 J6 J7 J2 J1 J2 J3 J7 J2 J4 J5 J7 J2 J4 J4 J4 J4 J4 |
Рис. 3.1. База данных поставщиков, деталей, изделий
|
|
CREATE TABLE P
(НОМЕР_ДЕТАЛИ CHAR(6) NOT NULL,
НАЗВАНИЕ CHAR(20),
ЦВЕТ CHAR(7),
ВЕС SMALLINT,
ГОРОД СHAR(15));
CREATE TABLE J
(НОМЕР_ИЗДЕЛИЯ CHAR(4) NOT NULL,
НАЗВАНИЕ CHAR(10),
ГОРОД CHAR(15));
CREATE TABLE SPJ
(НОМЕР_ПОСТАВЩИКА CHAR(5) NOT NULL,
НОМЕР_ДЕТАЛИ CHAR(6) NOT NULL,
НОМЕР_ИЗДЕЛИЯ CHAR(4) NOT NULL,
КОЛИЧЕСТВО INTEGER);
3.2. CREATE UNIQUE INDEX XS ON S (НОМЕР_ПОСТАВЩИКА);
CREATE UNIQUE INDEX XP ON P (НОМЕР_ДЕТАЛИ);
CREATE UNIQUE INDEX XJ ON J (НОМЕР_ИЗДЕЛИЯ);
CREATE UNIQUE INDEX XSPJ ON SPJ (НОМЕР_ПОСТАВЩИКА.
НОМЕР_ДЕТАЛИ,
НОМЕР_ИЗДЕЛИЯ);
3.3. Достоинства индексов заключаются в следующем:
а) Они ускоряют прямой доступ, основанный на заданном значении для индексированного поля (комбинации полей). Без индекса потребовался бы последовательный просмотр.
б) Они ускоряют последовательный доступ, основанный на индексированном поле (комбинации полей). Без индекса потребовалась бы сортировка.
в) В системе DB2 индексы со спецификацией UNIQUE служат, в частности, для реализации ограничений уникальности. Недостатки индексов заключаются в следующем:
а) Они занимают пространство памяти в базе данных. В сильно индексированной базе данных это пространство легко может превысить тот объем пространства памяти, которое занимают сами данные.
б) В то время как индекс, вполне возможно, ускорит операции выборки данных, он будет вместе с тем замедлять операции обновления. Исполнение любого предложения INSERT или DELETE над индексированной таблицей или UPDATE по индексированному полю (комбинации полей) потребует сопутствующего обновления индекса.
3.4. Дела обстоят неважно. Система DB2 совсем не в такой мере обеспечивает независимость данных, в какой следовало бы.
ГЛАВА 4
МАНИПУЛИРОВАНИЕ ДАННЫМИ I:
ОПЕРАЦИИ ВЫБОРКИ ДАННЫХ