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

План:
1 Особенности реляционной модели данных
2 Ограничения целостности
3 Сохранение целостности модели
4 Основы реляционной алгебры
5 Общие операции над множествами
6 Операции только над отношениями
7 Типы взаимосвязей

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

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

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

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

Ограничения целостности

Ограничение целостности – это правило, налагающее
некоторое ограничение на возможное состояние базы данных

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

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

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

Сохранение целостности модели

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

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

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

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

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

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

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

Реляционная алгебра

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

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

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

Общие операции над множествами

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

Реальный запрос на языке SQL состоит из двух объединённых
операторов SELECT. Первым SELECT выбирается вся таблица
(реальная, а не теоретическое отношение) Физлица, вторым – Юрлица.
Результаты обеих выборок выводятся в общую таблицу.
Оба оператора объединяются в один запрос предложением UNION

SELECT ФИО AS ИМЯ Физлица.Адррегистрации AS Адрофициальный,             Фактадр AS Фактическийадр     FROM Физлица
     UNION
     SELECT Наим AS ИМЯ юрлицо.Адррегистрации AS Адрофициальный,             Адрофиса AS Фактическийадр   FROM Юрлица;

Пересечение – операция над двумя отношениями,
в результате которой получается новое отношение,
состоящее из кортежей, принадлежащих обоим исходным отношениям.
Реализуется оператором SQL INTERSECT.

Разность – операция над двумя отношениями, в результате которой
получается новое отношение, состоящее из кортежей,
принадлежащих первому отношению и не принадлежащих второму.
Реализуется оператором SQL EXCEPT.

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

Операции объединения, пересечения и разности имеют следующие особенности:

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

Операции только над отношениями

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

Пример выборки
Из отношения Жители нужно выбрать жителей, младше 30 лет
На языке SQL запрос запрос выглядит так:

SELECT * FROM Жители
WHERE Возраст > 30;

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

Язык SQL допускает несколько одинаковых строк в таблице
с результатами запроса.
Для исключения одинаковых строк служит служебное слово DISTINCT

SELECT DISTINCT ФИО FROM Жители;

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

Семантически общие атрибуты описывают общие свойства соединяемых отношений.
Общие атрибуты должны иметь один тип

При выполнении запроса SELECT, как правило, делаются
несколько реляционных операций. Например, для выборки
из отношения Рабочие всех кортежей со слесарями
и атрибутов ФИО и Должность служит оператор

SELECT DISTTINCT ФИО, Должность
FROM Рабочие
WHERE Должность = 'Слесарь';

Выполнение этого запроса состоит из двух
реляционных операций: выборки и проекции.

Типы связей

Существует три типа связей (отношений) между таблицами.
– 1х1 1хm mxm

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

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

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

Отношение «многие-ко-многим» фактически является двумя отношениями
«один-ко-многим» с третьей таблицей, первичный ключ которой состоит
из полей внешнего ключа двух других таблиц

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *