имеется по крайней мере одна соответствующая поставка. Этот случай для определенности снова рассмотрим подробнее. Имеются те же три возможности, как и при удалении:
КАСКАДИРУЕТСЯ – операция обновления «каскадируется» с тем, чтобы обновить также и внешний ключ в поставках этого поставщика.
ОГРАНИЧИВАЕТСЯ – обновляются первичные ключи лишь тех поставщиков, которые еще не осуществляли поставок. Иначе операция обновления отвергается.
УСТАНАВЛИВАЕТСЯ – для всех поставок такого поставщика NULL-значение внешний ключ устанавливается в неопределенное значение, а затем обновляется первичный ключ поставщика. Такая возможность, конечно, неприменима, если данный внешний ключ не должен содержать NULL-значений.
Таким образом, для каждого внешнего ключа в проекте проектировщик базы данных должен специфицировать не только поле или комбинацию полей, составляющих этот внешний ключ, и целевую таблицу, которая идентифицируется этим ключом, но также и ответы на указанные выше вопроса (три ограничения, которые относятся к этому внешнему ключу).
Ограничения целостности
Целостность (от англ. integrity – нетронутость, неприкосновенность, сохранность, целостность) – понимается как правильность данных в любой момент времени. Но эта цель может быть достигнута лишь в определенных пределах: СУБД не может контролировать правильность каждого отдельного значения, вводимого в базу данных (хотя каждое значение можно проверить на правдоподобность). Например, нельзя обнаружить, что вводимое значение 5 (представляющее номер дня недели) в действительности должно быть равно 3. С другой стороны, значение 9 явно будет ошибочным и СУБД должна его отвергнуть. Однако для этого ей следует сообщить, что номера дней недели должны принадлежать набору (1,2,3,4,5,6,7). Поддержание целостности базы данных может рассматриваться как защита данных от неверных изменений
26
или разрушений (не путать с незаконными изменениями и разрушениями, являющимися проблемой безопасности). Современные СУБД имеют ряд средств для обеспечения поддержания целостности (так же, как и средств обеспечения поддержания безопасности).
Выделяют три группы правил целостности:
1.Целостность по сущностям.
2.Целостность по ссылкам.
3.Целостность, определяемая пользователем.
Не допускается, чтобы какой-либо атрибут, участвующий в первичном ключе, принимал неопределенное значение.
Значение внешнего ключа должно либо:
быть равным значению первичного ключа цели;
быть полностью неопределенным, т.е. каждое значение атрибута, участвующего во внешнем ключе должно быть неопределенным.
Для любой конкретной базы данных существует ряд дополнительных специфических правил, которые относятся к ней одной и определяются разработчиком. Чаще всего контролируется:
уникальность тех или иных атрибутов,
диапазон значений (экзаменационная оценка от 2
до 5),
принадлежность набору значений (пол «М» или
«Ж»).
2.2. Модели данных
Существуют, так называемые, три уровня абстракции или три различных уровня описания элементов данных. Эти уровни формируют трехуровневую архитектуру, которая охватывает внешний, концептуальный и внутренний уровни. Цель трехуровневой архитектуры заключается в отделении пользовательского представления базы данных от ее
27
физического представления. Ниже перечислено несколько причин, по которым желательно выполнять такое разделение.
Каждый пользователь должен иметь возможность обращаться к одним и тем же данным, используя свое собственное представление о них. Каждый пользователь должен иметь возможность изменять свое представление о данных, причем это изменение не должно оказывать влияние на других пользователей.
Пользователи не должны непосредственно иметь дело с такими подробностями физического хранения данных в базе, как индексирование и хеширование. Иначе говоря, взаимодействие пользователя с базой не должно зависеть от особенностей хранения в ней данных.
Администратор базы данных должен иметь возможность изменять структуру хранения данных в базе, не оказывая влияния не пользовательские представления.
Внутренняя структура базы данных не должна зависеть от таких изменений физических аспектов хранения информации, как переключение на новое устройство хранения.
Администратор базы данных должен иметь возможность изменять концептуальную или глобальную структуру базы данных без какого-либо влияния на всех пользователей.
Уровень, на котором воспринимают данные пользователи, называется внешним уровнем, тогда как СУБД и операционная система воспринимают данные на внутреннем уровне. Концептуальный уровень представления данных предназначен для отображения внешнего уровня на внутренний
иобеспечения необходимой независимости друг от друга.
ВНЕШНИЙ УРОВЕНЬ – это представление базы данных с точки зрения пользователей. Этот уровень описывает ту часть базы данных, которая относится к каждому пользователю.
28
Каждый пользователь имеет дело с представлением «реального мира», выраженным в наиболее удобной для него форме. Внешнее представление содержит только те сущности и связи «реального мира», которые интересны пользователю. Другие сущности, атрибуты и связи, которые ему неинтересны, также могут быть представлены в базе данных, но пользователь может даже не подозревать об их существовании.
Помимо этого, различные представления могут поразному отображать одни и те же данные.
КОНЦЕПТУАЛЬНЫЙ УРОВЕНЬ – это обобщающее представление базы данных. Этот уровень описывает то, какие данные хранятся в базе данных, а также связи, существующие между ними.
Концептуальный уровень в трехуровневой архитектуре является промежуточным уровнем. Этот уровень содержит логическую структуру всей базы данных. Фактически, это полное представление требований к данным со стороны организации, которое не зависит от любых соображений относительно способа их хранения. На концептуальном уровне представлены следующие компоненты:
Все сущности, их атрибуты и связи;
Накладываемые на данные ограничения;
Семантическая информация о данных;
Информация о мерах обеспечения безопасности и поддержки целостности данных.
Концептуальный уровень поддерживает каждое внешнее представление в том смысле, что любые доступные пользователю данные должны содержаться на этом уровне. Однако этот уровень не содержит никаких сведений о методах хранения данных. Например, описание сущности должно содержать сведения о типах данных атрибутов и их длине, но не должно включать сведений об организации хранения данных, например, об объеме занятого пространства в байтах.
29
ВНУТРЕННИЙ УРОВЕНЬ – это физическое представление базы данных в компьютерах. Этот уровень описывает, как информация хранится в базе данных.
Внутренний уровень описывает физическую реализацию базы данных и предназначен для достижения оптимальной производительности и обеспечения экономного использования дискового пространства. Он содержит описание структур данных и организации отдельных файлов, используемых для хранения данных в запоминающих устройствах. На этом уровне осуществляется взаимодействие СУБД с методами доступа операционной системы с целью размещения данных, создания индексов, извлечения данных и т.д.
На внутреннем уровне хранится следующая информация:
Распределение дискового пространства для хранения данных и индексов,
Описание подробностей сохранения записей,
Сведения о размещении записей.
Сведения о сжатии данных и выбранных методах их шифрования.
Ниже внутреннего уровня находится физический уровень, который контролируется операционной системой, но под руководством СУБД. Однако, функции СУБД и операционной системы на физическом уровне не вполне четко распределены и могут варьироваться от системы к системе.
Общее описание базы данных называется схемой базы данных. Существует три различных типа схем базы данных, которые определяются в соответствии с уровнями абстракции трехуровневой архитектуры. На самом высоком уровне имеется несколько внешних схем или подсхем, которые соответствуют разным представлениям данных. На концептуальном уровне описание базы данных называют концептуальной схемой, а на самом низком уровне абстракции – внутренней схемой. СУБД отвечает за установление соответствия между этими тремя типами схем, а также за проверку их непротиворечивости.
Концептуальная схема связана с внутренней схемой
30