Семантика и правила вставки, удаления и модификации
Поддержка согласованности данных после вставки, удаления и модификации данных в базе данных всегда представляет сложную проблему. Одна из основных причин заключается в том, что семантика и последствия операций вставки, удаления и модификации обычно четко не определяются; поэтому трудно найти набор правил, которые могут поддерживать согласованность данных. Мы покажем,что при использовании модели сущность-связь проблема согласованности данных упрощается.
В таблицах I-III мы обсуждаем семантику и правила
операций вставки, удаления и модификации и на уровне 1, и на уровне 2. Уровень 1 используется для того, чтобы семантика была более понятной.
Таблица I. Вставка
Уровень 1
Уровень 2
операция:
вставить сущность в множество сущностей
операция:
создать кортеж сущности с некоторым PK сущности
проверка:
существует ли уже PK или является допустимым?
операция:
вставить связь в множество связей
проверка:
существует ли сущность?
операция:
создать кортеж связей с данными PK сущностей
проверка:
существуют ли PK сущностей?
операция:
вставить свойства сущности или связи
проверка:
допустимо ли значение?
операция:
вставить значения в кортеж сущности или связи
проверка:
допустимо ли значение?
Таблица II. Изменение
Уровень 1
Уровень 2
операция:
изменить значение атрибута сущности
операция:
модифицировать значение атрибута сущности
последующие действия:
если это не часть PK сущности, последующих действий нет
если это часть PK сущности,
изменить PK сущностей во всех связанных отношениях связи
изменить PK других сущностей, которые используют это значение как часть своих PK (например, в PK сущностей DEPENDENT используется PK сущности EMPLOYEE)
операция:
изменить значение атрибута связи
операция:
модифицировать значение (заметим, что атрибут связи не будет являться PK связи)
Таблица III. Удаление
Уровень 1
Уровень 2
операция:
удалить сущность
последующие действия:
удалить любую сущность, существование которой зависит от этой сущности
удалить все связи, включающие эту сущность
удалить все связанные свойства
операция:
удалить кортеж сущности
последующие действия:
удалить любой набор сущностей, существование которого зависит от этого набора сущностей
удалить наборы связей, ассоциированные с этой сущностью