
- •1. Введение в бд
- •2. Теоретические основы бд
- •2.1 Базы данных
- •2.2. Архитектуры обработки информации
- •Ошибка! Ошибка связи.
- •Ошибка! Ошибка связи.
- •2.3 Модели баз данных
- •2.3.1 Иерархическая модель данных
- •Ошибка! Ошибка связи.
- •Ошибка! Ошибка связи.
- •2.3.2 Сетевая модель данных
- •Ошибка! Ошибка связи.
- •2.3.3 Реляционная модель данных
- •3. Реляционный подход к организации бд
- •3.1 Базовые понятия реляционных баз данных
- •Ошибка! Ошибка связи.
- •3.2 Фундаментальные свойства отношений
- •3.3 Взаимосвязь отношений
- •4. Реляционная алгебра
- •4.1 Обзор реляционной алгебры
- •Замкнутость реляционной алгебры
- •Отношения, совместимые по типу
- •4.2 Теоретико-множественные операторы
- •4.3 Специальные реляционные операторы
- •4.4 Зависимые реляционные операторы
- •4.5 Примитивные реляционные операторы
- •4.6 Запросы, невыразимые средствами реляционной алгебры
- •4.7 Кросс-таблицы
- •5. Проектирование бд
- •5.1. Цели и этапы проектирования
- •5.2 Уровни моделирования (проектирования) бд
- •5.3 Критерии оценки качества логической модели данных
- •5.4 Нормализация и ее необходимость
- •5.5 Теория нормализации
- •5.6 Элементы модели "сущность-связь"
- •Основные понятия er-диаграмм
- •Ошибка! Ошибка связи.
- •6. Элементы языка sql
- •6.1 Типы данных
- •6.2 Операторы dml (определения объектов базы данных)
- •6.2.1 Операторы работы с таблицами
- •6.3 Операторы dml (операторы манипулирования данными)
- •6.3.1 Примеры использования операторов манипулирования данными
- •Insert - вставка строк в таблицу
- •6.3.2 Update - обновление строк в таблице
- •6.3.3 Delete - удаление строк в таблице
- •6.3.4 Выбор данных из таблицы select
- •6.3.4.1 Общий синтаксис команды select
- •6.3.4.2 Примеры работы с использованием оператора select
- •Использование агрегатных функций в запросах
- •Использование агрегатных функций с группировками
- •Использование подзапросов
- •Использование объединения, пересечения и разности
- •6.3.4.3 Порядок выполнения оператора select
- •6.3.4.4 Реализация реляционной алгебры средствами оператора select (Реляционная полнота sql)
- •6.4 Объекты и концепции базы данных
- •6.4.1 Таблицы (Tables)
- •6.4.2 Столбцы (Columns)
- •6.4.3 Типы данных (Data types)
- •Тип данных blob
- •6.4.4 Домены (Domains)
- •6.4.5 Справочные ограничения целостности (Referential integrity constraints)
- •6.4.6 Индексы (Indexes)
- •6.4.7 Представления (Views)
- •6.4.8. Хранимые процедуры (Stored procedures)
- •6.4.9 Триггеры (Triggers)
- •6.4.10 Генераторы (Generators)
- •6.4.11 Защита (Security)
- •6.5 Операторы sql для работы с объектами бд
- •6.5.1 Представления
- •6.5.2 Хранимые процедуры
- •6.5.3 Генераторы
- •6.5.4 Триггеры
- •6.5.5 Индексы
- •6.6 Инструкции sql
- •7. Физическая организация и работа субд
- •7.1 Хранение данных
- •Ошибка! Ошибка связи.
6.3.4.4 Реализация реляционной алгебры средствами оператора select (Реляционная полнота sql)
Для того, чтобы показать, что язык SQL является реляционно полным, нужно показать, что любой реляционный оператор может быть выражен средствами SQL. На самом деле достаточно показать, что средствами SQL можно выразить любой из примитивных реляционных операторов.
Оператор декартового произведения A TIMES B
Оператор SQL:
SELECT *
FROM A, B;
или (по столбцу)
SELECT *
FROM A JOIN B ON
A.id_city = B.id_city
Оператор проекции: A[X,Y,…Z]
Оператор SQL:
SELECT DISTINCT X, Y, …, Z
FROM A;
Оператор выборки: A WHERE c
Оператор SQL:
SELECT *
FROM A
WHERE c;
Оператор объединения: A UNION B
Оператор SQL:
SELECT *
FROM A
UNION
SELECT *
FROM B;
Оператор вычитания: A MINUS B
Оператор SQL:
SELECT *
FROM A
EXCEPT
SELECT *
FROM B
Реляционный оператор переименования RENAME выражается при помощи ключевого слова AS в списке отбираемых полей оператора SELECT. Таким образом, язык SQL является реляционно-полным.
Остальные операторы реляционной алгебры (соединение, пересечение, деление) выражаются через примитивные, следовательно, могут быть выражены операторами SQL. Тем не менее, для практических целей приведем их.
Оператор соединения: (A TIMES B) WHERE c
Оператор SQL:
SELECT *
FROM A, B
WHERE c;
или
SELECT *
FROM A CROSS JOIN B
WHERE c;
Оператор пересечения: A INTERSECT B
Оператор SQL:
SELECT * FROM a
WHERE EXISTS (SELECT * FROM b)
Оператор деления: A(X, Y) DEVIDEBY B(Y)
Оператор SQL:
SELECT DISTINCT A.zap
FROM A
WHERE NOT EXISTS
(SELECT *
FROM B
WHERE NOT EXISTS
(SELECT *
FROM A A1
WHERE
A1.fam = A.fam AND
A1.zap =
6.4 Объекты и концепции базы данных
База данных состоит из различных объектов, таких как таблицы, виды, домены, сохраненные процедуры, триггеры. Объекты базы данных содержат всю информацию о ее структуре и данных. Объекты базы данных так же упоминаются, как метаданные. Всего выделяются следующие объекты БД:
6.4.1 Таблицы (Tables)
6.4.2 Столбцы (Columns)
6.4.3 Типы данных (Data types)
6.4.4 Домены (Domains)
6.4.5 Справочные ограничения целостности (Referential integrity constraints)
6.4.6 Индексы (Indexes)
6.4.7 Виды (Views)
6.4.8. Сохраненные процедуры (Stored procedures)
6.4.9 Триггеры (Triggers)
6.4.10 Генераторы (Generators)
6.4.11 Защита (Security)
6.4.1 Таблицы (Tables)
Реляционные базы данных хранят все данные в таблицах. Таблица это структура, состоящая из множества неупорядоченных горизонтальных строк (rows), каждая из которых содержит одинаковое количество вертикальных столбцов (colums). Пересечение отдельной строки и столбца называеися полем (field), которое содержит специфическую информацию. Многие принципы работы реляционной базы данных взяты из определений отношений (relations) между таблицами.
InterBase хранит информацию о метаданных в специальных таблицах, которые называются системными таблицами (system tables). Системные таблицы имеют специальные столбцы, которые содержат информацию о типе метаданных в этой таблице. Имена всех системных таблиц начинаются с "RDB$". Пример системной таблицы - RDB$RELATIONS, которая содержит информацию о каждой таблице в базе данных.
Системные таблицы имеют такую же структуру, как и определенные пользователем таблицы и расположены в той же самой базе. Так как метаданные, пользовательские таблицы, и данные все вместе расположены в одном и том же файле базы данных, каждая база данных является законченным модулем и может быть легко перенесена между различными машинами.
Системные таблицы могут быть изменены подобно любой другой таблице базы данных. Если вы не понимаете всех взаимосвязей между системными таблицами, то непосредственное изменение их может иметь негативный эффект на другие системные таблицы и разрушить вашу базу данных.