Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
23
Добавлен:
01.05.2014
Размер:
526.34 Кб
Скачать

Элементы языка SQL

Средства определения схемы БД

Ограничения целостности

Ограничения целостности бывают двух видов:

Накладываемые на отдельный столбец;

Накладываемые на всю таблицу.

При наложении на отдельный столбец :

TOVAR VARCHAR(20) NOT NULL PRIMARY KEY, …

При наложении ограничений на таблицу :

CREATE TABLE … (

TOVAR VARCHAR(20) NOT NULL

PRIMARY KEY (TOVAR) );

Элементы языка SQL

Средства определения схемы БД

Первичные и уникальные (альтернативные) ключи

На уровне столбцов:

CREATE TABLE VLADLIM (

KODVLAD INTEGER NOT NULL PRIMARY KEY, NAZVVLAD VARCHAR(50) NOT NULL UNIQUE

);

На уровне таблицы:

CREATE TABLE VLADLIM ( KODVLAD INTEGER NOT NULL,

NAZVVLAD VARCHAR(50) NOT NULL, PRIMARY KEY ( KODVLAD),

UNIQUE ()NAZVVLAD) );

Элементы языка SQL

Средства определения схемы БД

Внешний ключ и определение ссылочной целостности

Внешний ключ строится в дочерней таблице. Описание формата:

[CONSTRAINT <имя ссылочной целостности>] FOREIGN KEY ( <список столбцов внешнего ключа>) REFERENCES <имя родительской таблицы>

[ <список столбцов родительской таблицы > ]

[ON DELETE { NO ACTION | CACADE | SET DEFAULT | SET NULL}] [ON UPDATE { NO ACTION | CACADE | SET DEFAULT | SET NULL}]

Элементы языка SQL

Средства определения схемы БД

Внешний ключ и определение ссылочной целостности

Пример:

CREATE TABLE P (

PK_FIELD INTEGER NOT NULL, OTHER FIELD INTEGER,

PRIMARY KEY (PK_FIELD)

);

 

CREATE TABLE F (

 

PK_FIELD1

INTEGER NOT NULL,

PK_FIELD2

INTEGER NOT NULL,

SOME_FIELD INTEGER,

PRIMARY KEY (PK_FIELD1,PK_FIELD2),

FOREIGN KEY (PK_FIELD1) REFERENCES P

ON UPDATE CASCADE

);

Элементы языка SQL

Средства определения схемы БД

Требования к значениям столбцов

Примеры фрагментов ограничений:

CREATE TABLE PERSON _PARAMS ( ID_INTEGER NOT NULL PRIMARY KEY, HEIGHT INTEGER NOT NULL,

WIEGHT INTEGER NOT NULL CHECK (HEIGHT > WIEGHT)

);

---------------------------------------------------------------------------------

CREATE TABLE RASHOD (

CONSTRAINT PO_DATE_RASH

CHECK (EXISTS (SELECT TOVAR FROM PRIHOD

WHERE PROHOD.TOVAR=RASHOD.TOVAR))

);

------------------------------------------------------------------------------

-Столбец должен содержать сочетание символов USD

….CHECK (STOLBEZ CONTAINING “USD”)

-Столбец должен начинаться с сочетания символов USD

…. CHECK (STOLBEZ STARTING WITH “USD”)

Элементы языка SQL

Средства определения схемы БД

Изменение объявлений таблицы

Оператор ALTER TABLE позволяет:

1.Добавить определение нового столбца

ALTER TABLE <имя таблицы> ADD <определение столбца>;

2.Удалить столбец из таблицы

ALTER TABLE <имя таблицы> DROP <имя столбца1> [,<имя столбца2>…

3 . Удалить атрибуты целостности таблицы или отдельного столбца

ALTER TABLE <имя таблицы> DROP <имя ограничения целостности>

4.Добавить новые ограничения целостности

ALTER TABLE <имя таблицы> ADD [CONSTRAINT <имя ограничения>] <определение целостности>;

Элементы языка SQL

Средства определения схемы БД

Удаление таблицы

Удаление таблицы целиком:

DROP TABLE <имя таблицы>

Элементы языка SQL

Работа с индексами

Логическое разделение на ключи индексы

Логический уровень

Первичный ключ выполняет функцию однозначной идентификации записи в таблицы. Первичный и внешний ключи строятся для обеспечения ссылочной целостности реляцинно-связанных таблиц.

Индексы служат для сортировок и оптимизации доступа к данным

Физический уровень

Все ключи и индексы преобразуются в физические индексы - специальный механизм, обеспечивающий быстрый доступ к данным.

Элементы языка SQL

Необходимость создания индексов

Индексы необходимо создавать в случае, когда по столбцу или группе столбцов:

Часто производится поиск в БД;

Часто строятся объединения таблиц;

Часто производится сортировка;

Часто производится сортировка;

Не рекомендуется строить индексы по столбцам или группам столбцов, которые:

Редко используются для поиска, объединения , сортировки результатов запроса

Часто меняют значение, что приводит к необходимости часто обновлять индекс и способно существенно замедлить скорость работы с БД;

Содержит небольшое число вариантов значения

Элементы языка SQL

Работа с индексами

Логическое разделение на ключи индексы

Пример:

CREATE TABLE SOTR (

ID_SOTR INTEGER NOT NULL,

OTDEL VARCHAR (10),

DOLGNOST CHAR (10),

FIO VARCHAR(25),

PRIMARY KEY (ID_SOTR));

CREATE INDEX DLJ ON SOTR (DOLGNOST);

Именоваться индексы будут так :

DLJ INDEX ON SOTR (DOLGNOST)

RDB$PRIMARY18 UNIQUE INDEX ON SOTR (ID_SOTR)

Соседние файлы в папке Презентации по технологиям БД