Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Задание для аудиторного выполнения




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

ВНИМАНИЕ. Наша база данных имеет структуру с так называемыми рекурсивными определениями референциальных ссылок. Имеется в виду следующее: таблица 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   Название факультета; уникальное, не может быть NULL
DeanFK integer     Декан факультета. Внешний ключ, ссылающийся на TchPK в TEACHER. Если удаляется преподаватель, являющийся деканом, то ссылка на него устанавливается в NULL.
Building char   Корпус, в котором располагается деканат факультета. Принимает значения ’1’, ’2’, ’3’, ’4’, ’5’, ’6’, ’7’, ’8’, ’9’, ’10’
Fund number Фонд финансирования факультета. Принимает значения больше 100000.00
Ограничение целостности таблицы  
DEPARTMENT DepPK integer     Первичный ключ таблицы
FacFK integer     Факультет кафедры. Внешний ключ, ссылаю­щи­йся на FacPK в FACULTY. Нельзя удалить факультет, если на нем имеется хотя бы одна кафедра.
Name varchar2   Название кафедры. Не может быть NULL
HeadFK integer     Заведующий кафедры. Внешний ключ, ссылающийся на TchPK в TEACHER. Если удаляется преподаватель, являющийся зав. кафедрой, то ссылка на него устанавливается в NULL.
Building char   Корпус, в котором располагается кафедра Принимает значения из списка ’1’, ’2’, ’3’, ’4’, ’5’, ’6’, ’7’, ’8’, ’9’, ’10’
Fund number Фонд финансирования кафедры. Принимает значения в диапазоне 20000.00- 100000.00
Ограничение целостности таблицы Пара столбцов (FacFK,name) уникальна (то есть на факультете не может быть кафедр с повторяющимися названиями)
TEACHER TchPK integer     Первичный ключ таблицы
DepFK integer     Кафедра, на которой работает преподаватель, Внешний ключ, ссылающийся на DepPK в DEPARTMENT. Если удаляется кафедра, то автоматически устанавливаются в NULL все ссылки на нее.
Name varchar2   Фамилия преподавателя. Не может быть NULL
Post varchar2   Должность преподавателя Принимает значения из списка: ассистент, преподаватель, доцент, профессор
Tel char   Рабочий телефон преподавателя
Hiredate date     Дата приема на работу. Должна быть больше 01.01.1950; не может быть NULL
Salary number Ставка. Должна быть больше 1000, не может быть NULL
Commission number Надбавка к ставке. Значение по умолчанию равно 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, 2, 3, 4, 5, 6
Num number   Номер группы. Принимает значения больше 0 и меньше 700
Quantity number   Количество студентов в группе. Принимает значения в интервале 1 – 50
Curator integer     Куратор группы Внешний ключ, ссылающийся на TchPK в TEACHER. При удалении преподавателя все ссылки на него как на куратора становятся NULL.
Rating number   Рейтинг группы. Значение по умолчанию равно 0 Принимает значения в диапазоне 0–100.
Ограничение целостности таблицы Пара значений столбцов (DepFK, Num) является UNIQUE (то есть на одной кафедре не могут быть группы с одинаковыми номерами) Пара значений столбцов внешних ключей (DepFK, Curator) является уникальной. То есть один и тот же преподаватель не может быть куратором более, чем одной группы на одной кафедре)
SUBJECT SbjPK integer     Первичный ключ таблицы
Name varchar2   Название дисциплины. Должно быть уникальным и не равным NULL
Ограничение целостности таблицы  
ROOM RomPK integer     Первичный ключ таблицы
Num number   Номер аудитории. Не может принимать значение NULL
Seats number   Количество место в аудитории Принимает значения в интервале 1 - 300
Floor number   Этаж аудитории Принимает значения в интервале 1 - 16
Building char   Корпус аудитории. Не может принимать значение 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   Тип занятия. Принимает значения из списка: лекция, лабораторная, семинар, практика. Не может быть NULL
Day char   День недели. Принимает значения из списка: пон, втр, срд, чет, пят, суб, вск. Не может быть NULL
Week number   Неделя. Принимает значения 1 или 2. Не может быть NULL
Lesson number   Занятие (пара) Принимает значения в интервале 1 – 8. Не может быть NULL
Ограничение целостности таблицы Столбцы (GrpFK, Day, Week, Lesson) в совокупности являются UNIQUE (то есть у одной группы не может быть два различных занятия на одной и той же паре одного и того же дня недели и одной и той же недели) Столбцы ((TchFK, Day, Week, Lesson) в совокупности являются UNIQUE (то есть, то же самое имеет место и для преподавателя)
             

Контрольные вопросы

Дайте ответы на следующие вопросы:

1) Какова цель ограничений целостности?

