Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая работа / bd / базы данных2222.rtf
Скачиваний:
241
Добавлен:
17.02.2014
Размер:
19.41 Mб
Скачать

7.1.1. Oписание на языке sql стандарта iso 1992 (sql2)

Если целевая СУБД поддерживает язык SQL в пределах стандарта ISO 1992, то реализация таблицы данных будет представлять собой относительно простую задачу. Например, реализация таблицы Property_for_Rent (Недвижимость_в_аренду) осуществляется с помощью серии операторов языка SQL: Листинг 1.

В приведенном в листинге 1. первичным ключом таблицы объявлен атрибут номера объекта — Pno. Средства SQL будут автоматически поддерживать уникальность значений этого атрибута. В таблице определены три внешних ключа, для каждого из которых указаны требуемые ограничения поддержки ссылочной целостности. Например, атрибут номера работника является внешним ключом таблицы, представляющим ее связь с таблицей Staff (Сотрудник). Для этого ключа установлено правило удаления (on delete SET NULL), указывающее, что в случае удаления некоторого номера работника из таблицы Staff (Сотрудник), соответствующие значения в атрибуте Sno таблицы Property_for_Rent (Недвижимость_в_аренду) должны быть заменены значением NULL. Атрибут номера владельца – Ono – является внешним ключом, представляющим ее связь с таблицей Owner (Владелец). Для этого ключа установлено правило обновления (on update CASCADE), указывающее, что в случае изменения некоторого номера владельца в таблице Owner (Сотрудник) соответствующие значения в атрибуте Ono Property_for_Rent (Недвижимость_в_аренду) должны быть заменены новым значением (т.е. обновлены каскадно). Кроме того, при описании таблицы указано несколько значений, присваиваемых некоторым атрибутам по умолчанию – например, атрибуту Туре (Вид) по умолчанию будет присваиваться значение 'F' (означающее "Flat" – "квартира").

Листинг 1. Операторы языка sql, предназначенные для создания таблицы

CREATE DOMAIN owner_ nuumber AS VARCHAR(S)

CHECK (VALUE IN(SELECT ono FROM owner))

CREATE DOMAIN staff_number AS VARCHAR(5)

CHECK (VALUE IN(SELECT sno FROM staff))

CREATE DOMAIN branch_number AS VARCHAR(3)

CHECK (VALUE IN(SELECT bno FROM ranch))

CREATE DOMAIN property_number AS VARCHAR(5)

CREATE DOMAIN street AS VARCHAR{25)

CREATE DOMAIN area AS VARCHAR(15)

CREATE DOMAIN city AS VARCHAR(IS)

CREATE DOMAIN post_code AS VARCHAR(8)

CREATE DOMAIN property_type AS СHAR(l)

CHECK(VALUE IN('B','C','D', 'E','F',"M","S"))

CREATE DOMAIN property_rooms AS SMALLINT

CHECK(VALUE BETWEEN 1 AND 15)

CREATE DOMAIN property_rent AS DECIMAL(6,2)

CHECK(VALUE BETWEEN 0 AND 9999)

CREATE TABLE property_for_rent{

pno PROPERTY_NUMBER NOT NULL,

Street STREET ' NOT NULL,

area AREA,

City CITY NOT NULL,

pcode POST_CODE,

type PROPERTY_TYPE NOT NULL DEFAULT 'F',

rooms PROPERTY_ROOMS NOT NULL DEFAULT 4,

rent PROPERTY_RENT NOT NULL DEFAULT 600,

ono OWNER_NUMBER NOT NULL,

sno STAFF_NUMBER,

bno BRANCH_NUMBER NOT NULL,

PRIMARY KEY (pno}

FOREIGN KEY (smo) REFERENCES staff on delete SET NULL

on update CASCADE

FOREIGN KEY (ono) REFERENCES owner on delete NO ACTION

on update CASCADE

FOREIGN KEY(bno) REFERENCES branch on delete NO ACTION

on update CASCADE

Соседние файлы в папке bd