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

Базы данных. Язык SQL. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
1 Мб
Скачать

Работают в отделе

 

 

 

 

 

 

 

Отдел САПР

 

Сотрудники

 

Начальник

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Состоит из сотрудников

Отделом руководит

Рис. 4.6. Пример сетевой БД

Типы записи X и Y могут быть предком и потомком в одной связи и потомком и предком в другой (рис. 4.5, д).

Предок и потомок могут быть одного типа записи (рис. 4.5, е). На рис. 4.6 показан простой пример сетевой схемы БД. Примерный набор операций может быть таковым:

найти конкретную запись в наборе однотипных записей, например, программиста Сидорова;

перейти от предка к первому потомку (к первому сотруднику отдела САПР);

перейти к следующему потомку в некоторой связи (от Сидорова к Иванову);

перейти от потомка к предку по некоторой связи (найти отдел Сидорова);

создать новую запись;

удалить запись;

модифицировать запись;

включить связь;

исключить из связи;

переставить в другую связь и т.д.

4.3. Достоинства и недостатки иерархических и сетевых СУБД

Достоинства:

развитие средства управления данными во внешней памяти на низком уровне;

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

систем;

возможность экономии памяти за счет разделения подобъектов (в сетевых системах).

21

Недостатки:

слишком сложно пользоваться;

фактически необходимы знания о физической организации;

прикладные системы зависят от этой организации;

их логика перегружена деталями организации доступа.

4.4.Реляционная модель

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

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

Каждое отношение по определению имеет ключ, т.е. атрибут (простой ключ) или совокупность атрибутов (составной ключ), однозначно идентифицирующий кортеж.

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

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

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

Реляционной считается такая модель данных, в которой все данные представлены для пользователя в виде прямоугольных таблиц значений данных, и все операции над базой данных сводятся к манипулированию таблицами. Таблица состоит из строк и столбцов и имеет имя, уникальное внутри базы данных. Таблица отражает тип объекта реального мира (сущность), а каждая ее строка – конкретный объект. Рассмотрим основные понятия реляционных моделей на примере таблицы «Деталь»

(рис. 4.7).

22

23

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

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

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

Первичный ключ в примере (рис. 4.7) – это столбец «Номер детали». Значения атрибутов выбираются из наименьшей информационной единицы – домена. Другими словами, домен – это множество всех возможных значений атрибута объекта. Рассмотрим еще два понятия «Степень» и «Кардинальное число». Под кардинальным числом отношения понимают количество кортежей, а степень отношения – это ко-

личество атрибутов данного отношения.

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

Первичный ключ таблицы «Руководитель» – столбец «Номер». Столбец «Фамилия» не является уникальным, поэтому не применяется в качестве первичного ключа. Столбец «Номер Руководителя» является внешним ключом в таблице «Сотрудник».

ВБД дополнительно к самим данным должен храниться словарь данных и другие объекты, например, экранные формы, отчеты, просмотры (views) и прикладные программы.

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

Рассмотрим более подробно понятие «Отношение».

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

отношения.

24

Сотрудник

 

Внешний ключ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Фамилия

№руководителя

Должность

 

 

 

 

4781

 

Иванов

5742

 

М.н.с

 

 

 

 

 

5325

 

Петров

6931

 

С.п.с

 

 

 

 

 

3120

 

Сидоров

5742

 

П.с

 

 

 

 

 

1230

 

Яшин

2345

 

Инж.

 

 

 

 

 

2138

 

Юдин

6931

 

Вед.инж

 

 

 

 

 

 

 

 

 

 

Руководитель

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Фамилия

Отдел

Стаж

 

 

Первичный ключ

5742

Иванов

САПР

15

 

 

6931

Петров

№5

25

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2345

Сидоров

Лаборатория

21

Рис. 4.8. Взаимосвязь таблиц

Если говорить о таблице, то точнее можно сказать «Переменная базового отношения» (базовая таблица). Переменная отношения в разное время представляет разные таблицы. В них будут разные строки, а столбцы будут одинаковыми.

Введем понятие «Значение отношения».

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

1. Заголовок содержит фиксированное множество атрибутов, а точнее пар <имя_атрибута, имя_домена> {<A1:D1>, <A2:D2>, …, < An:Dn>}, причем каждый атрибут Aj D j j = 1, ..., n . Имена Аj разные.

2. Тело содержит множество кортежей. Каждый кортеж содержит множество пар <имя атрибута; значение атрибута> {<A1:Vi1>, <A2:Vi2>, …, < An:Vin>} i = 1, ..., m ; m – количество кортежей. В каждом корте-

же есть пара <Aj:Vij> Aj в заголовке. Для любой пары <Aj:Vij> Vij

является значением из уникального домена Dj, связанного с Aj.

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

25

4.5. Свойства отношений

Можно выделить следующие свойства отношений:

нет одинаковых кортежей;

картежи не упорядочены сверху вниз;

атрибуты не упорядочены слева направо;

все значения атрибутов атомарные.

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

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

Третье свойство основано на понятии множества (атрибутов) и, следовательно, упорядочение не обязательно. С точки зрения модели данных невозможно различить первый, следующий или последний атрибуты.

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

(1НФ).

В различных системах встречаются некоторые из видов отношений.

1.Именованное отношение – это переменная отношения, определенная в СУБД посредством операторов открытия или создания отношения.

2.Базовое отношение – это наиболее важное, автономное именованное отношение, являющееся частью БД.

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

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

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

