Файл: Базы данных - уч. пособие.pdf

Добавлен: 28.11.2018

Просмотров: 10883

Скачиваний: 43

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

56

Глава 3. Реляционная модель

держащим множество кортежей

(a

1

a

2

. . .a

n

таких, что для

всех кортежей

(b

1

b

2

. . .b

m

) ∈ S в отношении R должен суще-

ствовать кортеж

(a

1

a

2

. . .a

n

b

1

b

2

. . .b

m

).

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Рассмотрим пример: пусть в БД имеются два отношения «ВУЗ» и «Направле-

ния подготовки», необходимо найти вузы, в которых осуществляется обучение по
всем направлениям подготовки (рис. 3.18).

Рис. 3.18 – Пример выполнения операции деления

3.4.3 Реляционное исчисление

Реляционное исчисление является прикладной ветвью формального механизма

исчисления предикатов первого порядка. Базисными понятиями исчисления явля-
ются понятие переменной с определенной для нее областью допустимых значений
и понятие правильно построенной формулы, опирающейся на переменные, преди-
каты и кванторы [1].

Реляционное исчисление основано на исчислении кортежей, где областью опре-

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

Исчисление кортежей было введено Коддом в 1971 году — это нотация для

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

Пусть имеется БД, в состав которой входят два отношения «Студенты» с заго-

ловком (Stud_id, № зачетной книжки, ФИО студента, Место рождения, Дата рож-
дения, № группы) и отношение «Успеваемость» с заголовком (Stud_id, Наименова-
ние дисциплины, Семестр, Оценка). Необходимо получить список студентов и на-
именований дисциплин, по которым получены неудовлетворительные оценки во
втором семестре.


background image

3.4 Технология манипулирования данными в реляционной модели

57

В результате формирования такого запроса с помощью операций реляционной

алгебры получилось бы алгебраическое выражение, которое читалось бы следую-
щим образом:

1) выполнить операцию соединения отношений «Студенты» и «Успеваемость»

по условию: (Студенты.Stud_id = Успеваемость.Stud_id);

2) ограничить результирующее отношение по условию: Оценка = 2;

3) ограничить результирующее отношение по условию: Семестр = 2;

4) спроецировать полученное отношение на атрибуты «ФИО студента», «На-

именование дисциплины».

Таким образом, для получения результирующего отношения, удовлетворяю-

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

Выбрать «ФИО студента» и «Наименование дисциплины» для студентов таких,

для которых существует кортеж в отношении «Успеваемость» с таким же значе-
нием «Stud_id», что и в отношении «Студенты», при этом выполняется условие
назначения атрибутов Семестр = 2 и Оценка = 2.

Здесь мы указали характеристики результирующего набора кортежей, не указав

способ его формирования. Для выполнения подобных запросов в СУБД предусмот-
рены процедуры выбора необходимых операций по обработке данных, а также их
последовательности. Обычно говорят, что алгебраическая формулировка является
процедурной, т. е. задающей правила выполнения запроса, а логическая — описа-
тельной (или декларативной), поскольку она всего лишь описывает свойства же-
лаемого результата [1].

Для исчисления кортежей характерно такое понятие, как правильно построен-

ные формулы WFF (Well-Formed Formula), предназначенные для выражения усло-
вий, накладываемых на кортежные переменные. В основе WFF лежат простые
сравнения (comparison) значений атрибутов переменных или некоторых констант.
Простое сравнение есть WFF, а WFF в круглых скобках есть простое сравнение.
Примером простого сравнения может быть следующее предложение: «Успевае-
мость.Оценка = 2».

Для построения более сложных WFF используются логические связки AND,

OR, NOT, а также конструкция If . . . Then.

Пусть есть WFF, а — простое сравнение, тогда правильно построенными

формулами являются следующие выражения: AND FOR F; If Then F.

Возможно также построение WFF с помощью кванторов существования и все-

общности.

Пусть есть WFF, в которой используется некоторая переменная var, тогда

следующие выражения есть WFF:

∃ var (F); ∀ var (F).

Переменные, входящие в правильно построенную формулу, могут быть свя-

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


background image

58

Глава 3. Реляционная модель

На практике это означает, что если для какого-то набора значений свободных

кортежных переменных при вычислении WFF получено значение true, то эти зна-
чения кортежных переменных могут входить в результирующее отношение [1].

Переменная называется связанной, если при построении WFF ее имя исполь-

зовано сразу после квантора

∃ или ∀.

Связанная переменная не видна за пределами минимальной WFF, связавшей

эту переменную, т. е. при вычислении значения такой WFF используется не одно
значение связанной переменной, а ее полная область определения.

Говоря о свободных и связанных переменных, имеют в виду свободные и свя-

занные вхождения переменных. Легко увидеть, что если переменная var является
связанной в WFF F, то во всех WFF, включающих данную, может использоваться
имя переменной var, которая может быть свободной или связанной, но в любом
случае не имеет никакого отношения к вхождению переменной var в WFF [1].

. . . . . . . . . . . . . . . . . . . . . .

Пример 3.1

. . . . . . . . . . . . . . . . . . . . .

В следующем примере мы имеем несколько разнотипных вхождений перемен-

ных «Студенты» и «Успеваемость».

∃ Студенты (Студенты.Stud_id=Успеваемость.Stud_id) AND

∀ Успеваемость (Успеваемость.Семестр=2) AND

∀ Успеваемость (Успеваемость.Оценка=2);

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

WFF предоставляют возможность сформулировать некоторые условия выборки

данных из отношений БД. Для использования реляционного исчисления в реаль-
ной работе с БД необходимо применение еще одного компонента, определяющего
набор и имена атрибутов результирующего отношения. Этот компонент реляцион-
ного исчисления называется целевым списком (target_list).

Что же касается исчисления кортежей, то выражением реляционного исчисле-

ния кортежей является конструкция вида target_list WHERE wff. Значением такого
выражения будет отношение, тело которого определяется WFF, а набор атрибутов
этого отношения определяется целевым списком.

Как было отмечено выше, в исчислении доменов областью определения пе-

ременных являются не тела отношений, а домены. Можно говорить о домен-
ных переменных, таких как «ФИО» (значения — допустимые ФИО студентов) или
«N_Group» (значения — допустимые номера групп) и т. д.

Формальным отличием исчисления доменов от исчисления кортежей являет-

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

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

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


background image

Контрольные вопросы по главе 3

59

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Контрольные вопросы по главе 3

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

2. Сформулируйте основные свойства отношений.

3. Поясните смысл понятия целостности данных.

4. Дайте определение первой нормальной формы.

5. Перечислите и кратко охарактеризуйте операции реляционной алгебры.

6. Приведите примеры выполнения операций реляционной алгебры.

7. Поясните смысл применения реляционного исчисления.


background image

Глава 4

ТЕХНОЛОГИЯ ПРОЕКТИРОВАНИЯ

РЕЛЯЦИОННЫХ БАЗ ДАННЫХ

4.1 Нормализация отношений

4.1.1 Термины и определения

При проектировании базы данных разработчику необходимо определить кон-

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

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

Что касается физического проектирования БД, то на этой стадии на основа-

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

При проектировании реляционных БД трудно представить какие-либо общие

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

Таким образом, абстрагируясь от конкретных СУБД, будем считать, что при

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