Лекция Реляционная модель данных



Скачать 99.65 Kb.
Дата23.04.2016
Размер99.65 Kb.

Лекция 8. Реляционная модель данных



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

Реляционные объекты данных

Реляционная модель включает три составные части:



  1. Объекты.

  2. Целостность.

  3. Операторы.

Рассмотрим объект на рис. 8.1.



Рис. 8.1. Основные элементы реляционной БД
Отношение соответствует тому, что мы обычно называем таблицей. Кортеж соответствует экземпляру записи, атрибут – полю таблицы, степень – количеству атрибутов, кардинальное число – количеству кортежей.
Домены

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

Домены также можно определить как именованное множество скалярных значений одного типа.



Скалярное значение (скаляр) – это наименьшая семантическая единица данных, которая является отдельным значением данных. У скаляров нет внутренней структуры, т.е. они не разложимы в данной реляционной модели. На самом деле, в других контекстах скаляры могут иметь внутреннюю структуру (например, фамилия состоит из букв), но для конкретной таблицы это разложение не имеет смысла, т.к. теряется его значение. Каждый атрибут должен быть определён на единственном домене. Например, атрибут StudentID определён на домене {1, 2, 3, ..., 10}, атрибут GroupID – на домене {1, 2, 3, ..., 10}, но это будут разные домены, хотя и содержат одинаковые элементы.

Не обязательно все элементы домена должны использоваться в конкретном отношении.

Основное значение доменов состоит в том, что они ограничивают операции сравнения.
Пример: рассмотрим запрос
SELECT * FROM Stduents, Groups

WHERE GroupsID.GroupID = Students.StudentID


Такой запрос не имеет смысла, поскольку мы сравниваем числовые значения из разных доменов. Правильно будет так:
WHERE GroupsID.GroupID = Students.GroupID

Отношения

Отношение можно рассматривать с двух сторон:

1) переменная отношения – это обычная переменная (как в любом языке программирования), т.е. именованный объект, значение которого может изменяться;

2) значение отношения – это значение этой переменной в конкретный момент времени.


Уточним определение отношения:

Отношение R, заданное на множестве доменов D1, D2, …, Dn, которые не обязательно различны, содержит две части: заголовок и тело.

Заголовок содержит фиксированное множество пар , где Ai – имя атрибута.

Тело содержит множество кортежей, каждый из которых в свою очередь содержит множество значений Zji, где i – номер атрибута, j – номер кортежа.
Свойства отношений:

1) нет одинаковых кортежей, поскольку тело отношений представляет собой множество;

2) кортежи неупорядочены, т.е. нет таких понятий, как «первый» или «десятый» кортеж, нет понятий «предыдущий» и «следующий»;

3) атрибуты неупорядочены, т.к. заголовок отношения тоже определён как множество;

4) все значения атрибутов неделимы, т.к. домен содержит неделимые элементы.

Такие отношения, которые не содержат делимых атрибутов, называются нормализованными, или представленными в первой нормальной форме.



Целостность реляционных данных

В каждый момент времени любая БД содержит конкретную конфигурацию значений, которая представляет определённое состояние объекта реального мира. Следовательно, БД нуждается в определении правил целостности, чтобы информировать СУБД об ограничениях реального мира. Например, для атрибутов «рост», «вес» необходимо ограничение неотрицательности. Такого рода правила, характерные для конкретной БД, называются специфическими. Кроме специфических правил существуют общие правила целостности для всех БД. Такие правила связаны с потенциальными, первичными и внешними ключами и будут рассмотрены далее в этой лекции.


Потенциальные ключи

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

1) уникальность, т.е. нет двух различных кортежей в текущем значении переменной отношения R с одинаковым значением K;

2) неизбыточность, т.е. никакое из подмножеств K не обладает свойством уникальности.

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

Могут существовать отношения, в которых единственным естественным потенциальным ключом будет комбинация всех атрибутов, но это может быть неудобно. Тогда вводят искусственный потенциальный ключ. Например, в таблице Students совокупность атрибутов {Name, GroupID, Birthdate} представляет собой ключ, но удобнее ввести искусственный ключ – StudentID.




StudentID

Name

GroupID

BirthDate

1

Казаков Петр

2

23.04.1990

2

Васильев Иван

1

11.05.1991

4

Шишкина Дарья

2

23.09.1991

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



Первичные и альтернативные ключи

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


Например, в таблице Groups:


GroupID

Name

1

ПМ-41

2

ПМ-51


GroupID – первичный ключ, а Name – альтернативный. В каждом отношении всегда должен быть один и только один первичный ключ.

Внешние ключи

Пусть R2 – отношение. Тогда внешний ключ FK в отношении R2 – это подмножество множества атрибутов R2 такое, что:

1) существует базовое отношение R1 с потенциальным ключом CK;

2) каждое значение FK в текущем значении R2 всегда совпадает со значением CK некоторого кортежа в текущем значении R1.


