Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_БД.doc
Скачиваний:
28
Добавлен:
04.05.2019
Размер:
4.03 Mб
Скачать

1.1.1. Реляционная модель данных.

Реляционная модель данных (РМД) некоторой предметной области – это набор изменяющихся во времени отношений. Элементы РМД и формы их представления приведены в таблице:

Элемент реляционной модели

Форма представления

Отношение

Таблица

Схема отношения

Заголовок таблицы

Кортеж

Строка таблицы

Сущность

Описание свойств объекта

Атрибут

Заголовок столбца таблицы

Домен

Множество допустимых значений атрибута

Значение атрибута

Значение поля в записи

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

Один или несколько атрибутов

Тип данных

Тип значений элементов таблицы.

Отношение – это двумерная таблица, содержащая некоторые данные.

Сущность – объект любой природы, данные о котором хранятся в отношении БД.

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

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

Пример отношения СТУДЕНТ

ФИО

Группа

Дата_рожд

Иванов И.И.

П-163

12.12.1987

Петров П.П.

П-163

04.03.1987

С идоров С.С.

П-165

20.08.1988

Это отношение включает 3 домена: Домен1 – фамилии всех студентов, домен 2 – номера групп, домен 3 – даты рождения всех студентов.

Схема отношения (заголовок отношения) – это список имен атрибутов. Например, СТУДЕНТ(ФИО,Группа,Дата_рожд).

Первичным ключом (ключом отношения, ключевым атрибутом) называется атрибут отношения, однозначно идентифицирующий каждый из его кортежей. Например, для отношения СТУДЕНТ ключевым является атрибут “ФИО”.

Составной ключ (сложный) состоит из нескольких атрибутов.

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

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

Ключи используются для:

  1. исключения дублирования значений в ключевых атрибутах;

  2. упорядочения кортежей (по возрастанию или убыванию);

  3. ускорения работы по кортежам;

  4. организации связывания таблиц.

Пусть в отношении Таб1 есть не ключевой атрибут А, значения которого являются значениями ключевого атрибута В другого отношения Таб2. Тогда атрибут А отношения Таб1 есть внешний ключ. Внешние ключи позволяют устанавливать связь между отношениями. Например, отношения СТУДЕНТ(ФИО, Группа, Дата_рожд) и ПРЕДМЕТ(Назв_предм,Кол_час) связаны отношением СТУДЕНТ_ПРЕДМЕТ(ФИО,Назв_предм,Оценка), в котором атрибуты ФИО и Назв_предм образуют составной ключ.

СТУДЕНТ

ПРЕДМЕТ

ФИО

Группа

Дата_рожд

Назв_предм

Кол_час

к люч

ключ

СТУДЕНТ_ПРЕДМЕТ

ФИО

Назв_предм

Оценка

Внешний ключ

Внешний ключ

Таблицу можно считать отношением, если:

  1. все строки уникальны, то есть, нет строк с одинаковыми первичными ключами,

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

  3. все строки должны иметь одну структуру, соответствующую именам и типам столбцов,

  4. порядок размещения строк в таблице может быть произвольным.

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

Если задаваемое таблицей отношение имеет ключ, то таблица также имеет ключ и называется ключевой.

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

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

Индекс – это средство ускорения операции поиска записей в таблице. Таблица, для которой используется индекс, называется индексированной. Индекс выполняет роль оглавления таблицы, которое просматривается перед обращением к записям таблицы.

На практике для создания индекса для некоторой таблицы БД пользователь указывает поле таблицы, которое требует индексации.

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

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

Между таблицами могут устанавливаться бинарные (между двумя), тернарные (между тремя), и, в общем случае, n-арные связи.

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

  1. один-один (1:1)

  2. один-много (1:М)

  3. много-один (М:1)

  4. много-много (М:М)

Характеристика видов связей:

Характеристика полей связи

1:1

1:М

М:1

М:М

основной таблицы

являются ключом

являются ключом

не являются ключом

не являются ключом

дополнительной таблицы

являются ключом

не являются ключом

являются ключом

не являются ключом

Связь вида 1:1. Все поля основной и дополнительной таблицы являются ключевыми. Обеспечивается взаимно-однозначное соответствие записей из этих таблиц. Таблицы являются равноправными. Используются редко. Например,

Работник_таб_1

* +

Таб_номер

ФИО

Дом_адрес

Работник_таб_2

* +

Таб_номер

Должность

Оклад

Связь вида 1:М. Одной записи основной таблицы соответствует несколько записей вспомогательной таблицы. Например,

Должность (основная)

* +

Код_должн

Должность

Работник (дополнительная)

+

*

Код_должн

Таб_номер

ФИО

Где * - ключевое поле,

+ - связываемое поле.

Связь вида М:1. Одной или нескольким записям основной таблицы ставится в соответствие одна запись дополнительной таблицы. Например,

Таб_1 (основная)

+

Наим_детали

Материал

Марка_материала

Деталь1

Сталь

Марка1

Деталь1

Сталь

Марка2

Деталь2

Медь

Марка1

Деталь3

Сталь

Марка3

Таб_2 (дополнительная)

* +

Наим_детали

Дата_изготовл

Стоим_заказа

Деталь1

1.01.04

100

Деталь2

12.05.04

90

Деталь3

10.01.04

120

Псевдотаблица содержит записи

(деталь1,сталь,марка1,1.01.04,100),

(деталь1,сталь,марка2,1.01.04,100),

(деталь2,медь,марка1,12.05.04,90),

(деталь3,сталь,марка3,10.01.04,120).

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

Связь вида М:М. Нескольким записям основной таблицы соответствует несколько записей дополнительной таблицы. Например,

Таб_1 (основная)

*

* +

Работает

На компьютере

Иванов

Компьютер1

Иванов

Компьютер2

Петров

Компьютер1

Таб_2 (дополнительная)

*

* +

Обслуживает

Компьютер

Сидоров

Компьютер1

Силин

Компьютер2

Репин

Компьютер2

Можно составить новую таблицу с псевдозаписями

Работает

Компьютер

Обслуживает

Иванов

Компьютер1

Сидоров

Иванов

Компьютер2

Силин

Петров

Компьютер1

Сидоров

Иванов

Компьютер2

Репин

Полученная таблица позволяет ответить на вопрос: ”Кто обслуживает компьютеры, на которых работает Иванов?”

Контроль целостности связей. Наиболее распространенным видом связи является вид 1:М. Контроль целостности связей означает анализ содержимого двух таблиц на соблюдение следующих правил:

  • каждой записи основной таблицы соответствует нуль или более записей дополнительной таблицы,

  • в дополнительной таблице нет записей, которые не имеют родительских записей в основной таблице,

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

Рассмотрим действие контроля целостности для основных операций над данными двух таблиц.

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

Модификация записей. Для дополнительной таблицы запись может сменить родителя, но не должна остаться без него.

Для основной таблицы:

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

  • изменения в полях связи основной таблицы сразу передавать во все поля связи всех записей дополнительной таблицы (каскадное обновление).

Удаление записей. Для дополнительных таблиц ограничений нет. Для основных таблиц нужно выполнять правила:

  • можно удалять запись, которая не имеет подчиненных записей,

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

Реляционная алгебра (ПЗ).

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

В реляционной алгебре основным множеством является множество отношений. Создатель реляционной алгебры Эдгар Тэд Кодд (1924-2003) предложил 8 операций, которые можно разделить на две группы: 1) базовые теоретико-множественные и 2) специальные реляционные. Первая группа включает классические операции теории множеств: объединение, вычитание, пересечение и произведение. Вторая – выборка (селекция), проекция, деление и соединение.

Объединением двух совместимых отношений R1 и R2 одинаковой размерности (R1 UNION R2) или (R1 U R2) является отношение R, содержащее все элементы исходных отношений (с исключением повторений). Например.

R1:

Ном_зачт

ФИО

Группа

Дата_рожд

1370302

Иванов И.

П-255

1.01.87

1370303

Петров П.

П-255

12.05.86

1370341

Семенов А.

П-244

24.04.86

1370304

Иванов И.

П-255

12.02.87

R2:

Ном_зачт

ФИО

Группа

Дата_рожд

1370303

Петров П.

П-255

12.05.86

1370350

Силина К.

П-242

21.11.86

R:

Ном_зачт

ФИО

Группа

Дата_рожд

1370302

Иванов И.

П-255

1.01.87

1370303

Петров П.

П-255

12.05.86

