В некотором университете на математическом
Пример 6
. В некотором университете на математическом факультете учатся студенты Иванов, Петров и Сидоров. Лекции им читают преподаватели Пушников, Цыганов и Шарипов, причем известны следующие факты:
- Пушников читает лекции по алгебре и базам данных, соответственно, 40 и 80 часов в семестр.
- Цыганов читает лекции по геометрии, 50 часов в семестр.
- Шарипов читает лекции по алгебре и геометрии, соответственно, 40 и 50 часов в семестр.
- Студент Иванов посещает лекции по алгебре у Шарипова и по базам данных у Пушникова.
- Студент Петров посещает лекции по алгебре у Пушникова и по геометрии у Цыганова.
- Студент Сидоров посещает лекции по геометрии у Цыганова и по базам данных у Пушникова.
Для того чтобы формально описать данную ситуацию (например, в целях разработки информационной системы, учитывающей данные о ходе учебного процесса), введем три множества:
- Множество преподавателей
- Множество предметов
- Множество студентов
Имеющиеся факты можно разделить на две группы. 1 группа (факты 1-3) - факты о преподавателях, 2 группа (факты 4-6) - факты о студентах.
Для того чтобы отразить факты 1-3 (характеризующие преподавателей и читаемые ими лекции), введем отношение
, где
тогда и только тогда, когда преподаватель
в количестве
удобно представить в виде таблицы:
Пример 6
. Пусть дано отношение
Пример 6
. Атрибут "Возраст сотрудника" в таблице "Спецподразделение", может иметь дополнительное ограничение " Возраст сотрудника не менее 25 и не более 45", помимо того, что этот атрибут уже имеет ограничение, определяемое доменом - "Возраст сотрудника не менее 18 и не более 65".
Приведенное ограничение кортежа, по сути, является дополнительным ограничением на значения одного атрибута. В этом случае допустимы два решения. Можно объявить новый домен "Возраст сотрудника спецподразделения" и тогда ограничение кортежа становится ограничением домена и атрибута, либо рассматривать это ограничение именно как ограничение кортежа. Оба решения имеют свои положительные и отрицательные стороны.
Замечание. Тут имеются некоторые возможности для оптимизации. Формально, при изменении значения данного атрибута необходимо проверить два ограничения - ограничение атрибута и ограничение кортежа. Но в данном случае ограничение кортежа сильнее ограничения атрибута и достаточно проверить только ограничение кортежа. Разумно построенная СУБД могла бы выявлять такие случаи и уменьшать лишнюю работу.