Из данного определения можно вывести такие следствия:

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

2) данный внешний ключ будет составным тогда и только тогда, когда соответствующий потенциальный ключ тоже составной;

3) каждый атрибут, входящий в данный внешний ключ, должен быть определён на том же домене, что и соответствующий атрибут потенциального ключа;

4) R1 и R2 не обязательно различны.
Рассмотрим отношение Students:


StudentID

Name

GroupID

BirthDate

1

Казаков Петр

2

23.04.1990

2

Васильев Иван

1

11.05.1991

4

Шишкина Дарья

2

23.09.1991

Атрибут GroupID будет являться внешним ключом, т.к. к нему проведена связь от таблицы Groups.

В связи с внешними ключами вводится ещё ряд терминов. Говорят, что значение внешнего ключа представлено ссылкой к кортежу, содержащему соответствующее значение потенциального ключа. Этот кортеж называется ссылочным, или целевым.

Отношение, которое содержит ссылочный ключ, называется ссылающимся отношением, а отношение, которое содержит соответствующий ключ, называется ссылочным, или целевым (target relation).

Существует правило ссылочной целостности: БД не должна содержать несогласованных значений внешних ключей. Несогласованное значение – это такое значение, для которого нет потенциального ключа в ссылочном отношении. Это правило эквивалентно определению внешнего ключа.

Правила внешних ключей

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

Например, нам необходимо удалить группу ПМ-51 из отношения Groups. Если мы просто удалим соответствующий кортеж из таблицы Groups, мы нарушим целостность, т.к. в таблице Students останутся студенты, принадлежащие уже несуществующей группе. Именно для таких случаев разрабатываются компенсирующие операции.

Таким образом, для БД необходимо предусмотреть компенсирующие операции для двух моментов:

1) удаление объекта ссылки внешнего ключа, т.е. ссылочного кортежа;

2) изменение (обновление) потенциального ключа, на который имеется ссылка.

Для компенсации этих операций существуют как минимум две возможности:

1. Ограничить выполнение операции. Для операции удаления – не удалять кортеж, пока не удалят все ссылающиеся кортежи, т.е. отложить удаление;

2. Каскадировать. Здесь возможно несколько вариантов, например при удалении:


  • удалить сам кортеж и все соответствующие ссылающиеся кортежи;

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



NULL-значение

Иногда требуется возможность обозначить отсутствие информации, которая является необязательной в данном отношении. Например, для отношения Students таким необязательным атрибутом может являться Height (рост студента). Проблему можно решить двумя способами.



  1. Использовать специальные значения того же типа данных, что и сам атрибут. Например, атрибут Height имеет тип int, тогда можно использовать –1 для обозначения отсутствия информации о росте студента, а любое другое число будет указывать сам рост.

  2. Использовать специальные универсальные маркеры – NULL-значения.

Эдгар Кодд1 предложил второй вариант, главным преимуществом которого является то, что NULL-значение некоторого атрибута свидетельствует именно о его отсутствии, т.е. это не то же самое, что и число ноль или пустая строка. Однако такие неопределённые значения могут вызвать осложнения при обеспечении целостности БД.

Среди специалистов разделились мнения относительно необходимости этих меток. Э. Кодд считает, что они должны быть неотъемлемой частью БД, а К. Дейт2, наоборот, полагает, что они даже вредны.

В общем случае в БД для каждого атрибута можно задать, разрешено или не разрешено содержать NULL-значение.

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

Правило обеспечения целостности применимо только:

1) к базовым отношениям, а не вычисляемым (производным);

2) к первичным ключам, а для альтернативных может быть разрешено или запрещено использование NULL-значения.

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




StudentID

Name

GroupID

BirthDate

1

Казаков Петр

2

23.04.1990

2

Васильев Иван

1

11.05.1991

4

Шишкина Дарья

2

23.09.1991




GroupID

Name

1

ПМ-41

2

ПМ-51

После удаления группы ПМ-51, получим следующее состояние отношения Students:




StudentID

Name

GroupID

BirthDate

1

Казаков Петр

NULL

23.04.1990

2

Васильев Иван

1

11.05.1991

4

Шишкина Дарья

NULL

23.09.1991


Краткие итоги. Рассмотрены основные элементы реляционных баз данных, а также вопросы целостности данных. Даны определения первичных и внешних ключей.

1 Эдгар Ф. Кодд (Edgar F. Codd) (1923-2003) – американский ученый английского происхождения. Долгое время работал в корпорации IBM. Создал основы теории реляционных баз данных. Сформулировал 12 законов аналитической обработки данных и ввел термин OLAP (On-Line Analytical Processing – оперативная аналитическая обработка).

2 Кристофер Дж. Дейт (Christopher J. Date) (р.1941) – английский ученый, работавший над теорией реляционных баз данных совместно с Э.Коддом.




База данных защищена авторским правом ©bezogr.ru 2016
обратиться к администрации

    Главная страница