2) Какие типы ограничений целостности вы знаете?

3) Какие синтаксические формы ограничений целостности вы знаете? В чем различие между ними?

4) Что означает ограничение UNIQUE? Что такое составной уникальный ключ? Какой синтаксис может использоваться для описания составного уникального ключа (синтаксис ограничения столбца или синтаксис ограничения таблицы)? Может ли столбец с ограничением UNIQUE принимать значения NULL? Можно ли одновременно устанавливать ограничения UNIQUE и PRIMARY KEY для одного и того же столбца (совокупности столбцов)?

5) Что означает ограничение PRIMARY KEY? Что такое составной первичный ключ? Какой синтаксис может использоваться для описания составного первичного ключа (синтаксис ограничения столбца или синтаксис ограничения таблицы)? Сколько первичных ключей может содержать таблица? Может ли столбец с ограничением PRIMARY KEY принимать значения NULL?

6) Что означает ограничение NULL (NOT NULL)? Какое значение по умолчанию принимается, если это ограничение не указывается явно? Можно ли задавать это ограничение в синтаксисе ограничения таблицы?

7) Что означает ограничение целостности FOREIGN KEY (референциальное ограничение целостности)? Определите следующие понятия: референциальный ключ, внешний ключ, родительская таблица, дочерняя таблица. Какие ограничением целостности должна обладать тот столбец (совокупность столбцов), на который делается ссылка из внешнего ключа? Можно ли определить референциальный ключ и внешний ключ в одной и той же таблице? Что означает составной внешний ключ? Какой синтаксис может использоваться для описания составного внешнего ключа (синтаксис ограничения столбца или синтаксис ограничения таблицы)? Можно ли определить внешний ключ в одним столбцом в синтаксисе ограничения таблицы? Можно ли использовать один и тот же столбец (совокупность столбцов) в качестве первичного ключа и внешнего ключа? Можно ли использовать один и тот же столбец (совокупность столбцов) в качестве внешнего ключа и уникального ключа? Можно ли несколько внешних ключей в одной таблице? Можно ли устанавливать значение NULL для вненего ключа (составного внешнего ключа)? Можно ли определить референциальное ограничение целостности в предложении CREATE TABLE, которое содержит фразу AS subquery? Можно ли при определении внешнего ключа опускать имена столбцов родительской таблицы? Что означает фраза ON DELETE в определении внешнего ключа? Что означает отсутствие фразы ON DELETE в определении внешнего ключа?

8) Что означает ограничение целостности CHECK? Когда условие ограничения CHECK считается выполненным (удовлетворяется)? Можно ли определить ограничение CHECK над несколькими столбцами в синтаксисе ограничения столбца? Можно ли задать несколько ограничений CHECK для одного столбца? Проверяет ли Oracle тот факт, что множество ограничений CHECK, сформулированных для одного столбца, являются взаимно исключающими? Можно ли определить ограничение CHECK над столбцами различных таблиц?


Поделиться:

Дата добавления: 2015-09-13; просмотров: 142; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты