Хранимые в базе данные таблицы логически связаны между собой.; В частности, одним из результатов процедур нормализации данных; является появление множества логически связанных таблиц. В общем! случае можно говорить о наличии прямой связи между таблицами, ectiii таблица А содержит первичный или уникальный ключ таблицы В.

С другой стороны, сам по себе факт, что данные таблицы А детализируют данные таблицы В, никак не может помешать нам добавить в таблицу новые строки, для которых не будет соответствующих строк в таблице В. Например, если таблица В содержит перечень подразделений, а таблица А - список сотрудников, то нельзя гарантировать, что у нас не появятся сотрудники "никакого", то есть не описанного в таблице В, подразделения. В подобных случаях результаты работы программ могут оказаться неожиданными.

Такая же проблема возникает и при попытке добавить в таблицу строку с тем же первичным или уникальным ключом, что и у существующей.

Ряд полей (столбцов) могут принимать по своему смыслу не все значения, которые допустимы в соответствии с заданным для них типом, а должны принадлежать к определенному диапазону или перечню. Такие ограничения могут распространяться и на отдельное поле и на группу полей. Кроме того, между полями одной строки таблицы или данными разных таблиц могут существовать и более тонкие зависимости.

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

Отметим, что требования логической целостности относятся к самим данным, являются их свойством, а не свойством обрабатывающих их программ. Последнее означает, что значительно логичнее хранить описание требований логической целостности внутри базы данных и осуществлять их контроль средствами базы данных.

Для подобных целей в системах управления базами данных, в том числе и в InterBase, предусмотрены специальные средства.

Для недопущения дублирования значений первичных или альтернативных (уникальных) ключей блокируются любые попытки добавления в таблицу строк (записей), имеющих такие же значение ключей, как у существующих.

Для поддержания связей между таблицами в том смысле, в каком об этом говорилось выше, контролируются соответствующие значения ключевых полей, по которым осуществляется связь (внешние ключи). В этом случае запрещается добавление в дочернюю таблицу строк, для которых нет родительской. Запрещается также простое удаление тех строк (записей) родительской таблицы, для которых есть строки в дочерних таблицах. Здесь возможно несколько решений: простой запрет на удаление, удаление всех связанных строк в дочерних таблицах вместе с родительской, удаление строк родительской таблицы с одновременной пометкой связанных строк в дочерних таблицах как не имеющих родительской. Какой бы метод контроля при этом ни выбирался, гарантируется, что все хранящиеся в базе данные останутся согласованными между собой.

Помимо этого в ряде случаев необходимо контролировать на допустимость значения отдельных полей или ■ их групп. Условия контроля могут быть достаточно сложными, в том числе требующими программной обработки.

Кроме того, дополнительный контроль, в том числе и связанный с анализом данных, хранящихся в разных таблицах, может осуществляться специальными программами-триггерами, которые будут включаться при попытке любого изменения данных. Для каждой такой попытки, а именно добавления (insert), модификации (update) и удаления (delete), можно задать свой триггер. Триггеры могут включаться как непосредственно перед соответствующим действием, так и после него. Общее количество триггеров не ограничено. Если триггеру "не понравятся" вводимые данные, он может выдать сообщение об ошибке и прервать соответствующую транзакцию.

Единственным ограничением на используемые методы контроля является то, что сам контроль требует определенных затрат времени и других ресурсов процессора. Поэтому в некоторых случаях массового ввода данных, про которые заранее известно, что они корректны, можно отключать средства контроля, что позволяет заметно сократить время загрузки данных. Правда, перед тем как принимать подобное решение, следует хорошо подумать, не приведет ли это к нежелательным последствиям.

4нф и 5нф (етвертая и пятая нормальные формы) | Введение в InterBase | Скорость доступа к данным


Введение в InterBase



Новости за месяц

  • Август
    2019
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс