Языки манипулирования данными. Карепова Е.Д. - 23 стр.

UptoLike

Составители: 

45
CHECK (<булево выражение>)
Здесь <булево выражение> допускает ссылки на несколько столбцов
таблицы.
Если в разных столбцах или таблицах встречаются одинаковые ог-
раничения, то удобно ввести поименованные правила, которые называются
ограничениями на уровне доменов. Эти правила аналогичны понятию доме-
на в теории РБД и близки к понятию «пользовательский тип данных» в язы-
ках программирования. Синтаксис определения именованного ограничения
следующий.
CONSTRAINT <имя_ограничения> <тип_ограничения> <выражение>
Тип ограничения может быть может быть одним из NOT NULL,
UNIQUE, DEFAULT, PRIMARY KEY, FOREING KEY, CHECK.
В конце приведем описание структуры таблиц БД Успеваемость.
CREATE SCHEMA Успеваемость_Студентов (
CONSTRAINT ID_TYPE CHARACTER(3)
CHECK (VALUE IS NOT NULL)
CONSTRAINT MARK_TYPE INT(2) DEFAULT 2
CHECK (@MARK_TYPE>1 AND @MARK_TYPE<=5)
CREATE TABLE СТУДЕНТ (
ID_Stud ID_TYPE PRIMARY KEY,
СФам CHARACTER(25) DEFAULT ‘Иванов И.И.’,
САдрес CHARACTER(30),
Консультант CHARACTER(3) DEFAULT IS NULL
)
CREATE TABLE КУРС (
ID_Subj ID_TYPE PRIMARY KEY,
Наименование CHARACTER(20) DEFAULT ‘Базы данных
CHECK (Наименование IN (‘Высшая математика’,
Базы данных’, ‘Физика’),
)
CREATE TABLE УСПЕВАЕМОСТЬ (
ID_Stud ID_TYPE,
ID_Subj ID_TYPE,
Семестр INT(2) DEFAULT 1
CHECK (@Семестр>=1 AND Семестр <=11),
Оценка MARK_TYPE,
PRIMARY KEY (ID_Stud, ID_Subj, Семестр)
FORIENG KEY ID_Stud REFERENCES СТУДЕНТ
ON DELETE CASCADE
FORIENG KEY ID_Subj REFERENCES КУРС
ON DELETE CASCADE
))
46
В таблице СТУДЕНТ для поля Консультант не описано ограничение
рекурсивного внешнего ключа, поскольку на момент создания таблицы
СТУДЕНТ эта таблица еще не существует. Объявить это ограничение можно
позднее с помощью оператора ALTER TABLE.
Изменение структуры таблиц
В теории РБД не предполагается внесение каких-либо изменений в
структуру таблицы после ее создания, однако большинство коммерческих
реализаций позволяют это делать. Общий синтаксис операторов изменения
структуры таблицы следующий.
Синтаксис:
ALTER TABLE <имя_таблицы>
{ADD <определение_столбца> |
ALTER <имя_столбца> {SET DEFAULT <значение> |
DROP DEFAULT} |
DROP < имя_столбца > {CASCADE | RESTRICT} |
ADD {<определение первичного ключа>} |
<определение внешнего ключа> |
<условие уникальности данных> |
<условие проверки>} |
DROP CONSRAINT имя_условия {CASCADE | RESTRICT}
}
В качестве примера добавим рекурсивный внешний ключ в таблицу
СТУДЕНТ.
ALTER TABLE СТУДЕНТ
ADD CONSTRAINT FK_Kons FOREING KEY (Консультант)
REFERENCES СТУДЕНТ(ID_Stud) ON DELETE SET NULL
ПРЕДСТАВЛЕНИЯ
Представление (View) – это запрос на выборку, который пользователь
воспринимает как некоторое виртуальное отношение. Задание представлений
входит в описание схемы РБД. Представления позволяют скрыть несущест-
венные или нежелательные детали для разных пользователей, модифициро-
вать реальные структуры данных в удобном для приложения виде, разграни-
чивать права доступа к данным.
Оператор определения представления имеет следующий вид:
Синтаксис:
CREATE VIEW <имя_представления> [<список_столбцов>]
AS <SQL-запрос>
Если список столбцов не указан, то в представление войдут все столб-
цы из запроса, на основе которых оно создано, с соответствующими имена-
ми. В SQL-запросе можно использовать вычисляемые поля, группировки,
подзапросы, однако при этом следует учитывать ограничения, отражающие