Экономическая информатика-стр.256

Манипуляционная часть реляционной модели состоит из операций запоминания и поиска данных. Эти операции делятся на две группы: операции на множествах (объединение, пересечение, разность, произведение) и реляционные операции (выбрать, спроецировать, соединить, разделить). Любой язык манипулирования данными, обеспечивающий все эти операции, является реляционно полным. В зависимости от способа формирования выражений языка его называют либо реляционной алгеброй, либо реляционным исчислением. Языки манипулирования данными, которые могут использоваться конечными пользователями в диалоговом режиме (т.е. не являются вложенными в язык программирования главной системы), часто называют языками запросов.

В целостной части реляционной модели данных фиксируются два базовых требования целостности, которые должны поддерживаться в любой реляционной СУБД. Первое требование называется требованием целостности сущностей. Объекту или сущности реального мира в реляционных БД соответствуют кортежи отношений. Для соблюдения целостности сущности достаточно гарантировать отсутствие в любом отношении кортежей с одним и тем же значением первичного ключа. Второе требование называется требованием целостности по ссылкам и является несколько более сложным. Очевидно, что при соблюдении нормализованное™ отношений сложные сущности реального мира представляются в реляционной БД в виде нескольких кортежей нескольких отношений. Атрибут, значения которого однозначно характеризуют сущности, представленные кортежами некоторого другого отношения (т.е. задают значения их первичного ключа), называется внешним ключом. Говорят, что отношение, в котором определен внешний ключ, ссылается на соответствующее отношение, в котором такой же атрибут является первичным ключом. Требование целостности по ссылкам, или требование внешнего ключа, состоит в том, что для каждого значения внешнего ключа должен найтись кортеж с таким же значением первичного ключа в отношении, на которое ведется ссылка, либо значение внешнего ключа должно быть полностью неопределенным (т.е. ни на что не указывать). Для нашего примера это означает, что если для товара указан код поставщика, то этот поставщик должен существовать. При обновлении ссылающегося отношения (вставке новых кортежей или модификации значения внешнего ключа в существующих кортежах) достаточно следить за тем, чтобы не появлялись некорректные значения внешнего ключа.