Моделирование баз данных. Учебное пособие
.pdf
множества сущностей ГРУППЫ и ДИСЦИПЛИНЫ. Поэтому для каждой конкретной пары сущностей группа-дисциплина существует не более одного журнала учета, в котором отмечаются проведение занятий и присутствие на них некоторого студента. Для обозначения связи «Изучаются» более уместно было бы вместо двойного ромба использовать обычный, одинарный (рис. 20).
ЖУРНАЛ
Числятся |
Состоят |
Изучаются |
|
СТУДЕНТЫ |
ГРУППЫ |
ДИСЦИПЛИНЫ |
|
ФИО |
НАЗВАНИЕ |
ИМЯ |
ЛК |
|
|
||
НОМЕР |
|
|
|
СТ |
|
СЕМЕСТР |
ЛК |
АДРЕС |
|
|
|
|
КОЛИЧЕСТВО |
|
|
|
|
|
ЛК |
ДР |
|
|
|
|
|
|
ДР |
Рис. 20. Слабое множество ЖУРНАЛ и связь «Изучаются» |
|
||
41
ГЛАВА 2. МОДЕЛИРОВАНИЕ РЕЛЯЦИОННОЙ СХЕМЫ ДАННЫХ
Проектирование баз данных с помощью модели «сущность-связь» предлагает простые средства описания структур данных. Но большинство современных баз данных основываются на реляционных структурах данных.
Реляционная модель основана на основном понятии «отношение» (relation), имеет математическое обоснование, простую структуру. Реляционная модель поддерживается высокоуровневым языком программирования SQL (Structured Query Language – язык структурированных запросов), который позволяет манипулировать данными, хранящимися в отношениях, самыми различными способами.
ER-модель нельзя использовать в качестве основы для какого-либо языка управления данными. С другой стороны, проектировать базы данных зачастую легче именно в терминах ER-модели, поэтому первоначальный проект создается в терминах модели «сущность-связь». Далее он преобразовывается в набор реляционных отношений. Реляционная теория, обычно сводимая к правилам нормализации отношений, основывается преимущественно на концепции функциональных зависимостей. Практическое применение методов функциональной зависимости позволяет существенно улучшить структуру отношений, представляющих конкретную предметную область, подлежащую моделированию.
2.1. ЭЛЕМЕНТЫ РЕЛЯЦИОННОЙ МОДЕЛИ
Реляционные модели (relational model) представляют данные об окружающем мире в виде набора таблиц, называемых отношениями (relations).
Пример 29. В табл. 1 представлено отношение ГРУППЫ, которое предназначено для хранения информации об элементах множества сущностей ГРУППЫ из рассматриваемого примера учебной базы данных.
Каждая строка отношения ГРУППЫ содержит одну сущность группы, а каждый столбец — один из атрибутов множества сущностей ГРУППЫ.
42
Таблица 1
Отношение ГРУППЫ
Название |
Количество |
АСП1-1 |
25 |
|
|
АСР1-1 |
20 |
|
|
АСМ2-1 |
24 |
|
|
К элементам отношения относятся:
атрибуты;
схемы отношения;
кортежи;
домены;
формы представления отношений;
экземпляры отношений.
Атрибуты отношения выполняют функцию наименований его столбцов и содержательно описывают смысл и назначение элементов данных, располагаемых в соответствующих ячейках. Атрибуты задаются в верхней части табли- цы-отношения.
Пример 30. Отношение ГРУППЫ (табл. 1) состоит из двух атрибутов:
НАЗВАНИЕ, КОЛИЧЕСТВО.
Встолбце НАЗВАНИЕ хранятся данные о названиях групп.
Встолбце КОЛИЧЕСТВО хранятся целочисленные данные о количестве студентов в каждой группе.
Наименования отношения и атрибутов этого отношения в совокупности называют схемой отношения. Схема отношения представляется в виде имени отношения, за которым следует список имен атрибутов, заключенный в круглые скобки.
Пример 31. Схема отношения ГРУППЫ (табл. 1) может выглядеть следующим образом:
ГРУППЫ (НАЗВАНИЕ, КОЛИЧЕСТВО).
43
Атрибуты схемы отношения образуют на самом деле множество, а не упорядоченный список. Однако чтобы облегчить работу с отношениями, часто бывает полезно принять некий порядок следования их атрибутов, поэтому каждый раз, когда приводится схема отношения со списком атрибутов, то подразумевается определенный порядок перечисления атрибутов, позволяющий однозначно задавать любые кортежи данных этого отношения.
Проект базы данных, выполненный в рамках реляционной модели, включает одну или несколько схем отношений. Набор схем отношений называют ре-
ляционной схемой базы данных, или просто схемой базы данных.
Строки отношения, отличные от той, которая представляет строка атрибутов, называют кортежами. Кортеж содержит по одному компоненту для каждого атрибута отношения.
Пример 32. Отношение ГРУППЫ состоит из трех кортежей (см. табл. 1). Первый из трех кортежей отношения ГРУППЫ, включает два компонента
АСП1-1 и 25, которые соответствуют атрибутам НАЗВАНИЕ и КОЛИЧЕСТВО. Если необходимо описать кортеж отдельно, вне контекста отношения, принято заключать его в круглые скобки и разделять компоненты символом запятой. Первый кортеж отношения ГРУППЫ можно задать следующим образом:
(АСП1-1, 25)
При этом если кортеж представляется так, как показано в примере 32, видимая связь компонентов с атрибутами утрачивается, поэтому следует непременно указывать, к какому отношению принадлежит данный кортеж, и перечислять его компоненты в том порядке, который зафиксирован в схеме отношения.
Одно из требований, выдвигаемых реляционной моделью, гласит, что каждый компонент кортежа должен быть простым, т.е. относиться к некоторому базовому типу. В качестве значений компонентов кортежа не разрешается использовать записи, множества, списки, массивы или иные составные объекты, которые допускают естественное разбиение на более мелкие элементы.
С каждым атрибутом отношения ассоциирован определенный домен, т.е. некоторый базовый тип. Значения компонентов всех кортежей должны принадлежать соответствующим доменам, определяемым каждым из атрибутов отношения.
44
Пример 33. Первые компоненты всех кортежей отношения ГРУППЫ (см. табл. 1) должны быть строковыми данными, а вторые – целыми числами.
Домены являются частью схемы отношения. Таким образом, отношения – это множества кортежей.
Порядок, в котором кортежи перечисляются в пределах отношения, может быть любым. Возможно, например, переставить кортежи отношения ГРУППЫ (см. табл. 1) любым образом, но это никоим образом не повлияет на его содержимое.
Более того, допускается без каких-либо последствий изменять и порядок задания атрибутов отношения. Если, однако, реляционная схема отношения подвергается упорядочению, необходимо помнить, что атрибуты являются заголовками столбцов отношения. Поэтому изменяя порядок следования атрибутов, необходимо соответствующим образом расположить столбцы в отношении. При перемещении столбцов изменится и взаимное положение компонентов кортежей. В результате каждый компонент кортежа займет то же место, что и соответствующий ему атрибут.
Пример 34. В табл. 2 показан другой вариант представления отношения ГРУППЫ, получаемых при перемещении его строк и столбцов.
Таблица 2
Другая форма отношения ГРУППЫ
Количество |
Название |
|
|
24 |
АСМ2-1 |
|
|
25 |
АСП1-1 |
|
|
20 |
АСР1-1 |
|
|
Все возможные версии отношения ГРУППЫ (см. табл.1) по существу являются различными формами, в которых допустимо изображать отношение ГРУППЫ.
Отношение, содержащее информацию о группах, по своей природе не является статичным. Этому и большинству других реляционных отношений со временем свойственно меняться. Изменения обычно затрагивают содержимое отношения: в базу данных помещаются новые кортежи, а также модифицируются (при поступлении дополнительной уточняющей информации) или удаляются (по самым разным причинам) существующие. Например, добавляются новые группы первокурсников или осуществляется переход студента из одной группы в другую.
45
Гораздо менее вероятны такие изменения, которые затрагивают схему отношения. Однако ситуации, связанные с необходимостью добавления, изменения или удаления атрибутов отношения, иногда все же возникают. Операции по изменению схемы реальных баз данных обычно весьма дорогостоящи, поскольку подразумевают просмотр и модификацию миллионов кортежей. Например, при добавлении нового атрибута задача отыскания подходящих значений для новых компонентов существующих кортежей может оказаться весьма трудоемкой или даже вовсе неразрешимой.
Конкретное множество кортежей отношения называют экземпляром от-
ношения.
Пример 35. Набор из трех кортежей, показанный в табл.1, образует некоторый экземпляр отношения ГРУППЫ. При этом отношение ГРУППЫ может изменяться в любое время.
Традиционные системы баз данных обычно поддерживают только одну версию любого отношения: набор кортежей, которые содержатся в отношении в данный момент. Такой экземпляр отношения принято называть текущим эк-
земпляром.
2.2.ПРЕОБРАЗОВАНИЕ ER-ДИАГРАММ
ВРЕЛЯЦИОННЫЕ СХЕМЫ
За стадией проектирования следует стадия реализации, предусматривающая использование инструментов конкретной системы управления базами данных. Поскольку подавляющее большинство систем баз данных основано на реляционной модели, уместно предположить, что в ходе проектирования было бы целесообразно применять ту же модель, а не модель «сущность-связь» или любые другие средства проектирования.
На практике, однако, зачастую проще приступить к проектированию ERили другой аналогичной модели, а затем преобразовать результат в реляционную модель. Основной довод в пользу такого подхода связан с тем, что реляционная модель, основанная на единственном понятии «отношения», а не на совокупности различных взаимодополняющих понятий, таких как «множество сущностей» и «связь» в ER-модели, обладает определенными ограничениями в смысле гибкости, которые удобнее воплотить уже по завершении начальной стадии проектирования.
46
В первом приближении процесс «превращения» ER-диаграммы в реляционную схему довольно прямолинеен [3]:
преобразовать каждое множество сущностей в отношение с тем же набором атрибутов;
заменить каждую связь отношением, атрибуты которого являются ключами множеств сущностей, соединяемых этой связью.
Хотя названные правила охватывают изрядную часть рассматриваемого процесса, существует несколько особых ситуаций, с которыми приходится считаться [3]:
слабые множества сущностей не могут быть преобразованы в отношения непосредственно;
связи isa и подклассы требуют специального подхода;
иногда целесообразно объединить в составе одного отношения два других, например, отношение для множества сущностей Е с отношением для связи типа «многие к одному», которая соединяет Е с другими множествами.
Рассмотрим процесс преобразования ER-модели в реляционную модель базы данных.
1-й этап: от множеств сущностей к отношениям.
Вначале рассмотрим множества сущностей, не относящиеся к категории слабых. Для каждого множества сущностей, не являющегося слабым, можно создать отношение с теми же именем и набором атрибутов. Такое отношение не будет содержать каких бы то ни было сведений о связях, в которых участвует исходное множество сущностей. Информация о связях отображается в отдельных отношениях.
В процессе моделирования данных следует различать схему и экземпляр отношения. Описания множеств сущностей и связей — это средства представления схемы в ER-модели, а множества сущностей и связей — это экземпляры схемы. Экземпляр базы данных не является частью ее дизайна: в процессе проектирования можно только предполагать, какие конкретные образцы данных будут в ней храниться.
Пример 36. Рассмотрим три множества сущностей – ГРУППЫ, СТУДЕНТЫ, ДИСЦИПЛИНЫ – ER-диаграммы (рис. 16).
Множество сущностей ГРУППЫ было преобразовано в отношение в примере 29 (см. табл. 1).
Множество сущностей ДИСЦИПЛИНЫ можно преобразовать в отношение. Схема отношения ДИСЦИПЛИНЫ:
ДИСЦИПЛИНЫ (ИМЯ, СЕМЕСТР, ЛК, ПР, ЛБ, ОТЧЕТ).
47
Множество сущностей СТУДЕНТЫ можно преобразовать в отношение. Схема отношения СТУДЕНТЫ:
СТУДЕНТЫ (НОМЕРСТ, ФИО, АДРЕС, ДР).
2-й этап: от ER-связей к отношениям.
Связи ER-модели также представляются отношениями. Отношение для заданной связи R должно охватывать атрибуты, перечисленные далее [3]:
в схему отношения для связи R заносятся ключевые атрибуты каждого из множеств сущностей, соединяемых связью R;
если связь обладает собственными атрибутами, они также вводятся в
набор атрибутов отношения для этой связи.
Если одно и то же множество сущностей в контексте связи упоминается многократно, в различных «ролях», каждый из его ключевых атрибутов вводится в отношение столько раз, в скольких «ролях» он участвует.
При этом во избежание конфликтов имена атрибутов должны быть изменены. Переименование атрибутов выполняется в тех случаях, когда атрибуты с одинаковым именем встречаются в наборе атрибутов самой связи или среди атрибутов тех множеств сущностей, которые охватываются этой связью.
Пример 37. Рассмотрим связь «Состоят» ER-диаграммы (см. рис. 16), соединяющую множества сущностей ГРУППЫ и СТУДЕНТЫ.
В схему отношения СОСТОЯТ для связи «Состоят» введем ключевые атрибуты множеств сущностей, соединяемых связью «Состоят»: НАЗВАНИЕ множества сущностей ГРУППЫ и НОМЕРСТ множества сущностей СТУДЕНТЫ. Схема отношения СОСТОЯТ примет следующий вид:
СОСТОЯТ (ГРУППА, НОМЕРСТ).
Типичный экземпляр отношения СОСТОЯТ приведен в табл. 3.
Таблица 3
Отношение СОСТОЯТ
ГРУППА |
НОМЕРСТ |
|
|
АСП1-1 |
101234 |
|
|
АСР1-1 |
234132 |
|
|
АВМ2-1 |
235194 |
|
|
48
Связь «Изучают» ER-диаграммы (см. рис. 16) может быть преобразована в отношение ИЗУЧАЮТ с атрибутом НАЗВАНИЕ (служащий ключом для множества сущностей ГРУППЫ) и атрибутами ИМЯ и СЕМЕСТР (служившие ключевыми атрибутами множества ДИСЦИПЛИНЫ). В табл. 4 показан простой экземпляр отношения ИЗУЧАЮТ.
Таблица 4
Отношение ИЗУЧАЮТ
ГРУППА |
ДИСЦИПЛИНА |
СЕМЕСТР |
|
|
|
АСП1-1 |
Информатика |
2 |
|
|
|
АСР1-1 |
Информатика |
2 |
|
|
|
АСР2-1 |
Информатика |
3 |
|
|
|
АСР1-1 |
Математика |
1 |
|
|
|
Поскольку названия дисциплин в столбце ДИСЦИПЛИНА (табл.4) выглядят как ключевой атрибут, может показаться, что атрибут СЕМЕСТР избыточен. Однако, если в базу данных попадет информация о нескольких дисциплинах с одним и тем же названием (например, Информатика), атрибут СЕМЕСТР приобретет существенное значение, поскольку позволит определить, в каких именно семестрах изучается конкретная дисциплина в той или иной группе.
Иногда отношения, получаемые в результате прямых преобразований из множеств сущностей или связей, нельзя считать наилучшей формой представления определенных элементов данных.
Предположим, имеется множество сущностей Е, соединенное посредством связи R типа «многие к одному» с множеством F в направлении от Е к F. Реляционные схемы каждого из отношений, полученных на основе множества Е и связи R, будут содержать ключ множества Е. Кроме того, в схему отношения для множества Е будут введены также атрибуты Е, не относящиеся к ключевым, а в схему отношения для связи R – собственные атрибуты R и ключевые атрибуты множества F. Поскольку связь R относится к типу «многие к одному», все указанные атрибуты обладают значениями, которые однозначным образом определяются на основе ключа множества Е, и их можно объединить в одной схеме отношения, состоящей:
из всех атрибутов множества Е;
ключевых атрибутов множества F;
собственных атрибутов связи R.
49
В кортеже для сущности е множества Е, которая не связана ни с одной сущностью множества F, компоненты, отвечающие атрибутам получат некоторые «нулевые» (NULL) значения.
Пример 38. Связь «Состоят» соединяет множества сущностей СТУДЕНТЫ и ГРУППЫ. Процесс превращения множеств сущностей СТУДЕНТЫ, ГРУППЫ в отношения рассматривался в примере 36, связи «Состоят» в отношение – в примере 37.
Теперь можно объединить полученные решения 36 и 37 в общую реляционную схему отношения. Пример экземпляра такого отношения приведен в табл. 5.
Таблица 5
Объединение отношений СТУДЕНТЫ и ГРУППЫ
НОМЕРСТ |
ФИО |
АДРЕС |
ДР |
ГРУППА |
|
|
|
|
|
101234 |
ИвановИИ |
Нижний |
05.03.1994 |
АСП1-1 |
|
|
Новгород |
|
|
|
|
|
|
|
234132 |
ПетровПП |
Нижний |
12.04.1995 |
АСР1-1 |
|
|
Новгород |
|
|
|
|
|
|
|
305423 |
СидоровИП |
Арзамас |
23.10.1997 |
АСР2-1 |
|
|
|
|
|
234235 |
ФедоровПА |
Нижний |
20.08.1995 |
АСР1-1 |
|
|
Новгород |
|
|
|
|
|
|
|
Не всегда существует необходимость объединять отношения в одно. Соединение всех атрибутов, зависящих от ключа множества сущностей Е, в единое отношение, в определенных случаях дает дополнительные преимущества – даже тогда, когда существует сразу несколько связей типа «многие к одному», направленных от Е к другим множествам. Например, гораздо проще получить ответ на запрос, касающийся данных, которые размещены в одном отношении, нежели обращаться за теми же данными одновременно к нескольким отношениям.
С другой стороны, не всегда следует объединять отношения для множества Е с отношением для связи R, которая охватывает Е, но не является связью типа «многие к одному», направленной от Е к каким-либо другим множествам. Подобная операция нередко приводит к избыточности данных.
Пример 40. Рассмотрим объединение отношения СТУДЕНТЫ и ГРУППЫ с отношение ДИСЦИПЛИНЫ. Связь «Состоят» имеет тип «многие ко многим». Результат может выглядеть так, как показано в табл. 6.
50
