
- •1.Информационные системы
- •2.Основные понятия теории баз данных
- •2.1.Предметная область
- •2.2.Интеграция данных Достоинства интеграции данных
- •Проблемы, связанные с интеграцией данных
- •2.3.Функции администратора базы данных
- •Защита данных от разрушения при сбоях оборудования.
- •Защита от некорректных обновлений.
- •Защита данных от несанкционированного доступа.
- •Обеспечение коллективного доступа к данным.
- •2.4.Проектирование и развитие баз данных
- •3.Архитектура информационной системы
- •3.1.Пользователи информационной системы
- •3.2.Уровни представления информационной системы.
- •Начальный уровень
- •Инфологический уровень
- •4.2.Способы упорядочения подчиненных записей
- •4.3.Режим включения подчиненных записей
- •4.4.Режим исключения подчиненных записей.
- •4.5.Операции над данными в сетевой модели.
- •4.6.Ограничения целостности в сетевой модели.
- •5.Иерархические базы данных
- •5.1.Структура данных иерархической модели
- •5.2.Операции над данными в иерархической модели
- •5.3.Ограничения целостности в иерархической модели.
- •6.Реляционные базы данных
- •6.1.Цели проектирования баз данных
- •6.2.Универсальные отношения
- •6.3.Проблемы, связанные с использованием единственного отношения
- •Проблема вставки.
- •Проблема обновления.
- •Проблема удаления.
- •6.4.Функциональные зависимости
- •6.5.Нормальные формы отношений Первая нормальная форма
- •Вторая нормальная форма
- •Третья нормальная форма
- •Третья усиленная форма или нормальная форма Бойса–Кодда (нфбк)
- •6.6.Декомпозиция отношений
- •6.7.Избыточные функциональные зависимости. Правила вывода
- •Правило 1. Транзитивные зависимости
- •Пример удаления избыточных зависимостей с помощью правил вывода
- •6.8.Общая схема проектирования баз данных методом декомпозиции
- •6.9.Проектирование базы данных по предметной области “Начальник отдела”.
- •Выявление функциональных зависимостей
- •Декомпозиция универсального отношения
- •Проверка на наличие аномалий в отношениях базы данных “Начальник отдела”
- •7.Семантическое моделирование или проектирования баз данных методом “Сущность-связь”
- •7.1.Сущности и связи
- •Диаграмма еr–экземпляров:
- •Диаграмма er–типа:
- •Терминология метода “Сущность-связь”
- •7.2.Степень связи
- •7.3.Класс принадлежности сущности
- •Примеры диаграмм er-типа связей степени 1:1.
- •Примеры диаграмм er-типа связей степени 1:n и n:1
- •Примеры диаграмм er-типа связей степени m:n
- •7.4.Порядок или мерность связи
- •7.5.Схема проектирования баз данных методом “сущность-связь”
- •7.6.Бинарные связи со степенью связи 1: 1
- •Правило 1.
- •Правило 2.
- •Правило 3.
- •7.7.Бинарные связи со степенью связи 1: n
- •Правило 4.
- •Правило 5.
- •7.8.Бинарные связи степени m:n.
- •Правило 6.
- •Пример проектирования с использованием связей степенью м:n
- •7.9.Связи более высокого порядка
- •Правило 7
- •Пример проектирования с использованием связей более высокого порядка
- •7.10.Использование ролей
- •Правило 8
- •Пример проектирования с использованием ролей
- •8.Постреляционные базы данных
- •8.1.Ограничения реляционных баз данных.
- •Недостатки реляционных баз данных
- •8.2.Системы управления базами данных следующего поколения
- •Абстрактные типы данных
- •Генерация систем баз данных, ориентированных на приложения
- •8.3.Ориентация на расширенную реляционную модель
- •Расширенная реляционная модель
- •9.Объектно-ориентированные субд.
- •9.1.Объектно-ориентированная парадигма.
- •Структура:
- •Целостность данных:
- •Средства манипулирования данными:
- •9.2.Анализ эффективности объектно-ориентированных баз данных Преимущества объектно-ориентированных баз данных:
- •Недостатки объектно-ориентированных баз данных:
- •9.3.Стандарт odmg.
- •Объектная модель
- •Язык описания объектов
- •Язык объектных запросов
- •Связывание с оо-языками
- •9.4.Объектные расширения реляционных субд. Язык sql-3.
- •10.Базы знаний
- •10.1.Понятие системы баз знаний.
- •10.2.Структура системы базы знаний Компоненты Системы баз знаний (сбз):
- •Экстенсиональная и интенсиональная части базы данных
- •10.3.Активные базы данных
- •10.4.Дедуктивные базы данных
- •10.5.Инструментальные средства построения систем баз знаний.
- •11. Язык sql
- •11.1.Стандарт языка доступа к бд
- •11.2.Классификация операторов sql
- •Ddl (data definition language) – операторы определения объектов бд.
- •Dml (data manipulate language) – операторы манипулирования данными.
- •Операторы защиты и управления данными.
- •11.3.Операторы sql create table (создание таблиц)
- •Insert into (Вставка записей).
- •Update (Редактирование записей).
- •Операции языка sql
- •Delete (Удаление записей).
- •Оператор select.
- •Модификатор distinct (предотвращение выборки повторяющихся слов).
- •Order by (упорядочение строк в результате запроса).
- •Использование псевдонимов (alias).
- •11.4.Арифметические выражения.
- •11.5.Групповые функции.
- •Предложение having.
- •11.6.Вложенные запросы.
- •Подзапросы, возвращающие набор значений.
- •Подзапросы, возвращающие значения из нескольких столбцов.
- •Составные запросы с несколькими подзапросами.
- •Синхронизация повторяющихся подзапросов
- •Комбинация нескольких команд Select
- •11.7.Индексы
- •12.Глоссарий
- •Оглавление
- •1. Информационные системы 1
- •2. Основные понятия теории баз данных 2
- •7. Семантическое моделирование или проектирования баз данных методом “Сущность-связь” 49
- •8. Постреляционные базы данных 86
- •9. Объектно-ориентированные субд. 91
- •10. Базы знаний 96
- •11. Язык sql 101
- •12. Глоссарий 123
Использование псевдонимов (alias).
Иногда приходится выполнять запросы, в которых таблица соединяется сама с собой, или одна таблица соединяется дважды с другой таблицей. В этом случае используют псевдонимы таблицы, которые позволяют различать соединяемые копии таблиц.
Псевдонимы (алиасы или имя корреляции) вводится в разделе FROM и пишутся через пробел после имени таблицы.
Имена корреляции должны использоваться в качестве префиксов перед именем столбца и отделяться от него точкой:
Пример:
SELECT S.Фамилия, O.НомОтд
FROM Сотрудники S, Отдел O
Псевдонимы существуют не только для таблиц, но и для полей. Если в запросе указывается одно и то же поле из разных экземпляров одной таблицы, они должны быть переименованы для устранения неоднозначности в наименованиях колонок результирующей таблицы. Определение имени корреляции делается только во время выполнения запроса.
Пример:
SELECT S1.Фамилия AS Фамилия1, S2.Оклад AS ОкладМаленький
FROM Сотрудники S1, Сотрудники S2
WHERE S1.Оклад < S2.Оклад
11.4.Арифметические выражения.
Арифметические выражения в WHERE.
В WHERE формируется условие соединения таблиц, либо условие выбора строк.
Пример:
SELECT Фамилия, Оклад, Премия
FROM Сотрудники
WHERE Премия > 0,25*Оклад
Пример. Получить список инженеров в убывающем порядке отношения Премия/Оклад:
SELECT Фамилия, Оклад, Премия, Премия/Оклад
FROM Сотрудники
ORDER BY Премия/Оклад,DESC
11.5.Групповые функции.
К группам строк , извлеченным в результате запроса можно применить групповые функции:
AVG, COUNT, MAX, MIN, SUM
Пример. Определить средний оклад экономистов:
SELECT AVG(Оклад)
FROM Сотрудники
WHERE Должность = ‘Экономист’
Пример. Определить общий оклад и общую премию у всех инженеров:
SELECT SUM(Вклад), SUM(Премия)
FROM Сотрудники
WHERE Должность = ‘Инженер’
Групповые функции могут быть использованы в аналитических выражениях.
Пример:
SELECT AVG(Оклад+Премия)*12
FROM Сотрудники
WHERE Должность = ‘Инженер’
Пример. Определить в организации минимальные и максимальные оклады, и их разницу:
SELECT MAX(Оклад), MIN(Оклад), MAX(Оклад) - MIN(Оклад) AS Результат
Замечание. Список выборки предложения SELECT, состоящий из групповых функций, должен содержать имена столбцов, только как атрибуты групповых функций.
Пример. Получить фамилию и оклад сотрудника с максимальным окладом, используя подзапрос:
SELECT Фамилия, Оклад
FROM Сотрудники
WHERE Оклад = ( SELECT МАХ(Оклад) FROM Сотрудники)
Тот же результат выдаст и следующий запрос:
SELECT Фамилия, MAX(Оклад).
Пример. Подсчитать количество сотрудников 30-го отдела, получающих премию:
SELECT COUNT(Премия)
FROM Сотрудники
WHERE Отдел = 30 AND (Премия >0 OR Премия NOT NULL)
COUNT можно использовать со словом DISTINCT
Пример. Подсчитать количество должностей сотрудников 30-го отдела:
SELECT COUNT (DISTINCT Должность)
FROM Сотрудники
WHERE Отдел = 30
COUNT(*) подсчитывает количество строк, удовлетворяющих условиям поиска выбора.
Пример:
SELECT COUNT(*)
FROM Сотрудники
WHERE Отдел = 30
Использование агрегативных функций в запросе вместе с операндом GROUP BY.
GROUP BY служит для выборки итоговых данных по группам:
Пример. Определить средний оклад сотрудников отделов № 10, №20, №30:
SELECT AVG(Оклад)
FROM Сотрудники
GROUP BY Отдел = 10 (20,30)
GROUP BY делит таблицу на группу строк с совпадающими значениями в одном и том же столбце или столбцах.
Пример. Выбрать номера отделов и средний оклад по отделу:
SELECT Отдел AVG(Оклад)
FROM Сотрудники
GROUP BY Отдел
Если в запросе используется GROUP BY, то в предложении SELECT вместе с групповыми функциями можно указать групповой столбец, поскольку значения в групповом столбце являются атрибутом группы строк (например, у всей группы один номер отдела, так как строки группируются по отделу).
Предложение GROUP BY всегда должно следовать за WHERE, если оно есть, а если WHERE нет – то за FROM
Для распределения строк по группам можно использовать значения столбцов.
Пример:
SELECT Отдел, Должность, COUNT(*), AVG(Оклад)
FROM Сотрудники
GROUP BY Отдел, Должность
В одном запросе совместно с групповыми функциями можно использовать условия соединения таблиц. Например, добавим в предыдущий пример номер отдела и название отдела .
SELECT НазвОтд, Должность, COUNT(*), AVG(Оклад)
FROM Сотрудники, Отделы
WHERE Сотрудники.Отдел = Отделы.Отдел
GROUP BY НазвОтд, Должность