- •Введение
- •Глава 1 информационные системы
- •1.1 Информация как ресурс
- •1.2 Файловые системы
- •1.3 Информационные системы, использующие базы данных
- •1.3.1 Иерархические и сетевые модели данных
- •1.3.2 Реляционные системы управления базами данных
- •1.4 Компоненты информационных систем
- •1.4.1 Технические средства
- •1.4.2 Программное обеспечение
- •1.4.3 Данные
- •1.4.4 Пользователи
- •1.4.5 Организационное обеспечение
- •1.4.6 Отношения между компонентами системы
- •1.5 Основы проектирования информационных систем
- •1.5.1 Жизненный цикл программного обеспечения
- •1.5.2 Модели жизненного цикла по
- •1.5.3 Подходы к проектированию ис
- •1.6 Задания и вопросы для повторения
- •2.2 Подходы к проектированию баз данных
- •2.3 Создание базы данных
- •2.4 Основы концептуального проектирования баз данных
- •Объекты и отношения
- •2.3.2. Атрибуты
- •2.3.3 Ключи
- •2.3.4 Наследование
- •2.3.5 Составные объекты
- •2.3.6 Моделирование концептуальных и физических объектов
- •2.4 Реляционная модель данных
- •2.4.1 Поддержка целостности данных
- •Процесс нормализации таблиц
- •2.4.3 Пример построения нормализованной базы данных
- •2.4.4 Преобразование концептуальной модели в реляционную
- •2.5 Элементы er-моделирования
- •2.5.1 Основные понятия модели «сущность-связь»
- •2.5.2 Основные графические обозначения элементов модели
- •2.6 Заключительный этап проектирования
- •2.7 Сравнение концептуального и реляционного моделирования
- •2.8 Вопросы и задания для повторения
- •2.9 Упражнения и задачи
- •2.10 Проекты и профессиональные вопросы
- •Глава 3 реляционная алгебра и реляционное исчисление
- •3.1 Реляционная алгебра
- •3.1.1 Обзор реляционной алгебры
- •3.1.2 Теоретико-множественные операторы
- •3.1.3 Специальные реляционные операторы
- •3.1.4 Зависимые реляционные операторы
- •3.1.5 Примитивные реляционные операторы
- •3.2 Реляционное исчисление
- •3.2.1 Целевой список и определяющее выражение
- •3.2.2 Квантор существования
- •3.2.3 Квантор всеобщности
- •3.3 Заключение
- •3.4 Вопросы на повторение
- •3.5 Упражнения и задачи
- •Глава 4 управление реляционной базой данных с помощью sql
- •4.1 Элементы Transact-sql
- •Комментарии
- •4.1.2 Алфавит
- •4.1.3 Идентификаторы
- •Выражения
- •4.1.5 Ключевые слова
- •Операторы
- •4.1.7 Логические операторы
- •Типы данных
- •- Функции Transact-sql
- •4.2 Выборка данных из таблиц
- •4.2.1 Структура команды select
- •Результаты выборки
- •Отбор столбцов
- •Select Фамилия, Город from Гостиница.Dbo.Клиент
- •4.2.4 Определение заголовков столбцов
- •Выражения в выборках
- •Отбор записей
- •Порядок вывода данных
- •Котов Кузьма Кузьмич
- •Группировка данных
- •Отбор данных для групп
- •4.2.10 Директива compute
- •Выборка данных из нескольких таблиц
- •Объединение с помощью предложения where
- •Внутреннее объединение
- •4.2.14 Объединение и опция join
- •Оператор union
- •Подзапросы и структурированные запросы
- •Создание таблицы на основе выборки
- •Предложение for browse
- •4.3 Модификация данных
- •Добавление данных
- •Изменение данных
- •Удаление строк
- •Управляющие конструкции
- •Создание таблиц базы данных
- •4.6 Транзакции и блокировки
- •4.6.1 Понятие транзакций и блокировок
- •Управление транзакциями
- •Явные транзакции
- •Автоматические транзакции
- •Неявные транзакции
- •Управление блокировками
- •4.7 Хранимые процедуры
- •4.7.1 Типы хранимых процедур
- •Создание хранимых процедур
- •4.8 Триггеры
- •Создание триггера
- •Ограничения при создании триггеров
- •Использование триггеров
- •Вопросы на повторение
- •4.10 Упражнения и задачи
- •4.11 Проекты и профессиональные вопросы
- •Заключение
- •Приложение а sql скрпит, для создания таблиц согласно модели бд "Университет"
- •Литература
3.1.4 Зависимые реляционные операторы
Как было сказано в начале главы, не все операторы реляционной алгебры являются независимыми - некоторые из них выражаются через другие реляционные операторы.
Оператор соединения
Оператор соединения определяется через операторы декартового произведения и выборки. Для оператора естественного соединения добавляется оператор проекции.
Оператор пересечения
Оператор пересечения выражается через вычитание следующим образом:
A INTERSECT B = A MINUS (A MINUS B)
Оператор деления
Оператор деления выражается через операторы вычитания, декартового произведения и проекции следующим образом:
A DEVIDEBY B = A[X] MINUS((A[X] TIMES B)MINUS A)[X]
Таким образом показано, что операторы соединения, пересечения и деления можно выразить через другие реляционные операторы, т.е. эти операторы не являются примитивными.
3.1.5 Примитивные реляционные операторы
Оставшиеся реляционные операторы (объединение, вычитание, декартово произведение, выборка, проекция) являются независимыми операторами - их нельзя выразить друг через друга. Еще их иногда называют примитивными.
Оператор декартового произведения - это единственный оператор, увеличивающий количество атрибутов, поэтому его нельзя выразить через объединение, вычитание, выборку, проекцию.
Оператор проекции - единственный оператор, уменьшающий количество атрибутов, поэтому его нельзя выразить через объединение, вычитание, декартово произведение, выборку.
Оператор выборки - единственный оператор, позволяющий проводить сравнения по атрибутам отношения, поэтому его нельзя выразить через объединение, вычитание, декартово произведение, проекцию.
Операторы объединения и вычитания – также являются примитивными реляционными операторами.
3.2 Реляционное исчисление
В реляционном исчислении используется совершенно иной подход, чем в реляционной алгебре. Однако, эти два языка логически эквивалентны. Это означает, что любой запрос, который можно выполнить на одном языке, можно выполнить и на другом.
Рассмотрим запрос:
Кто из торговых агентов работает в Ярославле?
В реляционном исчислении этот запрос выполняется следующим образом:
{r.SalpersName : r IN SalesPerson AND r.Office = ‘Ярославль’}
Фигурные скобки означают, что ответом на запрос будет множество значений данных. Приведенное здесь решение иллюстрирует почти все элементы реляционного исчисления. Объясним значение частей нашего решения:
r – это переменная, обозначающая произвольную строку. Таблица, из которой берется r, определяется выражением «r IN SalesPerson», которое обозначает, что r строка таблицы SalesPerson. Далее будем использовать для обозначения строк маленькие буквы латинского алфавита;
r.SalpersName – значение атрибута SalpersName в строке r;
Двоеточие разделяет целевой список и определяющее выражение;
«r IN SalesPerson» объясняется в п. 1;
«r.Office = ‘Ярославль’» означает, что значение атрибута Office в строке r равно ‘Ярославль’.
3.2.1 Целевой список и определяющее выражение
Целевой список – это список в выражении реляционного исчисления, определяющий атрибуты таблицы решения.
Определяющее выражение – это условие в выражении реляционного исчисления, ограничивающее вхождение элементов в таблицу решения.
Решением каждого запроса в реляционном исчислении является реляционная таблица, которая задается целевым списком и определяющим выражением. Целевой список определяет атрибуты таблицы решения. На основе определяющего выражения отбираются значения из базы данных, которые войдут в таблицу решения. Объясним, как они работают.
В рассмотренном примере целевым списком был r.SalpersName. Другими словами, таблица решения имеет только один атрибут – имя торгового агента. Значения, входящие в таблицу решения, взяты из тех строк, которые удовлетворяют определяющему выражению:
r IN SalesPerson AND r.Office = ‘Ярославль’
В рассмотренном примере целевой список состоит из одного атрибута. Однако, в общем случае, целевой список может состоять из нескольких атрибутов. Атрибуты списка отделяются друг от друга запятыми. Например,
{r.SalpersId, r.SalpersName, r.ManagerId : r IN SalesPerson AND r.Office = ‘Ярославль’}
Более того, можно выбрать любое подмножество из этих атрибутов.
Из данного объяснения можно понять, как операции выбора и проектирования реляционной алгебры поддерживаются в реляционном исчислении. Объединение, пересечение, разность и произведение также легко можно вывести из конструкций реляционного исчисления, которые мы обсудили к настоящему моменту. В исчислении не используются пошаговые процедуры алгебры. Поэтому операция присвоения здесь не нужна. Остались только две операции реляционной алгебры (соединения и деления), для которых требуются кванторы: квантор существования для соединения и квантор всеобщности для деления.
