Целостность данных – согласованность данных между связанными таблицами в реляционных базах данных.
Механизм поддержки целостности данных обеспечивает выполнение работы с данными с учетом следующих правил:
- Невозможно ввести в связанное поле подчиненной таблицы значение, которое отсутствует в связанном поле главной таблицы.
- Не допускается удаление записи из главной таблицы, если существуют связанные с ней записи в подчиненной таблице.
- Невозможно изменить значение ключевого поля в главной таблице, если существуют записи, связанные с данной таблицей.
Чтобы преодолеть ограничения на удаление или изменение связанных записей, сохраняя при этом целостность данных, следует поручить СУБД выполнение операций Каскадное обновление и/или Каскадное удаление связанных полей.
Операция Каскадное удаление – при удалении записи в главной таблице автоматически удаляются и все связанные записи в подчиненной таблице.
Операция Каскадное обновление – при изменении ключевого поля главной таблицы автоматически будут изменены и соответствующие значения поля связанных записей.
|
|
Проблемы реляционного подхода
Основные последствия неправильного проектирования:
· избыточность информации;
- противоречивость информации;
- потеря целостности (взаимосвязь между данными).
Можно доказать, что любую структуру данных можно преобразовать в простую двумерную таблицу.
Процесс превращения любой структуры данных в реляционную структуру называется нормализацией.
Технология проектирования баз данных, разработана в 70-х годах Е.Коддом.
Основные правила
Правило 1: Каждое поле таблицы должно представлять уникальный тип информации.
Т.е. необходимо избавиться от повторяющихся полей (групп) и разделить составные поля на отдельные элементы данных.
Правило 2: Каждая таблица должна иметь уникальный идентификатор (первичный ключ), который может состоять из одного или нескольких полей.
Правило 3: В таблице не должно быть данных, не относящихся к объекту, определяемому первичным ключом.
Правило 4: Независимость полей.
Т.е. возможность изменять значения любого поля (не входящего в первичный ключ) без воздействия на данные других полей.