Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник(Семенова).doc
Скачиваний:
13
Добавлен:
26.08.2019
Размер:
9.15 Mб
Скачать

4.2. Семантическая целостность (целостность сущностей)

В специальной литературе, например в [16, 40, 41, 46 и др.], как правило, приводится характеристика (описание) различных типов ограничений целостности.

В этой связи мы рассмотрим не только различные типы ограничений целостности, но и приведем примеры их формулировок и рекомендаций по их реализации для фактографических ИС, основанных на реляционной модели данных.

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

Пусть имеется объект СТУДЕНТ, для которого на основании анализа информационных задач выделены свойства: Ф.И.О., дата_рождения, адрес. Очевидно, что ни одно из этих свойств не может быть выбрано в качестве идентификатора объекта. В данном случае целесообразно ввести в описание такое свойство, как номер_зачетной_книжки (или №_студенческого_билета), который и назначить идентификатором объекта. Тогда в качестве ограничения целостности будет выступать предложение: «Значение свойства номер_ зачетной_книжки должно быть уникальным для каждого объекта типа «СТУДЕНТ», а в соответствующем реляционном отношении атрибут номер_ зачетной_книжки должен являться первичным ключом».

Другой тип ограничения целостности касается ситуаций, при которых в соответствии с семантикой данных значения каких-либо свойств, которые не назначены идентификаторами объекта, тоже должны быть уникальны. При этом говорят о назначении возможных ключей. Пусть имеется объект СТУДЕНТ, для которого выделены свойства: №_студенческого билета, Ф.И.О., дата_рождения, адрес, паспортные_данные. Тогда необходимо сформулировать такое ограничение целостности: «Значение свойства паспортные_данные должно быть уникальным для каждого объекта типа «СТУДЕНТ» и в соответствующем реляционном отношении атрибут паспортные_данные должен являться возможным ключом».

Оба типа описанных выше ограничения целостности относятся к виду структурных ограничений, задаются функциональными зависимостями и контролируются путем проверки равенства значений соответствующих данных в базе данных. Для приведенных выше примеров это означает, что при вводе или редактировании таких данных, как №_зачетной_книжки и паспортные_данные необходимо обеспечить проверку, не являются ли они равными по значению уже введенным данным, описывающих «других студентов». При обнаружении равенства система в соответствии с указанными ограничениями целости должна обеспечивать запрет записи (сохранения) новых (или обновляемых) данных.

Следует заметить, что многие СУБД имеют «встроенные возможности» для реализации такого ограничения целостности, как ограничение целостности по первичному ключу. Разработчику лишь необходимо указать, какой из атрибутов определяется в качестве первичного ключа. Если это сделано, то при выполнении таких транзакций, как дополнение или модификация (редактирование) СУБД сама проверяет уникальность нового значения и не допускает сохранение данных в случае неуникальности значения этого атрибута. Однако это, как правило, не распространяется на случаи, когда первичный ключ является составным (включает более одного атрибута).

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

Приведем примеры. Достаточно важным является такое ограничение целостности, которое запрещает оставлять пустым (неопределенным) значение некоторого свойства. Это, в первую очередь актуально для идентификатора объекта (в реляционном отношении – для первичного ключа). Если значение первичного ключа в каких-либо картежах являются неопределенными, то это может повлечь за собой возникновение ситуации, когда в реляционном отношении могут присутствовать два одинаковых кортежа, что противоречит не только основным положениям реляционной алгебры, но и нарушает семантическую целость базы данных.

Для примера рассмотрим предметную область «Выборы губернатора», в рамках которой выделен объект «КАНДИДАТ В ГУБЕРНАТОРЫ». Пусть в соответствии с кругом информационных задач выделены следующие свойства данного информационного объекта: Ф.И.О., дата_рождения, место_рождения, образование, национальность. В связи с тем, что современные не совсем чистые предвыборные технологии могут обеспечить появление двух кандидатов, с полностью совпадающими значениями указанных свойств, то реально отличить таких кандидатов можно, например, по паспортным данным. Очевидно, что такое свойство реально может являться идентификатором объекта (или просто – уникальным свойством), а в соответствующем реляционном отношении атрибут паспортные_данные должен быть объявлен в качестве первичного или возможного ключа. Относительно этого атрибута должно быть сформулировано следующее ограничение целостности: «Значение атрибута паспортные_данные не должно быть пустым или неопределенным».

Для описания другого ограничения целостности этого типа вернемся к рассмотрению объекта «СТУДЕНТ». Пусть на этот раз анализ информационных задач позволил выделить такие свойства, как №_студенческого_билета, Ф.И.О., дата_окончания_школы, дата_поступления. Исходя из того, что в высшее учебное заведение можно поступить при условии окончания общеобразовательного учреждения, необходимо обеспечить в базе данных следующее соотношение между значениями свойств «дата_окончания_школы» и «дата_ поступления»: «дата_окончания_школы»< «дата_ поступления». В общем виде подобное ограничение целостности можно сформулировать следующим образом: «Для каждого объекта заданного класса между значениями свойств С1 и С2 должно всегда выполняться условие: С1<С2». К этому же типу ограничений целостности относятся такие предложения, как «Значение атрибута Ф.И.О состоит только из букв кириллицы», «Значение атрибута «шифр» для объекта КНИГА состоит из буквы кириллицы и цифр».

