- •Шехтман в. Е.
- •1. Базы данных и модели данных
- •1.1. Введение.
- •1.2. Файлы операционной системы
- •1.3. Пример базы данных.
- •1.4. Иерархическая модель данных
- •1.5. Сетевая модель данных
- •1.6. Инвертированные списки.
- •2. Введение в реляционную модель данных.
- •1.7. Реляционная модель данных
- •3. Реляционная алгебра
- •3.1. Теоретико-множественные операции.
- •3.2. Специальные операции ra
- •4. Нормализация данных
- •4.1. Полная декомпозиция.
- •Магазин товар ндс
- •Товар ндс
- •Магазин ндс
- •Товар ндс
- •Магазин товар ндс
- •4.2. Проблема дублирования данных.
- •1 Глобус 33-33-33
- •2 Глобус 33-33-33
- •4 Океан 77-77-77
- •4.3. Висячие записи.
- •Поставщик Тел
- •4.4. Проблемы, возникающие из-за неудачной структуры данных.
- •4.5. Пятая нормальная форма (5нф).
- •4.6. Функциональная зависимость.
- •4.7. Связь между фз и полной декомпозицией отношения.
- •4.8. Первая нормальная форма (1нф).
- •4.9. Вторая нормальная форма (2нф).
- •4.10. Третья нормальная форма (3нф).
- •4.11. Нормальная форма Бойса-Кодда (нфбк).
- •4.12. Многозначная зависимость.
- •4.13. Четвертая нормальная форма (4нф).
- •4.14. Пример нормализации.
- •4.15. Резюме. Нормальные формы.
- •5. Инфологическое моделирование.
- •5.1. Сущность и набор сущностей
- •5.2. Связи между сущностями.
- •5.3. Рекурсивная связь. Роли.
- •5.4. Множественные связи.
- •5.5. Суперсущности и производные сущности
- •5.6. Слабые наборы сущностей
- •5.7. Борьба с избыточнотью
- •5.8. Преобразование инфологической модели в физическую модель.
- •5.9. Пример инфологического моделирования.
- •6. Язык sql
- •6.1. История sql.
- •6.2. Структура sql.
- •6.3. Язык запросов
- •6.4. Простые запросы на выборку данных.
- •6.5. Агрегатные (групповые) функции.
- •6.6. Вложенные запросы
- •6.7. Внешние объединения
- •6.8. Изменение данных
- •Insert into r1 (o, fio, d) values (5, ‘Иванов’, ’бд’)
- •7. Представления.
- •8. Определение схемы базы данных и ограничений целостности
- •9. Транзакции
- •9.1. Свойства транзакций
- •9.2. Надежное хранение данных
- •9.3. Параллельное выполнение транзакций
- •9.3.1. Коллизия “пропавшие изменения” - lost update problem
- •9.3.2. Коллизия “промежуточные данные” - dirty read
- •9.3.3. Коллизия “Несогласованные данные” - unrepeatable read, inconsistent analysis
- •9.3.4. Коллизия “фантом” - phantom
- •9.4. Уровни изолированности
- •9.5. Тупики
- •10. Ограничение прав доступа в целях обеспечения безопасности
- •11. Физическая организация баз данных
- •11.1. Организация размещения данных.
- •11.2. Организация индексов
- •11.2.1. Поиск в бд.
- •11.2.2. Плотный индекс (индексно-прямые файлы).
- •11.2.3. Неплотный индекс (индексно-последовательные файлы).
- •11.2.4. Сбалансированные деревья.
- •11.2.5. Инвертированные списки.
- •12. Архитектура субд. Методы оптимизации запросов.
- •Логические преобразования запросов.
- •Преобразования запросов с изменением порядка реляционных операций.
- •13. Аналитические системы.
- •Анализ данных.
- •Хранилища данных
- •Типы ошибок
- •Способы реализации olap.
- •Требования к средствам реализации систем оперативной и аналитической обработки данных
- •Многомерная модель данных.
- •Разработка данных
- •14. Загружаемые процедуры.
- •In pr double precision)
- •If eof then leave Cl end if;
- •Insert into providers(code, name)
- •Values (nr.Codec, ‘*** новый поставщик ***’);
- •15.4. Модель сервера приложений (трёхзвенная архитектура, “тонкий клиент”)
- •Список литературы
- •15. Модели совместного доступа к бд
- •15.1. Файл-серверная модель.
- •15.2. Модель клиент-сервер с бизнес-логикой на клиенте.
- •15.3. Модель клиент-сервер с бизнес-логикой на сервере субд (хранимые процедуры и триггеры) и частично на клиенте.
1.7. Реляционная модель данных
В основе реляционной модели данных лежит идея о том, что любой набор данных можно представить в виде двумерной таблицы. Простейшая реляционная база данных может состоять из единственной таблицы, в которой будут храниться все необходимые данные. Однако на практике реляционная база данных обычно состоит из множества таблиц, связанных между собой по определенным правилам.
Реляционная модель данных отличается простотой структуры данных, удобным для пользователя табличным представлением и возможностью применения формального аппарата алгебры отношений (реляционного исчисления) для обработки данных.
Датой рождения реляционной теории баз данных принято считать 6 июня 1970 года, когда сотрудник фирмы IBM, доктор Э. Кодд, опубликовал статью "Реляционная модель данных для больших коллективных банков". Именно в этой статье впервые встретился термин "реляционная модель данных".
После публикации статьи доктор Э. Кодд продолжил работу по развитию реляционной теории баз данных, подведя под нее мощную математическую основу. Будучи по образованию математиком, Э. Кодд предложил использовать для обработки данных аппарат теории множеств, а конкретно — объединение, пересечение, разность, декартово произведение и другие. Он доказал, что любой набор данных может быть представлен в виде простых двумерных таблиц, называемых в математике “отношением” (relation). От этого слова и произошло название "реляционная модель данных". Разработанная Коддом теория реляционных баз данных описывает правила эффективной организации данных и правила управления ими.
Теоретической основой реляционной модели является теория отношений, основу которой заложили американец Ч. С. Пирс и немец Э. Шредер в конце 19 века. В их работах было показано, что множество отношений замкнуто относительно некоторых специальных операций, т. е. образует с этими операциями абстрактную алгебру. Этот факт и послужил основой для разработки языка манипулирования данными в реляционной модели.
2. Введение в реляционную модель данных.
Основной структурой данных в рассматриваемой модели является отношение (relation), именно поэтому модель и называется реляционной. Отношение очень просто можно проиллюстрировать с помощью таблицы.
Отношение R:
A |
B |
C |
… |
Кортеж |
A1 |
B1 |
C1 |
… |
|
A2 |
B2 |
C2 |
… |
|
Домен |
|
|
|
|
Таблица 4. Иллюстрация понятия отношения.
Вхождение кортежа со значениями атрибутов A, B, C означает что верен предикат (высказывание) R(A1, B1, C1): R(A1, B1, C1) = True. Также R(A1, B1, C1) = True, но R(A1, B2, C2) = False, т. к. в отношении R нет кортежа со значениями атрибутов A1, B2, C2.
В виде совокупностей отношений можно представлять любые структуры данных (в том числе данные, хранящиеся в сетевых и иерархических базах данных и взаимосвязи между ними). (Кстати, процесс перехода от одного представления к другому называется нормализацией: Сеть -> Иерархия -> Отношение. Нормализацией мы будем в дальнейшем займемся подробно).
Отношение и есть “реляционная структура”. N-арное отношение – это подмножество декартова произведения D1D2…Dn множеств D1, D2, …, Dn (n>=1), Di не обязаны быть различными множествами. В рамках реляционной теории их называют доменами. Отношение моделирует реальную ситуацию и содержит только часть возможностей, которые можно получить в результате декартова произведения.
Пример. Рассмотрим отношение R, хранящее информацию о религиях и их основателях. В него входят домены “Основатели мировых религий” и “Мировые религии”.
R:
Основатели мировых религий |
Мировые религии |
Будда |
Буддизм |
Христос |
Христианство |
Магомет |
Мусульманство |
Это отношение не включает других кортежей, так, например предикат
R(Магомет, Буддизм)
неверен и, следовательно, такого кортежа в отношении быть не должно.
Вхождение домена в отношение – атрибут.
Отношение не имеет двух одинаковых строк - это следует из определения декартова произведения. (Отсутствие одинаковых строк – так называемая первая нормальная форма, разговор о которой впереди.)
Столбцы соответствуют атрибутам отношений. Каждый атрибут отношения имеет уникальное имя.
Порядок строк в таблице произвольный.
Приведем свод свойств объекта по имени отношения (он же реляционная таблица). Итак, отношение – это двумерный массив со следующими свойствами:
Каждый элемент отношения является минимальным элементом данных, неразложимым на составные части (для обозначения этого свойства применяют термин атомарность).
Элементы в столбце имеют один тип. (Домен – множество атомарных значений одного типа.).
Каждый столбец имеет уникальное имя.
В отношении нет совпадающих строк.
Порядок следования строк и столбцов в отношении не определен.
Ввиду того, что терминология не устоялась, и, более того, в разных областях применяют для обозначения одних и тех же понятий разные термины, приведем словарь этих терминов:
Реляционная теория |
Практика реляционных баз данных |
СУБД |
Отношение |
Сущность |
Таблица |
Кортеж |
Запись |
Строка |
Атрибут |
Поле |
Колонка, столбец |
Таблица 5. Соответствие терминов.
Пример отношения:
Продукт |
Поставщик |
Цена за ящик |
Бананы |
Глобус |
150 |
Помидоры |
Глобус |
230 |
Лук |
Плодовощторг |
50 |
Домен поставщиков – Глобус, Плодовощторг, Центрпродсервис.
Домен продуктов – бананы, помидоры, лук, апельсины, арбузы, яблоки и т. д.
Домен поставщиков и домен продуктов содержат данные одного типа (строкового), но имеют разный смысл. В домене данные должны быть сравнимы. Домен атрибута – множество всех возможных значений атрибута. Так, домен поставщиков – все возможные поставщики, все они не обязаны содержаться в отношении (таблице).
Степень отношения – количество атрибутов в нем. Мощность отношения – количество кортежей в нем.
Чтобы связать таблицы друг с другом вводят понятие ключа. Ключ – множество атрибутов, задание значений которых однозначно определяет значения остальных атрибутов.
Множество атрибутов составляют возможный ключ (иначе говорят потенциальный ключ или ключ-кандидат), если обеспечивается
Уникальность. Никакие два кортежа не могут иметь одинаковых значений для всех атрибутов, входящих в ключ.
Минимальность. Ни один из атрибутов не может быть исключен из ключа без нарушения уникальности ключа.
Механизм СУБД обеспечивает уникальность ключа, но минимальность лежит на совести пользователя. Любое отношение содержит, по крайней мере, один возможный ключ – набор всех его атрибутов (в силу определения отношения).
Один из возможных ключей выбирается в качестве первичного ключа. Соответсвенно, остальные называются возможными.
Реляционная база данных – совокупность отношений (relations) (набор двумерных таблиц). Таблицы в базе данных связаны отношениями (relationships). (Обратите внимание: из-за перевода двух разных английских слов одним русским словом возможны недоразумения! Поэтому лучше вместо “отношения между отношениями” говорить “связи между отношениями”, хотя авторы многих источников упорно придерживаются неоднозначного варианта).
Если два отношения отличаются только порядком строк или столбцов, то они считаются одинаковыми.
Отношение – динамическая модель реального объекта. Экземпляр отношения – реализация отношения в текущий момент времени. Схема SR отношения R – перечень имен атрибутов отношения с указанием домена, к которому они относятся:
SR = (A1, A2, …), Ai из Di.
Если атрибуты принимают значения из одного домена, то говорят, что они Θ-сравнимы (Θ – множество допустимых операций сравнения, заданных для домена). Например, если домен содержит числа, то Θ = [= <> >= <= < >]. Домен может содержать символьные данные. Для такого домена изначально определены только операции = и <>. Однако если задать лексикографическое упорядочение, то можно использовать все остальные операции сравнения.
Схема SR отношения R эквивалентна схеме SR1 отношения R1 если R и R1 имеют одинаковую степень и возможно упорядочивание имен атрибутов в S такое, что на одинаковых местах находятся сравнимые атрибуты (т.е. атрибуты из одного домена):
SR = (A1, …, An)
SR1 = (Bi1, …, Bim)
после упорядочивания имен атрибутов.
SR ~ SR1 n=m, Aj, Bij из Dj
Реляционная модель предполагает наличие множества взаимосвязанных отношений. Связи между отношениями поддерживаются неявно (в отличие от сетевой и иерархической моделей). Как и какие связи поддерживаются? В реляционной модели как и в других моделях данных поддерживаются иерархические связи между отношениями. Одно отношение в связи выступает основным, другое подчиненным. Это означает, что один кортеж основного отношения соответствует нескольким кортежам подчиненного отношения. Для поддержки связи оба отношения должны содержать наборы атрибутов, по которым они связаны. В основном отношении такие атрибуты образуют первичный ключ отношения (PRIMARY KEY), однозначно определяющий кортеж. В подчиненное отношение для моделирования связи включается тот же набор атрибутов. Однако здесь это – вторичный ключ (FOREIGN KEY) (определяет не один кортеж, а множество кортежей, соответствующих одному кортежу основного отношения).
Налогоплательщик Доходы
ИНН, ФИО ИНН, Сумма дохода, место получения дохода
ИНН, Сумма дохода, место получения дохода
ИНН, Сумма дохода, место получения дохода
Первичный ключ отношения Налогоплательщик – атрибут ИНН.
Вторичный ключ отношения Доходы – атрибут ИНН.
Оба отношения связаны между собой общим атрибутом ИНН.
