Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD / Labs / Russian / Lab2R-Integrity constraints.doc
Скачиваний:
31
Добавлен:
20.02.2016
Размер:
235 Кб
Скачать
☆

3.Задание

Создайте следующие таблицы с указанными ограничениями целостности:

ВНИМАНИЕ. Наша база данных имеет структуру с так называемыми рекурсивными определениями референциальных ссылок. Имеется в виду следующее: таблица TEACHER ссылается на DEPARTMENT, которая, в свою очередь, ссылается на таблицу FACULTY. В то же самое время таблицы DEPARTMENT и FACULTY ссылаются на TEACHER. В связи с эти определение этих таблиц следует произвести следующим образом:

- Сначала определяются таблицы FACULTY и DEPARTMENT, причем их столбцы DeanFK и HeadFK (которые должны ссылаться на таблицу FACULTY) определяются без их ссылок (то есть без фраз REFERENCES)

- .Затем определяется таблица FACULTY (со ссылкой на таблицу DEPARTMENT)

- Наконец, с помощью предложения ALTER TABLE производится доопределение столбцов DeanFK и HeadFK с указанием внешних ключей на таблицу TEACHER. DeanFK HeadFK

Примечание. В терминах языке ER-моделирования наша база данных имеет следующую структуру:

Имя таблицы

Имя столбца

Тип данных столбца

Длина

(точность)

Масш­таб

Назначение и ограничения целостности столбца

FACULTY

FacPK

integer

Первичный ключ таблицы FACULTY

Name

varchar2

50

Название факультета; уникальное, не может быть NULL

DeanFK

integer

Декан факультета. Внешний ключ, ссылающийся на TchPK в TEACHER. Если удаляется преподаватель, являющийся деканом, то ссылка на него устанавливается в NULL.

Building

char

2

Корпус, в котором располагается деканат факультета. Принимает значения ’1’, ’2’, ’3’, ’4’, ’5’, ’6’, ’7’, ’8’, ’9’, ’10’

Fund

number

9

2

Фонд финансирования факультета. Принимает значения больше 100000.00

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

DEPARTMENT

DepPK

integer

Первичный ключ таблицы

FacFK

integer

Факультет кафедры. Внешний ключ, ссылаю­щи­йся на FacPK в FACULTY. Нельзя удалить факультет, если на нем имеется хотя бы одна кафедра.

Name

varchar2

50

Название кафедры. Не может быть NULL

HeadFK

integer

Заведующий кафедры. Внешний ключ, ссылающийся на TchPK в TEACHER. Если удаляется преподаватель, являющийся зав. кафедрой, то ссылка на него устанавливается в NULL.

Building

char

3

Корпус, в котором располагается кафедра Принимает значения из списка ’1’, ’2’, ’3’, ’4’, ’5’, ’6’, ’7’, ’8’, ’9’, ’10’

Fund

number

8

2

Фонд финансирования кафедры. Принимает значения в диапазоне 20000.00- 100000.00

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

Пара столбцов (FacFK,name) уникальна (то есть на факультете не может быть кафедр с повторяющимися названиями)

TEACHER

TchPK

integer

Первичный ключ таблицы

DepFK

integer

Кафедра, на которой работает преподаватель, Внешний ключ, ссылающийся на DepPK в DEPARTMENT. Если удаляется кафедра, то автоматически устанавливаются в NULL все ссылки на нее.

Name

varchar2

50

Фамилия преподавателя. Не может быть NULL

Post

varchar2

15

Должность преподавателя Принимает значения из списка: ассистент, преподаватель, доцент, профессор

Tel

char

7

Рабочий телефон преподавателя

Hiredate

date

Дата приема на работу. Должна быть больше 01.01.1950; не может быть NULL

Salary

number

6

2

Ставка. Должна быть больше 1000, не может быть NULL

Commission

number

6

2

Надбавка к ставке. Значение по умолчанию равно 0. Не может быть отрицательной.

ChiefFK

Integer