1370341

Семенов А.

П-244

24.04.86

1370304

Иванов И.

П-255

12.02.87

1370350

Силина К.

П-242

21.11.86

Вычитание совместимых отношений R1 и R2 одинаковой размерности (R1 MINUS R2) или (R1 \ R2) есть отношение, которое состоит из множества кортежей отношения R1, но не принадлежащих отношению R2. Результат операции зависит от порядка следования операндов. Например, для предыдущих отношений R1 и R2, отношение R будет иметь вид:

Ном_зачт

ФИО

Группа

Дата_рожд

137030w2

Иванов И.

П-255

1.01.87

1370341

Семенов А.

П-244

24.04.86

1370304

Иванов И.

П-255

12.02.87

Пересечение двух совместимых отношений R1 и R2 одинаковой размерности (R1 INTERSECT R2) или (R1 R2) есть отношение R, которое включает в себя кортежи, одновременно принадлежащие обоим исходным отношениям. Например, для предыдущих отношений R1 и R2, отношение R будет иметь вид:

Ном_зачт

ФИО

Группа

Дата_рожд

1370303

Петров П.

П-255

12.05.86

Выборка (R WHERE f) отношения R по формуле f есть новое отношение с таким же заголовком и телом, состоящим из таких кортежей отношения R, которые удовлетворяют истинности логического выражения, заданного формулой f. Для записи формулы f используют операнды – имена атрибутов (номера столбцов), константы, логические операции (AND, OR, NOT), операции сравнения и скобки. Например, для отношения R1 имеем

R1 WHERE Группа=”П-255” AND Ном_зачт=”1370303”

Ном_зачт

ФИО

Группа

Дата_рожд

1370303

Петров П.

П-255

12.05.86

Проекция отношения A на атрибуты X,Y,…Z (A[X, Y,… Z]), где множество {X,Y,…Z} является подмножеством полного списка атрибутов заголовка отношения A, представляет собой отношение с заголовком X,Y,…Z и телом, содержащим кортежи отношения A, за исключением повторяющихся кортежей. Повторение одинаковых атрибутов в списке X,Y,…Z запрещается. Операция проекции допускает следующие дополнительные варианты записи:

  • отсутствие списка атрибутов подразумевает указание всех атрибутов (операция тождественной проекции),

  • выражение вида R[] означает, пустую проекцию, результатом которой является пустое множество,

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

Например,

R1 [ФИО, Группа]

ФИО

Группа

Иванов И.

П-255

Петров П.

П-255

Семенов А.

П-244

(R1 WHERE ФИО=”Иванов И.”) [Ном_зачт]

ФИО

Ном_зачт

Иванов И.

1370302

Иванов И.

1370304

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

  1. Список абитуриентов, которые поступали два раза и не поступили в вуз. R=R1 INTERSECT R2 MINUS R3 (R1 ∩ R2 \ R3)

  2. Список абитуриентов, которые поступили в вуз с первого раза, то есть они сдавали экзамены только один раз и сразу были зачислены в студенты. R=(R1 MINUS R2 INTERSECT R3) UNION (R2 MINUS R1 INTERSECT R3).

  3. Список абитуриентов, которые поступили в вуз только со второго раза. R=R1 INTERSECT R2 INTERSECT R3.

  4. Список абитуриентов, которые поступали только один раз и не поступили. R=(R1 MINUS R2) UNION (R2 MINUS R1) MINUS R3.

Порядок выполнения операций реляционной алгебры в отсутствии скобок естественный.

Пример 2. Результаты сдачи студентами экзаменов сессии представлены в отношениях

R1= (ФИО, Предмет, Оценка) – информация о попытках сдачи экзаменов студентами;

R2=(ФИО, Группа) - состав групп;

R3=(Группа, Предмет) – список предметов, которые надо сдавать каждой группе.

Список всех пар <студент-предмет>, которые в принципе должны быть сданы:

R4=(R2 [R2.Группа=R3.Группа] R3) [ФИО, Предмет];

Список пар <студент-предмет>, где получена оценка «отлично»

R5=(R1[Оценка=5]) [ФИО, Предмет];

Список студентов, что-либо не сдавших на «отлично»

R6=(R4 MINUS R5) [ФИО];

Окончательный список

R2[ФИО] MINUS R6