Сущностноя целостность, первичные и дополнительные ключи
Целостность доменов, null-значения и сложные домены
Целостность доменов {domain integrity) определяет домены (области) значений, допустимых для столбцов. Например, запись о клиенте недостоверна, если сокращенный код штата, в котором проживает клиент, не входит в группу пятидесяти кодов штатов США.
Кроме использования типов данных, в Oracle поддерживается два вида ограничений целостности, позволяющих еще более ограничивать домены столбцов:
• Можно исключить, возможность ввода null-значений в столбец, воспользовавшись ограничением (constraint) NOT NULL.
• Можно объявить правило целостности сложных доменов частью таблицы, воспользовавшись ограничением СНЕСК, обычно содержащим явный список значений, допустимых для столбца. Например, "М" (мужской) и "F" (женский) в столбце, содержащем информацию о поле клиента: "AL" (.Алабама), "АК" (Аляска), ..., "WY" (Вайоминг) в столбце, содержащем коды штатов США, и т.д.
Сущнпстная целостность (entity integrity) обеспечивает уникальность каждой строки таблицы. В результате сущностная целостность устраняет возможность появления в таблице повторяющихся значений и делает каждую строку таблицы однозначно идентифицируемой.
Первичные ключи обеспечивают поддержание сущностной целостности таблиц: Первичный ключ, (primary key) — это столбец, однозначно идентифицирующий строки таблицы. Как правило, в качестве первичных ключей таблиц реляционных баз данных используются столбцы типа ID (столбцы-идентификаторы). Например, в таблице клиентов может содержаться ID-столбец, однозначно идентифицирующий каждую запись о клиенте. Таким образом, даже если два клиента (скажем, Джон Смит и его сын Джон Смит-младший) имеют одинаковые имена, фамилии, адреса, номера телефонов и т.д., их идентификационные номера различны, что позволяет отличить одного от другого.
Первичный ключ таблицы часто бывает составным {composite), т.е. состоящим из нескольких столбцов. Например, в типичной таблице системы ввода заказов, содержащей информацию о пунктах заказов товаров, первичным ключ может быть составным и описываться столбцами ORDER_ID (идентифика-тор_заказа) и ITEM _ID (идентификатор_пункта_заказа). В этой таблице многие записи пунктов заказов могут иметь одинаковые идентификаторы (1,2, ...), но никакие две записи пунктов заказов не могут иметь одновременно одинаковые идентификатор заказа и идентификатор пункта заказа (идентификатор заказа 1, идентификашры пунктов заказа 1, 2, 3, ...; идентификатор заказа 2, идентификаторы пунктов заказа 1, 2, 3, ...; и т. д.).
Иногда в таблице необходимо обеспечить дополнительные уровни сущностной целостности. Дополнительные ключи (altenate keys) — это столбцы или группы столбцов, в которых не содержатся повторяющиеся значения. Например, столбец EMAIL таблнцы, содержащей информацию о служащих компании, может быть дополнительным ключом, что будет гарантировать уникальность адресов электронной почты всех служащих.