Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник EXCEL БД SQL.doc
Скачиваний:
2
Добавлен:
26.11.2018
Размер:
2.62 Mб
Скачать

Правила целостности

Два правила целостности для РБД .

  1. Целостность по сущностям: не допускается, чтобы столбец первичного ключа какой-либо таблицы содержал неопределенное значение (null).

  2. Целостность по ссылкам: если таблица Т2 содержит внешний ключ fk, соответствующий первичному ключу pk другой таблицы Т1, то каждое значение fk в Т2 должно:

    • либо быть равным значению pk для некоторой строки таблицы Т1,

    • либо быть неопределенным (иметь значение null).

На Рис.11 и Рис. 12. представлены две одинаковых БД для каждой из которых

  • первичным ключом является поле Код_Факультета таблицы Факультеты,

  • вешним ключом, поле Код_Факультета таблицы Студенты.

На Рис. 11. правила целостности соблюдены

На Рис. 12. правила целостности нарушены (pk имеет null и значения fk 7 и 13, не соответствуют ни одному значениям pk)

Факультеты Факультеты

Код_Факультета

Факультет

Код_Факультета

Факультет

1

ЭФ

1

ЭФ

2

ВМК

2

ВМК

3

ФФ

null

ФФ

4

ФФ

4

ФФ

5

ММ

5

ММ

Студенты Студенты

Код_Факультета

Фамилия

Код_Факультета

Фамилия

5

Четин

5

Четин

3

Яшин

3

Яшин

3

Круглов

3

Круглов

1

Самарин

1

Самарин

Ракунов

7

Ракунов

4

Певцов

4

Певцов

4

Москвин

4

Москвин

5

Романов

13

Романов

3

Паршин

3

Паршин

Рис. 11. Рис.12.

Правила целостности соблюдены. Правила целостности нарушены.

Правила внешних ключей

Под целостностью реляционной БД (в дальнейшем РБД) следует понимать выполнение одного из двух правил:

  1. Каскадное удаление

  2. Ограниченное удаление

Каскадное удаление: при удалении строки из таблицы Т1 удаляются также все строки из таблицы Т2, соответствующие строке из Т1 по внешнему ключу.

Ограниченное удаление: при попытке удаления строки из таблицы Т1 проверяется наличие в таблице Т2 строк, соответствующих строке из Т1 по внешнему ключу. Если такие строки в таблицах Т2 имеются, то удаление отвергается.

Пример каскадного удаления. Рис. 13

Пусть из таблицы «Факультеты», удаляется строка с кодом факультета 3 (pk) Это приводит к удалению из таблицы «Студенты», всех записей у которых внешний ключ равен 3 (fk)

Факультеты Факультеты

Код_Факультета

Факультет

Код_Факультета

Факультет

1

ЭФ

1

ЭФ

2

ВМК

2

ВМК

3

ФФ

4

ФФ

4

ФФ

5

ММ

5

ММ

Студенты Студенты

Код_Факультета

Фамилия

Код_Факультета

Фамилия

5

Четин

5

Четин

3

Яшин

1

Самарин

3

Круглов

1

Ракунов

1

Самарин

4

Певцов

1

Ракунов

4

Москвин

4

Певцов

5

Романов

4

Москвин

5

Романов

3

Паршин

Рис. 13.

Аналогично формулируются правила обновления данных в таблицах РБД.