Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Базы данных проектирование и реализация. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
надо понимать, что в строгой реляционной модели отношение не явля­ется таблицей, кортеж – это не строка, а атрибут – это не столбец. Отно­шение – понятие абстрактное, а таблица – лишь его визуальное пред­ставление.
Термины «таблица», «строка», «столбец» могут использоваться только в неформальном контексте, при условии полного понимания, что эти термины являются
приближением и не дают точного представления
о сути обозначаемых понятий.
4.1.1. ДВЕНАДЦАТЬ ПРАВИЛ КОДДА
Кодд [34], определив реляционную модель данных, сформулировал правила, позволяющие сказать, поддерживает ли СУБД реляционную модель, или в какой степени она является реляционной. Эти правила из­вестны как 12 правил Кодда (на самом деле их 13, поскольку счет начи- нается с 0), и им должна удовлетворять каждая система управления ре­ляционными базами данных, хотя это
не всегда соблюдается на прак-
тике.
Правило 0: Основное (Foundation Rule)
Чтобы быть реляционной системой управления базами данных (СУБД), система должна использовать исключительно свои реляцион­ные возможности для управления базой данных.
Правило 1: Информационное (The Information Rule)
Данные, хранящиеся в базе данных, будь то пользовательские дан­ные или метаданные, должны быть значением некоторой ячейки
таб-
лицы. Все в базе данных должно храниться в формате таблицы.
Правило 2: Гарантированный доступ к данным (Guaranteed Access Rule)
В реляционной базе данных каждое отдельное (атомарное) значение данных должно быть логически доступно с помощью комбинации имени таблицы, значения первичного ключа и имени столбца.
Правило 3: Систематическая поддержка отсутствующих значе­ний (Systematic Treatment of Null Values)
Неизвестные, или
отсутствующие, значения NULL, отличные от лю-
бого известного значения (NULL можно интерпретировать как одно из следующих: данные отсутствуют, данные неизвестны или данные не­применимы), должны поддерживаться для всех типов данных при вы­полнении любых операций.
31
Правило 4: Доступ к словарю данных в терминах реляционной модели (Active On-Line Catalog Based on the Relational Model)
Словарь данных
1
должен сохраняться в форме реляционных таблиц,
и СУБД должна поддерживать доступ к нему при помощи стандартных языковых средств, тех же самых, которые используются для работы с реляционными таблицами, содержащими пользовательские данные.
Правило 5: Полнота подмножества языка (Comprehensive Data Sublanguage Rule)
Доступ к базе данных возможен только с использованием языка с линейным синтаксисом, который поддерживает
определение данных, манипулирование данными и операции управления транзакциями. Этот язык можно использовать напрямую или с помощью какого-либо при­ложения. Если база данных разрешает доступ к данным без помощи этого языка, то это считается нарушением.
Правило 6: Возможность изменения представлений (View
Updating Rule)
Каждое представление должно поддерживать все операции манипу-
лирования данными, которые
поддерживают реляционные таблицы:
операции выборки, вставки, изменения и удаления данных.
Правило 7: Наличие высокоуровневых операций управления
данными (High-Level Insert, Update, and Delete)
Операции вставки, изменения и удаления данных должны поддер­живаться не только по отношению к одной строке реляционной таб­лицы, но и по отношению к любому множеству строк.
Правило 8: Физическая независимость данных (
Physical Data
Independence)
Данные, хранящиеся в базе данных, не должны зависеть от прило­жений, обращающихся к базе данных. Любые изменения в физической структуре базы данных не должны влиять на то, как к данным обраща­ются внешние приложения.
Правило 9: Логическая независимость данных (Logical Data Independence)
1
Словарь данных содержит информацию об источниках, форматах и взаи-
мосвязях между данными, их описания, сведения о характере использования и распределении ответственности. Словарь данных можно рассматривать как вспомогательную базу данных (метаданных), в которой хранится информация об основной базе данных.
32
Логические данные в базе данных должны быть независимы от поль­зовательского представления (приложения). Любое изменение логиче­ских данных не должно влиять на использующие их приложения. Например, если две таблицы объединены или одна разделена на две раз­ные таблицы, это не должно повлиять на пользовательское приложение или изменить его.
Правило 10: Независимость
контроля целостности (Integrity
Independence)
База данных должна быть независимой от приложения, которое ее использует. Все его ограничения целостности могут быть независимо изменены без необходимости каких-либо изменений в приложении. Это правило делает базу данных независимой от клиентского прило­жения и его интерфейса.
Правило 11: Независимость от расположения (Distribution Independence)
База данных может быть
распределенной, может находиться на не-
скольких компьютерах, и это не должно влиять на приложения. Перенос базы данных на другой компьютер не должен оказывать влияния на при­ложения.
Правило 12: Согласование языковых уровней (The Nonsubversion Rule)
Если в системе есть интерфейс, обеспечивающий доступ к низко­уровневым записям, то этот интерфейс не должен иметь возможности нарушить работу системы и обойти ограничения безопасности и целост­ности.
4.1.2. ЭЛЕМЕНТЫ РЕЛЯЦИОННОЙ АЛГЕБРЫ
Реляционная алгебра – это язык операций, выполняемых над отно­шениями – таблицами реляционной базы данных. Операции реляцион­ной алгебры позволяют на основе одного или нескольких отношений (таблиц) создавать другое отношение (таблицу) без изменения самих ис­ходных отношений. Полученная в результате операции таблица сохра­няется как временная структура, создаваемая функциями для работы с
базами данных в языках программирования.
Определим следующие условные обозначения:
X, Yотношения-операнды;
33
R – отношение-результат;
Mx, My, Mr – мощности отношений (количество кортежей) X, Y, R;
А, B – подмножества схем отношений.
ТЕОРЕТИКО-МНОЖЕСТВЕННЫЕ ОПЕРАЦИИ
Объединение – тело отношения-результата является объединением
множеств кортежей отношений-операндов.
Символическое обозначение R = X + Y.
Мощность результата удовлетворяет соотношению max(Mx, My) ≤ ≤ MrMx + My.
Схемы операндов должны быть одинаковы, схема результата не из­меняется.
Вычитание (разность) – тело отношения-результата получено вы­читанием (удалением кортежей) отношения Y из отношения X.
Символическое обозначение R = X – Y.
Мощность результата удовлетворяет соотношению 0 ≤ MrMx.
Схемы операндов должны быть одинаковы, схема результата не из­меняется.
Пересечение – тело отношения-результата является пересечением множеств кортежей отношений-операндов.
Символическое обозначение R = X
Y = X – (X – Y).
Мощность результата удовлетворяет соотношению 0 ≤ Mr ≤ ≤ min(Mx, My).
Схемы операндов должны быть одинаковы, схема результата не из­меняется.
Декартово произведение – тело отношения-результата является де­картовым произведением множеств кортежей отношений-операндов.
Символическое обозначение R = X * Y.
Мощность результата удовлетворяет соотношению Mr = Mx * My.
Cхема результата является конкатенацией (сцеплением) схем
опе-
рандов.
ОПЕРАЦИИ, УЧИТЫВАЮЩИЕ СТРУКТУРУ ОТНОШЕНИЙ
Проекция (ограничение) – тело отношения-результата включает
кортежи, каждый из которых составлен из значений A соответствую­щего кортежа Х.
34
Символическое обозначение R = X(A), где A
M
R
R
R
схема X (схема от-
ношения-результата A является подмножеством схемы отношения-опе­ранда).
Мощность результата удовлетворяет соотношению
rMx
из-за
возможного удаления кортежей-дубликатов.
Операция проекции обладает свойством собственности. Это озна­чает, что две последовательные проекции могут быть заменены одной проекцией:
1 ( ), 1( ) ( ), если .
XA R R B R XB B A
Выборка (селекция) – тело отношения-результата состоит из кор-
тежей, которые удовлетворяют заданному предикату (условию вы­борки), т. е. является подмножеством тела отношения-операнда.
Символическое обозначение
R = X(A Θ C),
где Θ – операторы сравнения, например
{>, , <, , =, ≠}и другие, в со-
ответствии с типами атрибутов; C – множество констант, сравнимых с Θ. Это означает, что для любых
смысл,
aAiС C
,,
ij ij i i
,,.
, ij
выражение
aC
,,ij i ij
имеет
Мощность результата удовлетворяет соотношению 0 ≤ MrMx.
Схема результата не изменяется.
Последовательное применение операции селекции и проекции в та­ком порядке )1(1(,)
BA
. В принятых условных символах совместное применение селек-
ции и проекции можно записать .)/(
XAR RB C возможно при условии, что
XB C A
Соединение – выборка над декартовым произведением X и Y по про-
извольному предикату (условию выборки) Θ.
Символическое обозначение
R = X(AΘ B)Y, где A
схема Х; Всхе-
ма Y, A и B сравнимы по Θ.
Естественное соединение – соединение по условию равенства,
т. е. Θ всегда
=. Эта операция обычно выполняется, чтобы восстановить
исходное отношение, подвергнутое декомпозиции. Дубликаты атрибу­тов удаляются из результата.
Мощность результата совпадает с мощностью исходного отноше­ния.
35
Деление – тело отношения-результата является минимальным мно-
жеством кортежей, таких, что декартово произведение этого множества с отношением-делителем принадлежит отношению-делимому.
Символическое обозначение
Обозначим A = схема X, тогда R(А – B)*Y(B)
R = X(B)Y, где B
схема X и Bсхема Y.
X. Используя введен-
ные обозначения, алгоритм вычисления можно представить следующим образом:
1.
R1 = X(AB) * Y(B) – X(A).
2.
R = X(AB) – R1(AB).
4.1.3. РЕЛЯЦИОННОЕ ИСЧИСЛЕНИЕ
Реляционная алгебра и реляционное исчисление представляют со­бой два альтернативных подхода. Так же как и выражения реляционной алгебры, формулы реляционного исчисления определяются над отно­шениями реляционных баз данных, и результатом вычисления также яв­ляется отношение. Эти механизмы манипулирования данными различа­ются уровнем процедурности:
запрос, представленный на языке реляционной алгебры, может
быть вычислен на основе вычисления элементарных алгебраических операций (соединение, объединение, проекция и т. д.) с учетом их стар­шинства и возможных скобок, т. е. язык реляционной алгебры можно считать процедурным;
формула реляционного исчисления только определяет условия,
которым должны удовлетворять кортежи результирующего отношения, в терминах существующих отношений. Поэтому языки реляционного исчисления являются более непроцедурными или декларативными.
В реляционном исчислении определяется проблема, а в реляцион­ной алгебре задается процедура решения этой проблемы. Например, рассмотрим запрос: «Определить, какие клиенты купили сорт Роза Си­бирская
» (см. приложение Б).
Алгебраическая версия этого запроса может быть составлена при­мерно так:
1) выполнить соединение отношений Клиент, Заказ, Сорт и Цветы
по атрибутам:
Клиент.ID, IDКлиента, IDСорта и IDЦветка;
2) с помощью операции выборки выделить из результатов этого со-
единения кортежи, которые относятся к цветку Роза и сорту Сибирская;
36
3) сформировать проекцию результата выборки по атрибуту Кли-
ент.Фамилия.
Этот же запрос в терминах реляционного исчисления формулиру­ется приблизительно следующим образом.
Получить атрибут Клиент.Фамилия для таких цветов и сортов, для которых в отношении Заказ существует запись о покупке цветка сорта Сибирская Роза.
Отмеченные различия между реляционной алгеброй и реляционным исчислениям не принципиальны. На самом деле реляционная алгебра и реляционное исчисление логически эквивалентны. Каждому выраже­нию в алгебре соответствует эквивалентное выражение в исчислении, и точно так же каждому выражению в исчислении соответствует экви­валентное выражение в алгебре.
Это означает, что между ними существует взаимно однозначное со­ответствие, а различия связаны
лишь с разными стилями выражения: ис­числение ближе к естественному языку, а алгебра – к языку программи­рования.
4.2. ПРЕОБРАЗОВАНИЕ КОНЦЕПТУАЛЬНОЙ МОДЕЛИ В СИСТЕМУ ТАБЛИЦ
Так как концептуальная модель (ER-диаграммы) и логическая (реля­ционная) модель описывают одну и ту же предметную область, то между ними существует некоторое соответствие:
каждая таблица, как правило, соответствует сущности;
строки (записи) таблицы представляют экземпляры сущности
(объекты);
столбцы соответствуют атрибутам, а домены – множеству допу-
стимых значений для столбцов.
Преобразование ER-диаграмм в систему таблиц выполняется по сле­дующим правилам, а иллюстрация этого преобразования приведена на рис. 4.2, а – 4.2, е:
обязательная связь типа 1:1 преобразуется в одну таблицу, струк-
тура которой определяется атрибутами обеих сущностей (рис. 4.2, а);
возможная связь типа 1:1 представляется двумя таблицами (по од-
ной для каждой из сущностей), имеющими общий атрибут, однозначно идентифицирующий экземпляр сущности, для которой участие в связи не обязательно. Как правило, этот атрибут вводится искусственно и называется
кодом (рис. 4.2, б);
37
О
О
Имя
сущности 1
Имя
сущности 2
Связь 1:1
Обязательная
Атрибуты
сущности 1
Как правило, необходимо добавить
искусственный атрибут (код),
используемый в качестве
первичного ключа
Атрибуты
сущности 2
а
Н
О
Имя
сущности 1
Имя
сущности 2
Связь 1:1
Возможная
Атрибуты
сущности 1
Атрибуты
сущности 2
Код
сущности 1
Первичный ключ
Код
сущности 1
Внешний ключ
б
Н
Н
Имя
сущности 1
Имя
сущности 2
Связь 1:1
Не обязательная
Атрибуты
сущности 1
Код
сущности 1
Атрибуты
сущности 2
Код
сущности 1
Код
сущности 2
Код
сущности 2
в
Рис. 4.2. Преобразование ER-диаграмм в систему отношений (таблиц)
(см. также с. 39)
38
1) О Н 2)
О О
О
Н
независимо от обязательности
Имя
сущности 1
Имя
сущности 2
Связь 1:М
Обязательная (1)
Возможная (2)
Имя
сущности 1
Имя
сущности 2
Связь 1:М
Возможная
Не обязательная
Имя
сущности 1
Имя
сущности 2
Связь М:М
Атрибуты
сущности 1
Атрибуты
сущности 2
г
Атрибуты
сущности 1
Код
сущности 1
Атрибуты
сущности 2
д
Атрибуты
сущности 1
Код
сущности 1
Атрибуты
сущности 2
е
Рис. 4.2. Окончание
Код
сущности 1
Первичный ключ
Код
сущности 1
Внешний ключ
Код
сущности 1
Код
сущности 2
Код
сущности 2
Код
сущности 1
Код
сущности 2
Код
сущности 2
39
не обязательная связь типа 1 : 1 представляется тремя таблицами,
по одной для каждой сущности и третья для представления связи. Эта таблица содержит коды связанных экземпляров (рис. 4.2, в);
обязательная связь типа 1 : М представляется двумя таблицами
с общим атрибутом, идентифицирующим экземпляры сущности, имею­щей характеристику значности 1 (рис. 4.2, г);
возможная связь типа 1 : М представляется двумя таблицами
с общим атрибутом, идентифицирующим экземпляры сущности, име­ющей характеристику значности 1 и необязательность участия в связи (рис. 4.2, г), или тремя таблицами, если экземпляры сущности, имею­щей характеристику значности 1, обязательны для участия в связи (рис. 4.2, д);
не обязательная связь типа 1 : М преобразуется в три таблицы
(рис. 4.2, д);
связи типа М : М независимо от обязательности представляются
всегда тремя таблицами (рис. 4.2, е).
4.3. ФУНКЦИОНАЛЬНЫЕ ЗАВИСИМОСТИ
При возможных ошибках в построении ER-диаграмм (неверно вы­делены сущности, неправильно классифицированы связи) выполнение предыдущих пунктов не гарантирует эффективности полученной струк­туры данных в смысле отсутствия избыточности и связанных с ней по­бочных эффектов (аномалий) при обновлении, удалении и добавлении новых записей в таблицы. Аномалией называется такая ситуация в таб­лице
БД, которая приводит к противоречию в БД либо существенно
усложняет обработку БД.
Аномалии обновления проявляются в том, что изменение значения
в одной записи может повлечь соответствующее изменение во многих записях таблицы.
Аномалии удаления – при удалении какой-либо записи из таблицы
исчезают данные, не связанные с удаляемой записью.
Аномалии добавления возникают, когда нельзя добавить запись
в таблицу, если некоторые поля не определены.
Примеры
Рассмотрим фрагмент предметной области.
Некая организация выполняет определенные работы (темы).
Каждая тема имеет руководителя из числа сотрудников организации.
40
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]