AAA
Обычный Черный

Кто не делится найденным, подобен свету в дупле секвойи (древняя индейская пословица)

версия для печатиВерсия для печати



Библиографическая запись: Целостность. — Текст : электронный // Myfilology.ru – информационный филологический ресурс : [сайт]. – URL: https://myfilology.ru//165/bazy-dannyx/czelostnost/ (дата обращения: 26.04.2024)

Целостность

Целостность

Содержание

    Организация связи сущностей

    Под связью понимается осмысленная ассоциация между сущностями, например, СТУДЕНТ учится в ГРУППЕ, ВОДИТЕЛЬ выполняет РЕЙС и т.п. Выявляются все связи между сущностями внутри локального представления. Каждая связь именуется, для неё определяются степень, кардинальность и обязательность.

    Кроме спецификации связей типа "сущность – сущность", выполняется спецификация связей типа "сущность – атрибут" и "атрибут – атрибут" внутри одной сущности. Для этого надо определить зависимости между экземплярами сущностей и атрибутами, а также между атрибутами, относящимися к одному экземпляру сущности. Например, атрибут Телефоны сущности СОТРУДНИК может быть многозначным и необязательным, т.е. связь СОТРУДНИК –> Телефоны имеет тип 1:n и является необязательной для сотрудника. А если рассмотреть атрибуты Маршрут и Стоимость сущности БИЛЕТ, то между ними есть связь 1:1, т.к. стоимость билета зависит от маршрута (пункт отправления – пункт назначения). 

    Предметная область (ПрО) информационной системы рассматривается как совокупность реальных процессов и объектов (сущностей), представляющих интерес для её пользователей. Каждая из сущностей ПрО обладает определённым набором свойств (атрибутов).

    Для упрощения процедуры описания ПрО в большинстве случаев прибегают к определению типов сущностей. Тип позволяет выделить из всего множества сущностей ПрО группу сущностей, однородных по структуре и поведению (относительно рамок рассматриваемой ПрО). Например, для ПрО "Институт" в качестве типов сущностей могут рассматриваться студенты, преподаватели, дисциплины и т.п.

    Данные предметной области представляются экземплярами сущностей (студент Иванов, преподаватель Сидоров, дисциплина "Базы данных"). Экземпляры сущностей одного типа обладают одинаковыми наборами атрибутов, но должны отличаться значением хотя бы одного атрибута для того, чтобы быть узнаваемыми (например, студенты могут иметь одинаковые ФИО, но должны иметь разные номера зачётных книжек).

    Среди атрибутов сущности можно выделить существенные и малозначительные. Признание какого-либо свойства существенным носит относительный характер. Например, атрибут Должность для сотрудника является существенным, а для читателя библиотеки – малозначительным.

    Атрибуты можно условно классифицировать следующим образом:

    1. 1) Идентифицирующие и описательные атрибуты. Идентифицирующие атрибуты имеют уникальное значение для сущностей  данного типа, описательные заключают в себе интересующие свойства сущности.
    2. 2) Составные и простые атрибуты. Простой атрибут состоит из одного компонента, его значение неделимо; составной атрибут  является комбинацией нескольких компонентов, возможно, принадлежащих разным типам данных.
    3. 3) Однозначные и многозначные атрибуты (могут иметь соответственно одно или много значений для каждого экземпляра сущности).
    4. 4) Основные и производные атрибуты. Значение основного атрибута не зависит от других атрибутов. Значение производного атрибута вычисляется на основе значений других атрибутов.
    5. 5) Обязательные и необязательные. Значение обязательного атрибута всегда устанавливается при помещении данных в БД; значение необязательного атрибута может быть пропущено.

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

    Между сущностями ПрО могут существовать связи, имеющие различный содержательный смысл (семантику). Например, студент учится в группе, врач лечит пациента, клиент имеет вклад в банке. Связи могут быть факультативными или обязательными. Если вновь порождённая сущность одного из типов оказывается по необходимости связанной с сущностью другого типа, то между этими типами сущностей есть обязательная связь. Иначе связь является факультативной.

    Степень связи – это количество типов сущностей, которые входят в связь. Различают унарные, бинарные и тернарные связи. На практике связи с большей степенью редко используются.

    Унарная связь означает, что одни экземпляры сущности связаны с другими экземплярами этой же сущности (например, одни сотрудники руководят другими, а деталь может являться частью механизма).

    Различают тип связи и экземпляр связи. Тип связи определяется её именем, обязательностью, степенью и кардинальностью, например, бинарная связь учится между сущностями ГРУППА и СТУДЕНТ, обязательная для студента, кардинальностью 1:n. А экземпляр связи – это конкретная связь между студентом Сидоровым и группой Н-11, в которой он учится.

    Совокупность типов сущностей и типов связей между ними характеризует структуру предметной области. Собственно данные представлены экземплярами сущностей и связей между ними. Данные экземпляров сущностей и связей хранятся в базе данных информационной системы, а описание типов сущностей и связей является метаданными.

    Множества экземпляров сущностей, значения атрибутов сущностей и экземпляры связей между ними могут изменяться во времени. Поэтому каждому моменту времени можно сопоставить некоторое состояние предметной области. Состояния ПрО должны подчиняться совокупности правил, которые характеризуют семантику предметной области. В базе данных эти правила могут быть  заданы с помощью так называемых ограничений целостности, которые накладываются на атрибуты сущностей, типы сущностей, типы связей и/или их экземпляры. Фактически ограничения целостности – это правила, которым должны удовлетворять значения данных в БД. Например, для библиотеки можно привести такие ограничения целостности: количество экземпляров книги не может быть отрицательным; номер паспорта читателя должен быть уникальным; каждая книга относится к определённому разделу рубрикатора ББК – библиотечно-библиографической классификации и т.д.

    Наиболее распространенным видом связей являются бинарные, т. е. такие, которые связывают две сущности. Для них можно определить ограничения, показывающие, как именно сущности могут быть взаимосвязаны. Используются
    следующие символы:

    1 — в связи может участвовать и должна участвовать одна сущность;
    0 — в связи может участвовать не больше, чем одна сущность;
    m, n — в связи может участвовать ноль или несколько сущностей из одного множества.

    Реляционная целостность

    Реляционная целостность данных рассматривается в двух ас­пектах — ключи отношения и реляционные ограничения це­лостности.

    Ключи отношения - это первичный ключ и внешний ключ (см. ниже).

    Ограничения целостности также см. ниже.

    Целостность сущностей

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

    Это определяет следующее правило целостности сущностей: Атрибуты, входящие в состав некоторого потенциального ключа не могут принимать null-значений.

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

    Отсюда вытекают следующие ограничения:

    • отсутствие кортежей дубликатов (данное требование реализуется не через требование отсутствия совпадения значений одновременно по всем полям, а лишь по полям первичных ключей, что обеспечивает определенную гибкость в описании конкретных ситуаций в предметных областях АИС);
    • отсутствие полей с множественным характером значений атрибута (данное ограничение по отношению к весьма типичным ситуациям при описании реальных предметных областей в реляционной модели обеспечивается так называемой нормализацией таблиц-отношений, т. е. разбиением исходной таблицы на две или более связанные таблицы с единичным характером значений полей-атрибутов).  

    Определитель Null

    Определитель NULL указывает на то, что значение атрибута в данный момент неизвестно или неприемлемо для данного кортежа. NULL не входит в область определения некоторого кортежа либо никакое значение еще не задано. Ключевое сло­во NULL представляет собой способ обработки неполных или необычных данных. NULL ни в коем случае нельзя отождеств­ить как нулевое численное значение или заполненную про­белами текстовую строку (нули и пробелы — это некоторые значения; NULL — это отсутствие значения).

    Ссылочная целостность

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

    1. 1) Что должно случиться при попытке удалить объект ссылки внешнего ключа?
    2. 2) Что должно случиться при попытке обновить потенциальный ключ, на который ссылается внешний ключ?

    В первом случае можно ограничить действие - запретить операцию удаления до момента пока существуют ссылающиеся значения внешних ключей. А можно «каскадировать» удаление, то есть удалить кортеж с соответствующим значением потенциального ключа и все кортежи со ссылающимися на него внешними ключами. Аналогично можно поступить и во втором случае - ограничить обновление или каскадировать изменения.

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

    Синтаксис определения внешнего ключа:

    FOREIGN KEY (<список столбцов внешнего ключа>)
    REFERENCES <имя родительской таблицы>
    [[<список столбцов родительской таблицы>]
    [ON DELETE {NO ACTION | CASCADE j SET DEFAULT I SET NULL}]
    [ON UPDATE {NO ACTION | CASCADE | SET DEFAULT| SET NULL}] 

    Список столбцов внешнего ключа определяет столбцы дочерней таблицы, по которым строится внешний ключ.

    Имя родительской таблицы определяет таблицу, в которой описан первичный ключ (или столбец с атрибутом UNIQUE). На этот ключ (столбец) должен ссылаться внешний ключ дочерней таблицы для обеспечения ссылочной целостности.

    Список столбцов родительской таблицы, определяющий ссылочную целостность, необязателен при ссылке на первичный ключ родительской таблицы. При ссылке в родительской таблице на столбец с атрибутом UNIQUE этот список лучше привести.

    Параметры ON DELETE, ON UPDATE задают способы изменения подчиненных записей дочерней таблицы при удалении (ON (DELETE) или изменении (ON UPDATE) поля связи в записи родительской таблицы. Способы:

    • NO ACTION — запрещает удаление/изменение родительской записи при наличии подчиненных записей в дочерней таблице;
    • CASCADE — при удалении записи родительской таблицы (используется совместно с ON DELETE) происходит удаление всех подчиненных записей в дочерней таблице; при изменении поля связи в записи родительской таблицы (используется совместно с ON UPDATE) происходит изменение на то же значение поля внешнего ключа у всех подчиненных записей в дочерней таблице;
    • SET DEFAULT — в поле внешнего ключа записей дочерней таблицы заносится значение этого поля по умолчанию, указанное при определении поля (параметр DEFAULT);
    • SET NULL — в поле внешнего ключа записей дочерней таблицы заносится значение NULL.

    Первичный ключ может быть определен для столбца с одним именем, в то время как столбец, на который наложено ограничение FOREIGN KEY, может иметь совершенно другое имя. Однако лучше давать таким столбцам идентичные названия, чтобы показать связь между ними

    Первичный ключ

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

    Всякая таблица обычно содержит один или несколько столбцов, значение или совокупность значений которых уникально идентифицируют каждую строку в таблице. Этот столбец (или столбцы) называется первичным ключом (Primary Key, PK) таблицы. Если в первичный ключ входит более одного столбца, значения в пределах одного столбца могут дублироваться, но любая совокупность значений всех столбцов первичного ключа при этом должна быть уникальна. Например, в таблице «Дисциплины» один столбец (Дисциплина) определен как первичный ключ, а для таблицы «Сводная ведомость» задан составной первичный ключ — в него входят значения столбцов /ОСтудент и /О^Дисциплина.

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

    Еще одним назначением первичного ключа является обеспечение ссылочной целостности данных в нескольких таблицах. Естественно, это может быть реализовано только при наличии соответствующих внешних ключей (FOREIGN KEY) в других (дочерних) таблицах.

    Если по столбцу строится первичный ключ, столбцу должен быть приписан атрибут PRIMARY KEY (ограничение целостности на уровне столбца).

    Первичный ключ может быть также построен с помощью отдельного предложения PRIMARY KEY (ограничение целостности на уровне таблицы) — путем включения имени (имен) ключевого столбца (столбцов) в качестве параметров.

    Внешний ключ

    Внешний ключ строится в дочерней (зависимой) таблице для соединения родительской (главной) и дочерних таблиц БД. Это ограничение целостности предназначено для организации ссылочной целостности данных. Внешний ключ связывается с потенциальным первичным ключом в другой таблице. Внешний ключ при этом может ссылаться либо на столбец (или столбцы) с ограничением целостности PRIMARY KEY, либо на столбец (столбцы) с ограничением целостности UNIQUE.

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

    Столбцы внешнего ключа (в отличие от столбцов первичного ключа) могут содержать значения типа NULL, однако при этом проверка на ограничение FOREIGN KEY будет пропускаться. Задать внешний ключ можно как при создании, так и при изменении таблиц.

    Ограничение целостности по внешнему ключу проверяется в двух случаях:

    • при добавлении записи в подчинённую таблицу СУБД проверяет, что в родительской таблице есть запись с таким же значением первичного ключа;
    • при удалении записи из родительской таблицы СУБД проверяет, что в подчинённой таблице нет записей с таким же значением внешнего ключа.

    Принципы поддержки целостности в реляционной модели БД

    Правила поддержки целостности данных - некоторые особые требований, которым должна удовлетворять база данных.

    Внутренние ограничения целостности данных реляционной модели обусловлены свойствами отношения по определению как множества:

    • у отношения не может быть одинаковых строк-кортежей;
    • порядок следования кортежей значения не имеет;
    • порядок следования атрибутов значения не имеет;
    • все значения атрибутов атомарны (неделимы).

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

    • таблицы имеют одинаковое количество столбцов;
    • таблицы содержат столбцы с одинаковыми наименованиями;
    • столбцы с одинаковыми наименованиями содержат данные из одних и тех же доменов;
    • таблицы имеют одинаковые строки с учетом того, что порядок столбцов может различаться.

    Внутренние ограничения целостности являются безотлагательными. Их проверка реляционной СУБД выполняется автоматически. 

    Обеспечение целостности

    Правила целостности определяются типом данных и предметной областью.

    Параллельно с заданием типа данных необходимо сформулировать ограничения целостности, связанные с типом, — перечень допустимых значений типа.

    Исходя из особенностей данных и их функционального назначения, требуется задать способ представления и границы возможных  изменений для каждого из столбцов таблиц. При этом необходимо ответить на вопрос: данные каких типов должны храниться в столбцах и какова их максимальная длина (например, если в столбце предполагается хранить процентные значения, то достаточно будет целого типа данных длиной 1 байт, так как диапазон возможных значений — от 0 до 255; если для данных столбца выбирается тип «строка символов», то желательно указать максимальный размер данных столбца и т. п.).

    Далее в каждой таблице должны быть выделены столбцы, которые обязательно должны быть заполнены при создании отдельной
    строки таблицы. Задание такого ограничения целостности не позволит, например, ввести в таблицу «Студенты» строку, в которой не указан номер группы. Если подобные ограничения целостности не будут заданы, в таблице могут появиться строки, которые не будут учтены при выполнении функций по обработке данных: появление в таблице «Студенты» строки без номера группы приведет к ошибке при формировании ведомости.

    Следующий важный момент — задание для столбцов значений по умолчанию. Значение по умолчанию впоследствии будет автоматически вводиться в указанный столбец для каждой строки таблицы. Например, в столбец Дата сдачи таблицы «Сводная ведомость» при заполнении очередной строки может автоматически заноситься текущая дата.

    Целостности данных способствует отсутствие избыточности.

    Ограничения целостности

    По происхождению ограничения целостности принято различать:

    • внутренние, обусловленные особенностью типа структуры данных, в частности отношения;
    • семантические (явные), обусловленные смыслом, значением взаимосвязанных данных конкретной предметной области.

    Ограничения целостности определяют допустимость значения отдельных полей и взаимосвязей как на уровне семантики содержимого БД, так и ее физической структуры (отдельных файлов данных и взаимосвязей между ними).

    NOT NULL запрещает появление неопределенных значений атрибута.

    Ограничение целостности UNIQUE предназначено для того, чтобы обеспечить уникальность значений в столбце (или нескольких столбцах). Если столбцу приписан атрибут UNIQUE, это означает, что в столбце не могут содержаться два одинаковых значения.

    Для ограничения целостности PRIMARY KEY автоматически гарантируется уникальность значений. Однако в каждой таблице можно определить всего один первичный ключ. Если же необходимо дополнительно обеспечить уникальность значений еще в одном или более столбцах помимо первичного ключа, то нужно использовать ограничение целостности UNIQUE.

    FOREIGN KEY задает группу атрибутов, значения которых должны совпадать со значениями атрибутов первичного или уникального ключа другого отношения, указанных в этом ограничении. Таким образом, это ограничение задает бинарные связи между сущностями.

    Ограничение целостности UNIQUE, в отличие от PRIMARY KEY, допускает существование значения NULL. При этом к значению NULL также предъявляется требование уникальности, поэтому в столбце с ограничением целостности UNIQUE допускается существование лишь единственного значения NULL.

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

    Ограничение целостности CHECK задает диапазон возможных значений для столбца. Например, если в столбце хранится процентное значение, то необходимо гарантировать, что оно будет лежать в пределах от 0 до 100. Для этого можно использовать тип данных, допускающий хранение целых значений в диапазоне от 0 до 255, совместно с ограничением целостности CHECK, которое будет обеспечивать соответствующую проверку значений.

    Преимуществом ограничения целостности CHECK является возможность определения для одного столбца множества правил контроля значений.

    В основе ограничения целостности CHECK лежит проверка логического выражения, которое возвращает значение TRUE (истина) либо значение FALSE (ложь). Если возвращается значение TRUE, то ограничение целостности выполняется, и операция изменения или вставки данных разрешается. Когда же возвращается значение FALSE, то операция изменения или вставки данных отменяется.

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

    Определение значения по умолчанию: при вводе записи (строки) в таблицу каждый столбец должен содержать какое-либо значение. Если значение для столбца не указано, то столбец заполняется значениями NULL (конечно, если для него разрешено хранение значений NULL). Однако это нежелательно. Наилучшим решением в подобных ситуациях может быть определение для столбца значении по умолчанию. Например, часто ноль определяется как значение по умолчанию для числовых столбцов, а «n/а» (не определено) — как значение по умолчанию для символьных столбцов. Таким образом, определение для столбца значения по умолчанию гарантирует автоматическую подстановку этого значения, если при вставке новых строк значение для столбца не указано.

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

    Контроль целостности связей

    По способу контроля целостности данных, который осуществляет реляционная система (СУБД) ограничения целостности, принято различать:

    • безотлагательные, проверка которых осуществляется непосредственно в процессе манипулирования данными;
    • отложенные, проверка которых совершается по завершении всех манипуляций со связанными таблицами.

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


    1. Голицына О. Л., Максимов Н. В., Попов И. И. Базы данных: Учебное пособие. — М.: ФОРУМ: ИНФРА-М, 2006. — 352 с.
    2. Карпова И.П. Базы данных. Курс лекций и материалы для практических заданий. – Учебное пособие. – М.: Питер, 2013. – 240 с.
    3. Нестеров С. А. Базы данных: учеб. пособие / С. А. Нестеров. - СПб.: Изд-во Политехи, ун-та, 2013. - 150 с.
    4. Кара-Ушанов, В.Ю. SQL — язык реляционных баз данных : учебное пособие / В.Ю. Кара-Ушанов.— Екатеринбург : Изд-во Урал. ун-та, 2016.— 156 с.
    5. Гайдамакин Н. А. Автоматизированные информационные системы, базы и банки данных. Вводный курс: Учебное пособие. — М.: Гелиос АРВ, 2002. — 368 с.

    16.01.2022, 1478 просмотров.


    Уважаемые посетители! С болью в сердце сообщаем вам, что этот сайт собирает метаданные пользователя (cookie, данные об IP-адресе и местоположении), что жизненно необходимо для функционирования сайта и поддержания его жизнедеятельности.

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

    Dear visitors! It is a pain in our heart to inform you that this site collects user metadata (cookies, IP address and location data), which is vital for the operation of the site and the maintenance of its life.

    If you do not want to provide this data for processing under any pretext, please leave the site immediately and we will not tell anyone that you were here. With the same care, the site administration.