К другому типу ограничений необходимо отнести ограничения целостности, предусматривающее, что значение, которым характеризуется объект по какому-то свойству, должно находиться в заданном интервале. Рассмотрим соответствующий пример на несколько иной предметной области. Пусть на основании анализа информационных задач был выделен объект «КАНДИДАТ В ПРЕЗИДЕНТЫ» и его свойства: Ф.И.О., возраст. Очевидно, что значение атрибута «возраст» должно быть ограничено. В соответствии с конституцией кандидат в президенты должен быть не моложе 35 лет и не старше 65. В соответствии с этим следует сформулировать такое ограничение целостности: «Значение атрибута «возраст» должно находиться в интервале от 35 до 65».

Еще один вид ограничений целостности касается случаев, когда значение какого-либо атрибута является перечислимым, т.е существует небольшой по размеру набор допустимых значений данного атрибута. Для примера рассмотрим предметную область «ШКОЛА», для которой определен объект «АДМИНИСТРАТОР ШКОЛЫ» со свойствами: Ф.И.О., возраст, пол, образование, стаж, категория. Такой атрибут, как пол может принимать значение мужской или женский. Атрибут категория может принимать одно из трех значений: первая, вторая, высшая. А такой атрибут, как образование – одно из пяти значений: средне-специальное, неполное высшее, бакалавриат, магистратура, высшее. Реализация подобного ограничения целостности предполагает необходимость организации ввода или редактирования данных на основе выбора из предложенного перечня (из меню).

Говоря об описанном выше ограничении целостности, особо выделим те случаи, когда значение атрибута считают условно перечислимым (круг значений не является небольшим по размеру, однако он конечен). Пусть имеется предметная область «УЧЕБНАЯ ЛИТЕРАТУРА», для которой определен объект «УЧЕБНИК». Если для такого объекта выделено свойство издательство (название издательства, где была выпущена книга), то круг значений, которые могут характеризовать объект «УЧЕБНИК» по указанному свойству следует назвать условно перечислимым. Очевидно, что для различных объектов заданного класса значения по указанному свойству могут совпадать. В случае, когда в информационной системе не реализовано ограничение целостности относительно свойства издательство, то высока вероятность нарушения целостности и, как следствие, аномалии при обработке (возникновение информационного шума). Так, в частности, могут возникнуть аномалии при реализации следующего запроса «Определить количество источников, выпущенных издательством «Мир» и вывести их список». Если при вводе данных какой-то книги ввели вместо значения «Мир» значение «МИР», то такая книга при реализации указанного запроса рассматриваться не будет. Задание формата значения (об этом типе ограничений целостности – ниже) при вводе данных (здесь – «первый символ – прописная буква, остальные – строчные») в этом случае недопустим. Встречаются названия издательств, например КомпьтерПресс, не соответствующие указанному формату. В подобных случаях целостность данных обеспечивается на основе организации ввода (редактирования) так же, как и в предыдущем случае – из меню. Отличительным является лишь то, что перечень пунктов меню не задается изначально, а формируется динамически, включая в себя лишь те значения, которые вводились ранее. При этом соблюдается условие: значение включается в меню выбора в том случае, когда оно встретилось впервые и наряду с выбором из предложенного меню обеспечивается возможность ввода нового значения. Поясним это на примере. Пусть имеется база данных «НАУЧНАЯ И УЧЕБНАЯ ЛИТЕРАТУРА» реляционного типа (табл.2).

Таблица 2

НАУЧНАЯ И УЧЕБНАЯ ЛИТЕРАТУРА

Название

Год издания

Издательство

Количество страниц

Базы и банки данных

1987

Высшая школа

248

Как построить экспертную систему

1991

Энергоатомиздат

286

Множественная модель данных в информационных системах

1992

Наука

208

Информационные системы в экономике

1996

Финансы и статистика

272

Гипертексты в экономике. Информационная технология моделирования

1997

Финансы и статистика

256

Геоинформационные системы и технологии

1998

Финансы и статистика

288

Информатика

2000

Высшая школа

511

Язык SQL в Delphi 5

2000

БИНОМ

208

Для базы данных находящейся в таком состоянии при ее дополнении (в поле Издательство) пользователю должна быть предоставлена возможность выбора из меню:

Издательство

Высшая школа

Энергоатомиздат

Наука

Финансы и статистика

БИНОМ

Другое

Для этого случая ограничение целостности формулируется следующим образом: «Значение свойства «ИЗДАТЕЛЬСВО» является условно перечислимым и может принимать либо произвольное значение, либо одно из перечня, сформированного на основе включения уникальных значений уже введенных данных по указанному свойству».

Еще один тип ограничений целостности – задание формата для значений некоторых свойств. В частности, таким ограничением целостности является следующее предложение: «Первый символ значения свойства «Фамилия» – прописная буква кириллицы, все остальные – строчные буквы кириллицы». Очень часто среди перечня ограничений целостности можно встретить следующее: «Формат даты рождения – ДД/ММ/ГГ» или : «Формат даты рождения – ДД.ММ.ГГГГ». Заметим, что многие СУБД по умолчанию используют другой формат для полей и переменных типа «дата»: ММ-ДД-ГГ. Другой пример – «Формат атрибута «госзнак автомобиля»: ЦЦ-ЦЦ БББ (Ц - цифра, Б – буква)»

Примечание: в некоторых случаях ограничение целостности может объединять в себе несколько типов различных ограничений. Переформулируем последнее из ограничений целостности так: «Значение атрибута «госзнак автомобиля» состоит из буквы кириллицы, символа «-» и цифр, соответствует формату ЦЦ-ЦЦ БББ». Здесь объединены такие типы целостности, как задание формата и значение находится в заданном интервале.