Принципы поддержки целостности в реляционной модели данных
Определение Под целостностью будем понимать соответствие информационной модели предметной области, хранимой в базе данных, объектам реального мира и их взаимосвязям в каждый момент времени. Любое изменение в предметной области, значимое для построенной модели, должно отражаться в базе данных, и при этом должна сохраняться однозначная интерпретация информационной модели в терминах предметной области.
Поддержка целостности включает в себя 3 аспекта. поддержка структурной целостности поддержка языковой целостности поддержка ссылочной целостности поддержка семантической целостности.
поддержка структурной целостности реляционная СУБД должна допускать работу только с однородными структурами данных типа «реляционное отношение» т.е. отсутствие дубликатов кортежей, соответственно обязательное наличие первичного ключа, отсутствие понятия упорядоченности кортежей.
проблема неопределенных Null значений При сравнении неопределенных значений не действуют стандартные правила сравнения: одно неопределенное значение никогда не считается равным другому неопределенному значению. Для выявления равенства значения некоторого атрибута неопределенному применяют специальные стандартные предикаты: IS NULL IS NOT NULL.
Таблица истинности для NULL- значений
поддержка языковой целостности Реляционная СУБД должна обеспечивать языки описания и манипулирования данными не ниже стандарта SQL. He должны быть доступны иные низкоуровневые средства манипулирования данными, не соответствующие стандарту.
поддержка ссылочной целостности означает обеспечение одного из заданных принципов взаимосвязи между экземплярами кортежей взаимосвязанных отношений: кортежи подчиненного отношения уничтожаются при удалении кортежа основного отношения, связанного с ними. кортежи основного отношения модифицируются при удалении кортежа основного отношения, связанного с ними, при этом на месте ключа родительского отношений ставится неопределенное Null значение.
Семантическая поддержка целостности. Семантическая поддержка может быть обеспечена двумя путями: Декларативным и процедурным путем. Декларативный путь связан с наличием механизмов в рамках СУБД, обеспечивающих проверку и выполнение ряда декларативно заданных правил-ограничений, называемых чаще всего «бизнес-правилами» (Business Rules)
виды декларативных ограничений целостности: 1. Ограничения целостности атрибута: значение по умолчанию, задание обязательности или необязательности значений (Null), задание условий па значения атрибутов.
2. Ограничения целостности, задаваемые на уровне доменов (при поддержке доменной структуры). Эти ограничения удобны, если в базе данных присутствуют несколько столбцов разных отношений, которые принимают значения из одного и того же множества допустимых значений. Некоторые СУБД поддерживают подобную доменную структуру, то есть разрешают определять отдельно домены, задавать тип данных для каждого домена и задавать соответственно ограничения в виде бизнес- правил для доменов. А для атрибутов задается не примитивный первичный тип данных, а их принадлежность тому или другому домену.
3. Ограничения целостности, задаваемые на уровне отношения. Некоторые семантические правила невозможно преобразовать в выражения, которые будут применимы только к одному столбцу.
4. Ограничения целостности, задаваемые на уровне связи между отношениями: задание обязательности связи, принципов каскадного удаления и каскадного изменения данных, задание поддержки ограничений по мощности связи. Эти виды ограничений могут быть выражены заданием обязательности или необязательности значений внешних ключей во взаимосвязанных отношениях.
Операторы DDL в языке SQL с заданием ограничений целостности Создание таблиц определение таблицы>:: ( [, ]…)
::= | ::= [ ] [
:: = DEFAULT { | USER | NULL } дополнительные ограничения столбца ::= NOT NULL | | CHECK ( )
::= UNIQUE := FOREIGN KEY ::= REFERENCES.( )
Пример Оператор создания таблицы BOOKS из базы данных «Библиотека». Ограничения целостности: Шифр книги последовательность символов длиной не более 14, однозначно определяющая книгу, значит, это фактически первичный ключ таблицы BOOKS. Название книги последовательность символов, не более 120. Обязательно должно быть задано. Автор последовательность символов, не более 30, может быть не задан. Соавтор последовательность символов, не более 30, может быть не задан. Год издания целое число, не менее 1960 и не более текущего года. По умолчанию ставится текущий год. Издательство последовательность символов, не более 20, может отсутствовать. Количество страниц целое число не менее 5 и не более 1000.
Оператор
Дополнительное ограничение для таблицы
Именованные ограничения Для анализа ошибок целесообразно именовать все ограничения, особенно если таблица содержит несколько ограничений одного типа. Для именования ограничений используется ключевое слово CONSTRAINT
Создание BOOKS с именованными ограничениями
Таблица READERS: Номер читательского билета - это целое число в пределах и он уникально определяет читателя. Имя, фамилия читателя это последовательность символов, не более 30. Адрес это последовательность символов, не более 50. Номера телефонов рабочего и домашнего последовательность символов, не более 12. Дата рождения календарная дата. В библиотеку принимаются читатели не младше 17 лет.
Оператор
Таблица Examplar
Особенности create если при трансляции оператора описания подчиненной таблицы с указанным внешним ключом и соответствующей ссылкой па родительскую таблицу эта родительская таблица не будет обнаружена, то мы получим сообщение об ошибке с указанием ссылки на несуществующий объект. Сначала должны быть описаны все основные таблицы, а потом подчиненные таблицы.
Порядок создания таблиц В нашем примере с библиотекой порядок описания таблиц следующий:
Средства определения схемы базы данных В СУБД ORACLE база данных создается в ходе установки программного обеспечения собственно СУБД. Все таблицы пользователей помещаются в единую базу данных. Однако они могут быть разделены на группы, объединенные в подсхемы. Понятие подсхемы не стандартизировано в SQL и не используется в других СУБД.
INGRES В состав СУБД INGRES входит специальная системная утилита, имеющая имя CREATEDB, которая позволяет создавать новые базы данных. Права на использование этой утилиты имеет администратор сервера. Для удаления базы данных существует соответствующая утилита DESTROYDB.
MS SQL Server В СУБД MS SQL Server существует специальный оператор CREATE DATABASE, который является частью языка определения данных для удаления базы данных в языке определен оператор DROP DATABASE.
Пример для MS SQL Server
Служебные слова Database_name имя базы данных, идентификатор в системе; ON ключевое слово, которое означает, что далее будут заданы спецификации файлов, которые будут использованы для размещения базы данных; PRIMARY ключевое слово, которое определяет первичное файловое пространство, в котором будет размещена собственно база данных; LOG ON ключевое слово, которое задает спецификацию файлов, которые будут использованы для хранения журналов транзакций; FOR LOAD ключевое слово, которое определяет, что после создания базы данных будет произведена загрузка базы данных данными; FOR ATTACH предложение, которое определяет, что база данных для управления будет подсоединена к другому серверу.
Пример для библиотеки CREATE DATABASE Library Удаление базы данных DROP DATABASE database_name