
- •Введение
- •Часть 1
- •Глава 1 модели данных
- •Уровни моделей данных
- •1 Инфологические модели данных
- •1.1 Диаграмма Бахмана
- •1.2 Модель «сущность-связь»(er)
- •Нотация Мартина
- •Нотация idef1x
- •Нотация Баркера
- •2. Даталогические модели
- •2.1. Документальные модели
- •2.1.1. Ориентированные на формат документа
- •2.1.2. Дескрипторные модели
- •2.1.3. Тезаурусные модели
- •2.2. Фактографические модели
- •2.2.1. Теоретико-графовая модель
- •2.2.1.1. Иерархическая модель
- •2.2.1.2. Сетевая модель
- •2.2.2. Теоретико-множественные модели
- •2.2.2.1. Реляционная модель
- •Правила Теда Кодда
- •2.2.2.2. Бинарных ассоциаций
- •2.2.3. Объектно-ориентированные модели
- •3. Физические модели
- •3.1. Модели, основанные на файловых структурах
- •3.2. Модели, основанные на странично-сегментной организации
- •Известные сетевые субд:
- •Глава 2. Проектирование баз данных
- •1.1. Избыточность данных и аномалии обновления
- •1.2. Функциональные зависимости
- •1.3. Нормальные формы и схемы выполнения нормализации
- •1) 1Нф.
- •2) 2Нф.
- •3) 3Нф.
- •4) Нфбк (нормальная форма Бойса-Кодда).
- •5) 4Нф.
- •6) 5Нф.
- •1.4 Синтез реляционных баз данных
- •1.5 Пример синтеза
- •1.6 Пример декомпозиции
- •Часть 2
- •Реляционная алгебра
- •Введение
- •Стандартные реляционные операции
- •Свойства стандартных операций
- •Специальные операции
- •Язык sql как стандартный язык баз данных
- •Введение в sql
- •2.1.1 Функциональные возможности sql
- •2.2 Создание баз данных
- •2.2.1 Оператор create database
- •2.3 Удаление баз данных
- •2.4.3 Размер поля
- •2.4.4 Тип поля
- •2.5 Удаление таблиц
- •2.5.1 Оператор drop table
- •2.6. Данные и записи данных
- •2.6.1 Оператор select
- •2.6.2 Оператор distinct
- •2.6.3 Оператор from { таблица [ псевдоним ] } [,...]
- •2.6.4 Оператор where (условие)
- •2.6.5 Оператор group by { поле | Integer } [,...]
- •2.6.6 Оператор having( условие)
- •2.6.7 Оператор order by { поле | Integer [ asc|desc ] } [,...]
- •2.6.8 Оператор union [all] select-команда
- •2.6.9 Оператор intersect [all] select-команда
- •2.6.10 Оператор except [all] select-команда
- •2.6.11 Into { temp | scratch } таблица
- •2.6.12 Insert - добавлять данные
- •2.6.13 Values ( константа [,...] )
- •2.6.18 Unload - выгрузить данные в текстовый файл
- •2.7 Операторы
- •2.7.3 Арифметические операторы
- •2.7.4 Приоритеты операторов
- •2.8 Функции
- •2.8.3 Текстовые функции
- •2.8.4 Функции работы с временем и датами
- •2.8.5 Вспомогательные функции
- •2.9 Виды на таблицы данных (Просмотры)
- •2.9.1Create view - создать новый вид на таблицу данных
- •2.9.2 Drop view - удалить вид на таблицу данных
- •2.10 Пользовательские процедуры
- •2.10.1 Create procedure - создать пользовательскую процедуру
- •2.10.2 Dba
- •2.10.3 References { byte | text }
- •2.10.4 Default { Wert | null }
- •2.10.5 Returning { Feldtyp | references { byte | text } }
- •2.10.6 Drop procedure - удалить процедуру
- •2.12.2 Нормальный текст
- •1999 - Sql-99, sql-3 (iso/iec 9075:1999(e) Information technology - Database languages - sql)
- •2003 - Sql-2003
- •4. Виды систем баз данных
- •4.1.Oracle
- •4.1.1 Типы данных
- •4.1.1.1.Символьные типы
- •4.1.1.2.Числовые типы
- •Даты, временные метки и интервалы
- •4.1.1.3.Логические типы
- •Двоичные данные
- •4.1.1.4.Типы данных для сети Интернет
- •4.1.1.5.Типы данных «Any»
- •4.2. Mysql
- •4.2.1 Типы данных.
- •4.2.1.1.Character String (строковый)
- •4.2.1.2.National Character String (национальный строковый)
- •4.2.1.3.Binary Large Object String (двоичный)
- •4.2.1.4.Numeric (числовой)
- •4.2.1.5.Datetime (дата/время)
- •4.2.1.6.Interval (интервальный)
- •4.2.1.7.Типы enum и set
- •4.2.2Использование типов столбцов их других систем управления базами данных
- •4.3. Postgresql
- •4.3.1 Типы данных
- •4.3.1.1Числовые типы
- •4.3.1.1.Целочисленные типы
- •4.3.1.2.Числа с заданной точностью
- •4.3.1.3.Типы с плавающей точкой
- •4.3.1.4.Серийные типы
- •4.3.1.5.Денежные типы
- •4.3.1.6.Символьные типы
- •4.3.1.7.Двоичные типы данных
- •4.3.1.8.Типы дата/времени
- •4.3.1.9.Логический тип
- •4.3.1.10.Перечисления
- •5. Использованные в пример таблицы данных
- •Символьные
- •Числовые типы данных
- •Двоичные типы данных
- •Типы данных времени, даты, интервалы
- •Логические типы данных
- •Список литературы
- •Оглавление
- •Часть 1………………………………………………………….…………………………….………… 4
- •Глава 1 модели данных………………………….………………….……………….…........…. 4
- •Глава 2 проектирование баз данных…………..……………………………………...… 40
- •1.4 Синтез реляционных баз …...………………………………………………………… 44
- •Часть 2……...…...………………………………………………………………………………….… 52
2.2.2. Теоретико-множественные модели
Появление теоретико-множественных моделей в системах баз данных было предопределено настоятельной потребностью пользователей в переходе от работы с элементами данных, как это делается в графовых моделях, к работе с некоторыми макрообъектами.
2.2.2.1. Реляционная модель
Появление новой, реляционной модели данных, созданной Коддом в 1970 году, вызвало всеобщий интерес[1]. Реляционная модель была попыткой упростить структуру базы данных. Кодд первым предложил использовать для обработки данных аппарат теории множеств (объединение, пересечение, разность, декартово произведение) и показал, что любое представление данных сводится к совокупности двумерных таблиц особого вида, известного в математике как отношение [2].
Реляционная модель данных (РМД) – логическая модель данных, прикладная теория, описывающая структурный аспект, аспект целостности и аспект обработки данных в реляционных базах данных [3]:
структурный аспект – данные в базе данных представляют собой набор отношений;
аспект целостности – отношения (таблицы) отвечают определенным условиям целостности (РМД поддерживает декларативные ограничения целостности уровня домена (типа данных), уровня отношения и уровня базы данных);
аспект обработки – РМД поддерживает операторы манипулирования отношениями (реляционная алгебра, реляционное исчисление).
Кроме того, в состав реляционной модели данных обычно включают теорию нормализации.
Для лучшего понимания РМД следует отметить три важных обстоятельства:
модель является логической, то есть отношения являются логическими (абстрактными), а не физическими (хранимыми) структурами;
для реляционных баз данных верен информационный принцип: все информационное наполнение базы данных представлено одним и только одним способом, а именно – явным заданием значений атрибутов в кортежах отношений; в частности, нет никаких указателей (адресов), связывающих одно значение с другим;
наличие реляционной алгебры позволяет реализовать декларативное программирование и декларативное описание ограничений целостности, в дополнение к навигационному (процедурному) программированию и процедурной проверке условий.
Правила Теда Кодда
В статье, опубликованной в журнале "Computer World", Тэд Кодд сформулировал двенадцать правил, которым должна соответствовать настоящая реляционная база данных.
1. Правило информации. Вся информация в базе данных должна быть предоставлена исключительно на логическом уровне и только одним способом - в виде значений, содержащихся в таблицах.
2. Правило гарантированного доступа. Логический доступ ко всем и каждому элементу данных (атомарному значению) в реляционной базе данных должен обеспечиваться путём использования комбинации имени таблицы, первичного ключа и имени столбца.
3. Правило поддержки недействительных значений. В настоящей реляционной базе данных должна быть реализована поддержка недействительных значений, которые отличаются от строки символов нулевой длинны, строки пробельных символов, и от нуля или любого другого числа и используются для представления отсутствующих данных независимо от типа этих данных.
4. Правило динамического каталога, основанного на реляционной модели. Описание базы данных на логическом уровне должно быть представлено в том же виде, что и основные данные, чтобы пользователи, обладающие соответствующими правами, могли работать с ним с помощью того же реляционного языка, который они применяют для работы с основными данными.
5.Правило исчерпывающего подъязыка данных. Реляционная система может поддерживать различные языки и режимы взаимодействия с пользователем (например, режим вопросов и ответов). Однако должен существовать по крайней мере один язык, операторы которого можно представить в виде строк символов в соответствии с некоторым четко определенным синтаксисом и который в полной мере поддерживает следующие элементы: — определение данных; — определение представлений; — обработку данных (интерактивную и программную); — условия целостности; — идентификация прав доступа; — границы транзакций (начало, завершение и отмена).
6. Правило обновления представлений. Все представления, которые теоретически можно обновить, должны быть доступны для обновления.
7. Правило добавления, обновления и удаления. Возможность работать с отношением как с одним операндом должна существовать не только при чтении данных, но и при добавлении, обновлении и удалении данных.
8. Правило независимости физических данных. Прикладные программы и утилиты для работы с данными должны на логическом уровне оставаться нетронутыми при любых изменениях способов хранения данных или методов доступа к ним.
9. Правило независимости логических данных. Прикладные программы и утилиты для работы с данными должны на логическом уровне оставаться нетронутыми при внесении в базовые таблицы любых изменений, которые теоретически позволяют сохранить нетронутыми содержащиеся в этих таблицах данные.
10. Правило независимости условий целостности. Должна существовать возможность определять условия целостности, специфические для конкретной реляционной базы данных, на подъязыке реляционной базы данных и хранить их в каталоге, а не в прикладной программе.
11. Правило независимости распространения. Реляционная СУБД не должна зависеть от потребностей конкретного клиента.
12. Правило единственности. Если в реляционной системе есть низкоуровневой язык (обрабатывающий одну запись за один раз), то должна отсутствовать возможность использования его для того, чтобы обойти правила и условия целостности, выраженные на реляционном языке высокого уровня (обрабатывающем несколько записей за один раз).
В основе реляционной модели данных лежит понятие отношения.
Реляционная база данных – это совокупность отношении, содержащих всю информацию, которая должна храниться в базе данных.
Отношение – подмножество декартова произведения одного или более доменов.
Примеры отношений:
1. Бинарные отношения (отношения степени
2). В математике большую роль играют
бинарные отношения, т.е. отношения,
заданные на декартовом произведении
двух множеств
2. Отношение эквивалентности. Отношение
R на множестве
называется
отношением эквивалентности, если оно
обладает следующими свойствами:
1) (x,x) ∈ Rдля всехx ∈ A(рефлексивность)
2) Если (x,y) ∈ R, то(y,x) ∈ R(симметричность)
3) Если (x,y) ∈ Rи(y,z) ∈ R, то(x,z) ∈ R(транзитивность)
3. Отношения порядка. Отношение R на множестве A называется отношением порядка, если оно обладает следующими свойствами:
1) (x,x) ∈ Rдля всехx ∈ A(рефлексивность)
2) Если (x,y) ∈ Rи(y,x) ∈ R, тоx=y(антисимметричность)
3) Если (x,y) ∈ Rи(y,z) ∈ R, то(x,z) ∈ R(транзитивность)
Домен– множество возможных значений конкретного атрибута.
Атрибут– свойство объекта, явления или процесса. Примеры атрибутов: фамилия, имя, отчество, дата рождения.
Кортеж– элемент отношения, это отображение имен атрибутов в значения, взятые из соответствующих доменов. Конечное множество кортежей образует отношение. Если отношение создается из n доменов, то каждый кортеж имеет n компонент.
Тело содержит множество кортежей.
Каждый кортеж, в свою очередь, содержит множество пар <имя_атрибута : значение_атрибута>.
Пример:
Пусть, имеется два домена:
D1= (0, 1), D2= (a, b, c).
Построим декартово произведение доменов D1, D2:
Dl x D2= {(0,a),(0,b),(0,c),(l,a),(l,b),(l,c)}.
В качестве отношения, построенного на доменах Dl, D2, можно выбрать, например, следующее:
R={(0,а),(0,с),(1,b),(1,с)}.
Отношение R состоит из четырех кортежей, в каждом кортеже по два элемента, первый выбирают из домена D1, второй – из домена D2.
Следующие наборы терминов эквивалентны:
отношение, таблица, файл;
кортеж, строка, запись;
атрибут, поле.
Схемой отношения называется поименованный список имен атрибутов отношения .
Пример схемы:
Детали (Номер детали. Название детали, Вид обработки, Вес).
Ключевой атрибут в схеме отношения подчеркивают.
Схема реляционной базы данных - совокупность схем отношений, используемых для представления информации.
Степень отношения - число столбцов в отношении.
Мощность- текущее число кортежей в отношении.
Степень отношения обычно не изменяется после создания отношения, но мощность будет колебаться по мере добавления новых и удаления старых кортежей.
Каждое отношение имеет ключ, поскольку по меньшей мере комбинация всех его атрибутов удовлетворяет условию уникальности. Один из возможных ключей (выбранный произвольным образом) принимается за его первичный ключ. Остальные возможные ключи, если они есть, называются альтернативными ключами.
Пусть в отношении R1 имеется атрибут А, значения которого являются значениями ключевого атрибута В другого отношения R2. Тогда говорят, что атрибут А отношения R1 (атрибут В отношения R2) есть внешний ключ. С помощью внешних ключей устанавливаются связи между отношениями.
Пример отношения расписания занятий: |
№ пары |
предмет |
фамилия лектора |
время начала |
время окончания |
… |
аудитория № |
| |
1 |
Базы данных |
Дьяков |
9. 00 |
10. 35 |
… |
160 |
| |
2 |
Оптимизация |
Литовка |
10.45 |
12.20 |
… |
160 | ||
3 |
Компьютерная графика |
Васильев |
13. 00 |
14. 35
|
… |
155 | ||
4 |
ТАУ |
Мартемьянов |
14. 45 |
16. 20 |
… |
160 |

Основные ограничения реляционной базы данных:
1. Каждая таблица состоит из однотипных строк и имеет уникальное имя.
2. Строки имеют фиксированное число полей (столбцов) и значений (множественные поля и повторяющиеся группы недопустимы).
3. Строки таблицы обязательно отличаются друг от друга хотя бы единственным значением, что позволяет однозначно идентифицировать любую строку такой таблицы.
4. Столбцам таблицы однозначно присваиваются имена, и в каждом из них размещаются однородные значения данных (даты, фамилии, целые числа или денежные суммы).
5. Полное информационное содержание базы данных представляется в виде явных значений данных и такой метод представления является единственным.
6. При выполнении операций с таблицей ее строки и столбцы можно обрабатывать в любом порядке безотносительно к их информационному содержанию.