Ссылочная целостность

ТИПЫ СВЯЗЕЙ МЕЖДУ ТАБЛИЦАМИ

РК

РК

РК

Таблица Успеваемость состоит из следующих полей:

Код отметки Номер зачетной книжки Код дисциплины Семестр Форма сдачи Отметка Дата сдачи Код преподавателя

РК FKFK FK

Таблица Дисциплины состоит из следующих полей:

Код дисциплины Название Программа Специальность

Таблица Преподаватели состоит из следующих полей:

Код преподавателя ФИО Код кафедры Должность Ученая степень Ученое звание

Таблица Кафедры состоит из следующих полей:

Код кафедры Название Код преподавателя (зав. кафедрой)

РК FK

Номер зачетной книжки у каждого студента индивидуален. Т.о. поле "Номер за­четной книжки" в таблице "Студенты" однозначно определяет студента, следова­тельно, это поле является ключевым полем таблицы "Студенты". Если требуется уз­нать успеваемость студента, следует найти значение идентификатора студента в поле "Номер зачётной книжки" таблицы "Успеваемость" и в найденных строках прочесть значение поля "Отметка". Иными словами, нужно связать две таблицы "Студенты и "Успеваемость" по полю "Номер зачетной книжки". Внешним ключом таблицы "Успеваемость" является поле "Номер зачетной книжки".

Все информационные объекты предметной области связаны между собой. Соот­ветствия, отношения, возникающие между объектами предметной области, называ­ются связями. Связанные отношениями таблицы взаимодействуют по принципу глав­ная, подчиненная. Возможны следующие отношения между таблица­ми:

1. Отношение «один – ко – многим»: одной записи из главной таблицы может соответствовать ноль, один или несколько записей подчинённой таблицы.

При связи «один – ко – многим» (обозначают 1:М) одному экземпляру информационного объекта А соответствует ноль, один или более экземпляров объекта В, но каждый экземпляр объекта В связан не более чем с 1 экземпляром объекта А. Графически данное соотношение имеет следующий вид:

А1 В1

А2 В2

А3 В3

А В

Пример. Установленный размер стипендии по результатам сессии может повторяться многократно для различных студентов, поэтому примером связи 1:М служит связь между информационными объектами стипендия и результаты сессии:

стипендия результаты сессии

2) стипендия сессия

2. Отношение «один – к - одному»: одной записи из главной таблицы соответствует только одна запись из подчинённой таблицы.

Связь «один – к – одному» (обозначают 1:1) предполагает, что в каждый момент времени одному экземпляру информационного объекта А соответствует не более одного экземпляра информационного объекта В и наоборот.

А1 В1

А2 В2

А3 В3

А В

Пример. Каждый студент за период обучения может выполнить только одну дипломную работу, поэтому примером связи 1:1 может служить связь между информационными объектами студент и дипломная работа:

студент дипломная

3. Отношение «многие – ко - многим». Связь «многие – ко – многим» (М:М) предполагает, что в каждый момент времени одному экземпляру информационного объекта А соответствует 0,1 или более экземпляров объекта В и наоборот.

А1 В1

А2 В2

А3 В3

А В

Пример. Один студент обучается у многих преподавателей, один преподаватель обучает многих студентов, поэтому примером связи М:М может служить связь между информационными объектами студент и преподаватель:

студент преподаватель

4. Отношение «многие – к - одному».

Группа связанных между собой таблиц называется схемой базы данных. Информацию о таблицах, их колонках (имена, тип данных, длина поля), первичных и внешних ключах, а также иных объектах базы данных, называют метаданными.

Одним из правил ссылочная целостность (referential integrity) является то, что первичный ключ любой таблицы должен содержать уникальные непустые значения для данной таблицы. Некоторые СУБД могут контролировать уникальность первичных ключей. Если СУБД контролирует уникальность первичных ключей, то при попытке присвоить первичному ключу значение, уже имеющееся в другой записи, СУБД сгенерирует диагностическое сообщение, обычно содержащее словосочетания primary key violation. Это сообщение в дальнейшем может быть передано в приложение, с помощью которого конечный пользователь манипулирует данными.

Если две таблицы связаны соотношением главная-подчиненная, внешний ключ подчинённой таблицы должен содержать только те значения, которые имеются среди значений первичного ключа главной задачи. Если корректность значений внешних ключей не контролируется СУБД, можно говорить о нарушении ссылочной целостности. В этом случае, если мы удалим из таблицы «Студенты» запись, имеющую хотя бы одну связанную с ней подчинённую запись в таблице «Успеваемость», то в таблице «Успеваемость» окажутся записи об успеваемости студентов, сданных неизвестно кем. Если же СУБД контролирует корректность значений внешних ключей, то при попытке присвоить внешнему ключу значение, отсутствующее среди значений первичных ключей главной таблицы, либо при удалении или модификации записей главной таблицы, приводящих к нарушению ссылочной целостности, СУБД сгенерирует сообщение, о котором говорилось выше.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: