- •Введение в базы данных
- •Отношения между прикладными программами и субд
- •Системы обработки баз данных
- •История баз данных
- •Организационный контекст
- •Реляционная модель
- •Коммерческие субд для микрокомпьютеров
- •Клиент-серверные приложения баз данных
- •Базы данных с использованием Интернет-технологий
- •Распределенные базы данных
- •Объектно-ориентированные субд
- •Банк данных
- •Основные понятия и определения
- •Пользователи банков данных
- •База данных
- •Архитектура базы данных. Физическая и логическая независимость
- •Схемы и отображения
- •Независимость от данных
- •Система управления базами данных – субд
- •Процесс прохождения пользовательского запроса
- •Введение в разработку баз данных
- •Метаданные
- •Индексы
- •Метаданные приложений
- •Подсистема средств проектирования
- •Подсистема обработки
- •Ядро субд
- •Создание базы данных
- •Процесс разработки базы данных
- •Моделирование данных
- •Функции субд
- •Модели данных
- •Объектные или инфологические модели данных
- •Модели данных на основе записей или даталогические
- •Реляционная модель данных
- •Преподаватели
- •Сетевая модель данных
- •. Физические модели данных
- •Концептуальное моделирование
- •Реляционная модель
- •Структура реляционных данных
- •Кортежи
- •Внешний ключ
- •Альтернативная терминология
- •Математические отношения
- •Отношения в базе данных
- •Реляционные ключи
- •Реляционная целостность
- •Целостность сущностей
- •Ссылочная целостность
- •Реляционные языки
- •Реляционная алгебра
- •Учебный проект DreamHome
- •Реляционная алгебра (продолжение)
- •Выборка (или ограничение)
- •Проекция
- •Декартово произведение
- •Объединение
- •Разность
- •Операции соединения
- •Tema-соединение (θ-join)
- •Естественное соединение
- •Внешнее соединение
- •Полусоединение
- •Пересечение
- •Деление
- •Другие языки
- •Примеры применения реляционной алгебры
- •Обзор жизненного цикла информационных систем
- •Жизненный цикл приложения баз данных
- •Проектирование базы данных
- •Проектирование баз данных на основе восходящего подхода (Метод нормализации или декомпозиции)
- •Цель нормализации
- •Проблемы, вызываемые использованием единственного отношения (аномалии обновления)
- •Проблема вставки
- •Проблема обновления
- •Проблемы удаления
- •Функциональные зависимости
- •Процесс нормализации
- •Декомпозиция без потерь и функциональные зависимости
- •Первая нормальная форма (1 нф) (из Коннолли)
- •Вторая нормальная форма (2нф)
- •Третья нормальная форма (знф)
- •Нормальная форма Бойса-Кодда (нфбк)
- •4 И 5 нормальные формы (4нф и 5нф)
- •Пример нормализации
- •. Другая декомпозиция отношения консультант
- •Некоторые комментарии к декомпозиционному алгоритму проектирования
- •Некоторые модификации алгоритма проектирования Избыточные функциональные зависимости
- •Транзитивные зависимости
- •Добавление атрибутов в фз
- •Правила вывода
- •Алгоритм проектирования бд методом декомпозиции (восходящий метод)
- •Проверка отношений на завершающей фазе их проектирования
- •Задачи к текущему материалу
- •Пример аномалий для 2нф
- •Нормальная форма Бойса—Кодда (нфбк) с примером аномалий для 3 формы
- •Язык sql
- •Запрос одиночной таблицы
- •Проектирование в sql
- •Выборка в sql
- •Сортировка
- •Встроенные функции sql
- •Встроенные функции и группировка
- •Запрос нескольких таблиц
- •Вложенные запросы
- •Соединение с помощью sql
- •Сравнение вложенного запроса и соединения
- •Внешнее соединение
- •Операторы exists и not exists
- •Изменение данных
- •Insert into запись
- •Insert into запись
- •Insert into третьекурсник
- •Удаление данных
- •Модификация данных
- •Запрос на sql с exist и not exist (реализация реляционной операции Деления)
- •Операция внешнего соединения таблиц в access (Мои замечания)
- •Псевдонимы столбцов и таблиц
- •Уточнения запроса
- •Теоретико-множественные операции
- •Декартово произведение наборов записей
- •Объединение наборов записей (union)
- •Пересечение наборов записей (intersect)
- •Intersect corresponding (id_компонента, Тип_компонента)
- •Вычитание наборов записей (except)
- •Операции соединения
- •Естественное соединение (natural join)
- •Условное соединение (join... On)
- •Соединение по именам столбцов (join... Using)
- •Внешние соединения
- •Левое соединение {left outer join)
- •Правое соединение {right outer join)
- •Внешнее соединение Преподаватель-Изучение-Предмет. Создание в access. Пример
- •Операторы exists и not exists
- •Низходящее проектирование бд на основе er-модели Модель «сущность—связь» и ее варианты
- •Реализация низходящего проектирования бд на основе er-модели
- •Типы сущностей
- •Способы представления сущностей на диаграмме
- •Атрибуты
- •Типы связей
- •Представление связей на диаграммах
- •Атрибуты связей
- •. Структурные ограничения
- •Показатель кардинальности
- •Степень участия
- •Примеры er-проектирования
- •Модель «сущность—связь» в другом рассмотрении
- •Элементы модели «сущность—связь»
- •Сущности
- •Атрибуты
- •Идентификаторы
- •Три типа бинарных связей
- •Диаграммы «сущность—связь»
- •Изображение атрибутов в диаграммах «сущность—связь»
- •Слабые сущности
- •Представление многозначных атрибутов при помощи слабых сущностей
- •Подтипы сущностей
- •Пример er-диаграммы
- •Документирование делового регламента
- •Модель «сущность—связь» и case-средства
- •Диаграммы «сущность—связь» в стиле uml
- •Сущности и связи в uml
- •Представление слабых сущностей
- •Представление подтипов
- •Конструкции ооп, введенные языком uml
- •Роль uml в базах данных на сегодняшний день
- •Примеры
- •Вопросы группы I
- •Вопросы группы II
- •Литература по курсу «базы и банки данных»
Запрос на sql с exist и not exist (реализация реляционной операции Деления)
Это вариант примера из книги Кренке (стр. 322). Задача - требуется узнать имена студентов, которые записаны на ВСЕ предметы (т.е. это вариант реализации в SQL реляционной операции ДЕЛЕНИЯ). По-другому это можно выразить так (от противного): нам нужны имена таких студентов, для которых не существует предметов, на которые они не были бы записаны. В книге Кренке были использованы 2 ключевых слова NOT EXISTS.
SELECT Студент.Имя
FROM Студент
WHERE NOT Exists
(SELECT *
FROM Занятия
WHERE NOT EXISTS
(SELECT *
FROM Запись
WHERE Занятия.НазваниеПредмета=Запись.НазваниеПредмета
AND Запись.НомерСтудента=Студент.ЛичныйНомер));
Я их ввел как в книге (при этом пришлось исправить ошибку – поменять местами таблицы ЗАПИСЬ и ЗАНЯТИЯ во втором и третьем операторах FROM), но ACCESS сам сделал другой вариант (после того, как я просмотрел этот запрос в режиме конструктора, выйдя из режима SQL), который дает тот же результат, но использует одно (второе) ключевое слово NOT EXISTS и одно слово EXISTS, результату действия которого присваивается значение FALSE. Оба запроса дают одинаковый результат. Вот запрос, переделанный ACCESS'ом.
SELECT Студент.Имя
FROM Студент
WHERE (((Exists (SELECT *
FROM Занятия
WHERE NOT EXISTS
(SELECT *
FROM Запись
WHERE Занятия.НазваниеПредмета=Запись.НазваниеПредмета
AND Запись.НомерСтудента=Студент.ЛичныйНомер)))=False));
Известно, что Access дает лишнюю пару круглых скобок (которую можно убрать) и обычно пишет названия полей вместе с названиями таблиц, что не всегда обязательно.
В конце запросов в Access обязательно должна стоять точка с запятой!!!
Операция внешнего соединения таблиц в access (Мои замечания)
Хочу обратить внимание на неточности терминологии в ряде баз данных. Например, в ACCESS операцию Соединения часто называют Объединением (например, в ACCESS термин Параметры объединения таблиц при создании запроса следует понимать как Параметры соединения таблиц). Пользуясь случаем, дам следующую информацию о том, как выполнять операцию Внешнего соединения таблиц в ACCESS. Например, когда вы делаете запрос на выборку из 2 или более таблиц, то в режиме Конструктора необходимо щелкнуть правой кнопкой мыши по связи между таблицами и выбрать из появившегося меню пункт Параметры объединения. Появится окошко, в котором перечислены три возможных типа соединения : внутреннее соединение (используемое в ACCESS по умолчанию при создании запросов), левое внешнее соединения и правое внешнее соединение. В ряде случаев внешние соединения очень полезны. Также отмечу, что при выборе внешнего соединения поменяется внешний вид линии связи между таблицами (в частности, появится стрелка на одном конце связи). Следует заметить, что операцию внешнего соединения можно выполнять и при создании или редактировании схемы данных (там в окошке, где вы ставите галки о целостности и каскадных операциях, есть кнопка Объединение), что в некоторых случаях необходимо при создании структуры БД.
Псевдонимы столбцов и таблиц
Заголовки столбцов в результатной таблице можно переопределить по своему усмотрению, назначив для них так называемые псевдонимы. Для этого в списке столбцов после соответствующего столбца следует написать выражение вида:
as заголовок_столбца.
Например:
SELECT ClientName AS Клиент, Address AS Адрес FROM Клиенты;
Псевдонимы также можно задать и для каждой таблицы после ключевого слова from. Для этого достаточно указать псевдоним через пробел сразу после имени соответствующей таблицы Псевдонимы таблиц, более короткие, чем их имена, удобно использовать в сложных запросах. Например:
SELECT Т1.Имя, Т2.Адрес FROM Клиенты Т1, Контакты Т2;
Ключевое слово as (как) означает, что в результатной таблице соответствующий столбец должен иметь заголовок, указанный после as.
Как говорилось выше, назначаемый заголовок еще называют псевдонимом.
SELECT Регион,
SUM(Сумма_заказа) AS [Общая сумма заказа],
AVG(Сумма_заказа) AS [Средняя сумма заказа],
МАХ(Сумма_заказа) AS Максимум,
MIN(Сумма_заказа) AS Минимум FROM Клиенты GROUP BY Регион;
Псевдонимы, состоящие из нескольких слов, разделенных пробелами, заключаются в квадратные скобки.
Итоговые функции можно использовать в выражениях select и having, но их нельзя применять в выражении where.
Оператор having аналогичен оператору where, но в отличие от where он отбирает записи в группах.
Допустим, требуется определить, в каких регионах более одного клиента. С этой целью можно воспользоваться таким запросом:
SELECT Регион, Count(*)
FROM Клиенты
GROUP BY Регион HAVING COUNT(*) > 1;
