Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсач по Гордиенко.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.21 Mб
Скачать

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

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

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

Приведем примеры некоторых ограничений целостности данных:

  • Значение атрибута дата рождения должно заполняться в формате типа данных «Дата»;

  • Значение атрибута Цена товара не должно быть пустым, должно принадлежать множеству действительных чисел и удовлетворять условию > 0 и т.д.

Для связей могут быть использованы следующие виды ограничений:

  • Невозможно ввести в поле внешнего ключа подчиненной таблицы значение, не содержащееся в ключевом поле главной таблицы;

  • Не допускается удаление записи из главной таблицы, если существуют связанные с нею записи в подчиненной таблице;

  • Невозможно изменить значение ключевого поля в главной таблице, если существуют записи в подчиненной таблице, связанные с этим полем.

3.2. Нормализация отношений базы данных

3.2.1. Функциональные зависимости

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

Функциональная зависимость описывает связь между атрибутами отношения. Например, если в отношении R, содержащем атрибуты A и В, атрибут В функционально зависит от атрибута А (обозначается АВ), то каждое значение атрибута А связано только с одним значением атрибута В.

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

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

Пусть имеется отношение R(НомерСотрудника, Должность). Зная значение атрибута НомерСотрудника, можно определить должность, занимаемую этим сотрудником. Иначе говоря, атрибут Должность функционально зависит от атрибута НомерСотрудника (НомерСотрудника Должность).

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

Одновременное соблюдение двух функциональных зависимостей АВ и ВА говорит о существовании взаимно-однозначной функциональной зависимости. Например, пусть имеется отношение Предприятие (НазваниеПредприятия, РасчетныйСчетПредприятия). Если ввести ограничения, что каждое предприятие имеет только один уникальный расчетный счет, названия предприятий не повторяются, мы имеем следующие функциональные зависимости:

FПредприятие= {НаименованиеПредприятияРасчетныйСчетПредприятия;

РасчетныйСчетПредприятияНаименованиеПредприятия}.

Еще одним случаем является отсутствие функциональной зависимости. Например, отношение СпортивныеСекции (Секция, Плата):

F СпортивныеСекции= {Секция Плата;

Плата Секция}.

О дну и ту же секцию студенты могут оплачивать по-разному, и одна и та же плата может быть для разных секций. Если в отношении R(А, В) отсутствуют функциональные зависимости А В и В А, то первичным ключом отношения R будет сама схема отношения, т.е. атрибуты А, В.

Во всех предыдущих примерах были рассмотрены случаи для пары атрибутов А и В, однако, понятие функциональной зависимости распространяется на случай трех и более атрибутов.

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

FСдачаПроекта= {ФИОСотрудника, НазваниеПроектаДатаСдачи;

ФИОСотрудника, НазваниеПроектаСтоимостьПроекта;

ФИОСотрудника, ДатаСдачиНазваниеПроекта;

ФИОСотрудника, ДатаСдачиСтоимостьПроекта}.

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

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

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

Для определения ключевых элементов произвольного отношения существует следующая методика, состоящая из 3х этапов:

1) для отношения R выписываются ограничения в словесной форме, которые влияют на наличие или отсутствие функциональных зависимостей;

2) по этим ограничениям выписывается множество функциональных зависимостей таким образом, чтобы каждый из атрибутов отношения R появился один раз слева или справа от стрелки;

3) объединение атрибутов, стоящих слева и будет давать вероятный ключ.