6.Снимки (shnapshot) – это именованные производные отношения, как и представления, но реальны в отличие от последних. Созда-

26

ние снимки похоже на выполнения запроса, результат которого сохраняется в БД.

7.Результат запроса – именованное производное отношение, полученное в результате некоторого определенного запроса.

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

9.Хранимым называется отношение, которое поддерживается в физической памяти. Хранимое отношение не всегда совпадает с базовым.

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

Деталь с определенным номером (Номер_детали) имеет определенное имя (Название_детали), имеется на складе в количестве (Колво_детали) весом (Вес) килограмм каждая и выполнена из (Материал); кроме того нет двух деталей с одинаковыми номерами.

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

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

Креляционным базам данных применяются два общих правила целостности, и относятся они к потенциальным (первичным) ключам и ко внешним ключам.

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

свойством уникальности; нет двух различных кортежей в отношении R с одинаковым значением K;

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

Данное определение относится к значениям отношения, а не к переменным отношения. Для переменных отношения определение потенциального ключа дополняется следующим образом. Пусть R – некото-

27

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

На практике отношения чаще всего имеют только один потенциальный ключ, хотя их может быть несколько. Например, в периодической системе элементов химические элементы имеют уникальное имя, обозначение (Cu, Pb, Au, …) и атомное число. Это уже три различных потенциальных ключа, или составной потенциальный ключ, состоящий более чем из одного атрибута. Потенциальные ключи не должны включать лишних атрибутов для идентификации уникальности. Это и есть свойство неизбыточности.

Если в отношении «Деталь» определить потенциальный ключ, как комбинацию {номер_детали, материал} вместо «номер_детали», тогда система не сможет соблюдать ограничение, обеспечивающее уникальность в «локальном смысле», т.е. для одного типа материала.

На практике физическое понятие индекса часто играет роль потенциального ключа.

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

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

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

Реляционная модель традиционно требует, чтобы внешние ключи в точности соответствовали первичным ключам, а не просто потенциальным ключам. Уточним определение внешнего ключа.

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

существует базовое отношение R1 с потенциальным ключом СK,

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

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

28

ключа представлено ссылкой к кортежу с соответствующим потенциальным ключом. Для баз данных иногда строят ссылочные (целевые) диаграммы. Например, если объединить отношения «Сотрудник» (С) и «Руководитель» (Р) в базу Предприятие (П), то можно записать диаграмму С¬П®Р, где стрелка обозначает внешний ключ. Иногда указывают над ссылкой имя атрибута C ¬¾ном¾. сотр¾.¾ П ¾ном¾¾. рук¾.® Р .

Отношение может быть одновременно ссылочным и ссылающимся, например для R2: R3 ® R2 ® R1.

Пусть в отношении Rn, Rn–1 , …, R2, R1 имеется ссылочное ограничение

из Rn в Rn–1 и Rn–1 в Rn– 2 и … и R2 в R1 или Rn ® Rn–1 ® Rn–2 ® ® R2 ® R1.

Тогда цепочки стрелок из Rn в R1 представляют ссылочный путь из

Rn в R1.

Отношения R1 и R2 в определении внешних ключей не обязательно различны. Такие самоссылающиеся отношения представляют собой отдельный случай. Отношения Rn, Rn–1 , …, R2, R1 образуют ссылочный

цикл (Rn ® R1 ® Rn).

Вместе с понятием внешнего ключа реляционная модель включает правило ссылочной целостности, т.е. БД не должна иметь несогласованных ключей. Если Ri ® Rj (ссылается), то Rj должно существовать.

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

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

Пусть R1 и R2 имеют ссылочное отношение R2 ® R1.

Тогда удаление кортежа из R1 влечет удаление определенных кортежей в R2.

Пусть имеем ссылочное отношение R3 ® R2 ® R1. Тогда, если операция удаления из R2 выполняются только для R2, то нарушается ссылка R3 ® ? ® R1. Следовательно, такая операция не должна быть выполнена.

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

29

5.РЕЛЯЦИОННАЯ АЛГЕБРА

5.1.Введение в реляционную алгебру

Реляционная алгебра, определенная Коддом, состоит из восьми операторов, составляющих две группы.

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

Вторую группу образуют специальные реляционные операции: выборка, проекция, соединение и деление.

Рассмотрим подробнее результаты этих операций над отношениями. Объединение È. Возвращает отношение, содержащее все кортежи, которые принадлежат одному из двух определенных отношений или

обоим (рис. 5.1, а).

Пересечение Ç. Возвращает отношение, содержащее все кортежи, которые принадлежат одновременно двум определенным отношениям

(рис. 5.1, б).

Вычитание –. Возвращает отношение, содержащее все кортежи, которые принадлежат первому из двух определенных отношений и не принадлежат второму (рис. 5.1, в).

Декартово произведение *. Возвращает отношение, содержащее всевозможные кортежи, которые являются сочетанием двух кортежей, принадлежащих соответственно двум определенным отношениям (рис. 5.1, г).

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

 

 

 

 

 

*

 

 

 

 

 

 

 

 

 

 

 

A

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B

1

 

 

 

 

A

 

1

 

 

 

 

 

 

C

1

 

 

 

 

 

 

2

 

 

 

 

 

B

 

 

A

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

 

 

C

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

а)

б)

в)

г)

Рис. 5.1 Операции над множествами:

аобъединение; б – пересечение;

в– вычитание; г – декартовое произведение

30

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]