Непосредственный руководитель преподавателя. Внешний ключ, ссылающийся на первичный ключ TchPK таблицы TEACHER. Если удаляется преподаватель, то все ссылки на него как на руководителя устанавливаются в NULL.

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

a) Commission должно быть по крайне мере в два раза меньше, чем Salary

b) Salary + Commission должен находиться в диапазоне 1000 - 3000

с) ChiefFK не должен быть равен TchPK (то есть преподаватель не может быть руководителем самого себя)

SGROUP

GrpPK

integer

Первичный ключ таблицы

DepFK

integer

Кафедра группы. Внешний ключ, ссылающийся на DepPK в DEPARTMENT. При удалении кафедры все ссылки не нее становятся NULL.

Course

number

1

Курс группы. Принимает значения из списка: 1, 2, 3, 4, 5, 6

Num

number

3

Номер группы. Принимает значения больше 0 и меньше 700

Quantity

number

2

Количество студентов в группе. Принимает значения в интервале 1 – 50

Curator

integer

Куратор группы Внешний ключ, ссылающийся на TchPK в TEACHER. При удалении преподавателя все ссылки на него как на куратора становятся NULL.

Rating

number

3

Рейтинг группы. Значение по умолчанию равно 0 Принимает значения в диапазоне 0–100.

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

Пара значений столбцов (DepFK, Num) является UNIQUE (то есть на одной кафедре не могут быть группы с одинаковыми номерами)

Пара значений столбцов внешних ключей (DepFK, Curator) является уникальной. То есть один и тот же преподаватель не может быть куратором более, чем одной группы на одной кафедре)

SUBJECT

SbjPK

integer

Первичный ключ таблицы

Name

varchar2

50

Название дисциплины. Должно быть уникальным и не равным NULL

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

ROOM

RomPK

integer

Первичный ключ таблицы

Num

number

4

Номер аудитории. Не может принимать значение NULL

Seats

number

3

Количество место в аудитории Принимает значения в интервале 1 - 300

Floor

number

2

Этаж аудитории Принимает значения в интервале 1 - 16

Building

char

5

Корпус аудитории. Не может принимать значение NULL. Принимает значения из списка ’1’, ’2’, ’3’, ’4’, ’5’, ’6’, ’7’, ’8’, ’9’, ’10’

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

Пара значений столбцов (Num, Building) является уникальной (то есть в одном корпусе на могут быть аудитории с одинаковыми номерами)

LECTURE

TchFK

integer

Преподаватель. Внешний ключ, ссылающийся на TchPK в TEACHER. При удалении преподавателя все ссылки на него устанавливаются в NULL.

GrpFK

integer

Группа. Внешний ключ, ссылающийся на GrpPK в SGROUP. При удалении группы удаляются все лекции, читаемые этой группе.

SbjFK

integer

Дисциплина Внешний ключ, ссылающийся на SbjPK в SUBJECT. Дисциплина не может быть удалена до тех пор, пока не удалены все лекции, читаемые по этой дисциплине.

RomFK

integer

Аудитория. Внешний ключ, ссылающийся на RomPK в ROOM. При удалении аудитории все ссылки на нее устанавливаются в NULL.

Type

varchar2

15

Тип занятия. Принимает значения из списка: лекция, лабораторная, семинар, практика.

Не может быть NULL

Day

char

3

День недели. Принимает значения из списка: пон, втр, срд, чет, пят, суб, вск.

Не может быть NULL

Week

number

1

Неделя. Принимает значения 1 или 2.

Не может быть NULL

Lesson

number

1

Занятие (пара) Принимает значения в интервале 1 – 8.

Не может быть NULL

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

Столбцы (GrpFK, Day, Week, Lesson) в совокупности являются UNIQUE (то есть у одной группы не может быть два различных занятия на одной и той же паре одного и того же дня недели и одной и той же недели)

Столбцы ((TchFK, Day, Week, Lesson) в совокупности являются UNIQUE (то есть, то же самое имеет место и для преподавателя)

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