
- •1. Определение информации. Основные проблемы, возникающие при хранении информации.
- •2. Отличительные особенности субд как программного продукта. Понятие экземпляра и базы данных.
- •3. Категории пользователей субд. Функциональные требования различных категорий пользователей к субд.
- •4. История развития субд. Особенности не реляционных моделей данных.
- •5. Общая характеристика моделей данных. Основные свойства. Понятие атрибутов, доменов.
- •6. Отношения модели данных. Понятия сущности и связи.
- •7. Ограничение целостности модели данных. Трехуровневая архитектура ansi/sparc.
- •8. Структурные компоненты модели данных в нотации idef1x. Понятия сущность, связь. Типы сущностей и связей.
- •9. Реляционная модель данных. Базовые структурные компоненты реляционной модели данных. Основные свойства.
- •10. Свойства реляционной модели данных. Представление сущности.
- •11. Свойства реляционной модели данных. Представление связи.
- •12. Требования целостности в реляционной модели данных.
- •13. Язык определения данных в реляционной модели данных. Основные возможности. Примеры.
- •14. Типы ограничений целостности, основные типы данных, основные операции реляционной модели данных.
- •15. Проектирование реляционных баз данных. Цели проектирования, основные этапы.
- •16. Проектирование реляционных баз данных. Проблемы обновления, удаления, добавления данных. Типы ограничений целостности.
- •17. Функциональная зависимость. Нормализация отношений. Концепция нормальных форм.
- •18. Первая и вторая нормальные форма. Определение. Аномалии, возникающие при нарушении. Примеры нарушения и нормализации.
- •19. Третья нормальная форма. Нормальная форма Бойса-Кодда. Определение. Аномалии, возникающие при нарушении. Примеры нарушения и нормализации.
- •20. Понятие многозначной зависимости. Примеры.
- •21. Четвертая и пятая нормальные формы. Определение. Аномалии, возникающие при нарушении. Примеры нарушения и нормализации.
- •22. Основные свойства sql, как языка программирования. Отличие от других языков программирования.
- •23. Основы построения sql- запросов. Источники данных запроса. Условия выборки кортежей. Примеры.
- •24. Левые, правые и полные соединения. Функции для работы с null значениями. Выборка уникальных записей. Примеры.
- •25. Использование подзапросов. Типы подзапросов. Примеры.
- •26. Коррелированные подзапросы. Особенности использования in, not in,exists, not exists.
- •27. Теоретико-множественные операции в sql-запросах. Примеры.
- •28. Агрегирующие функции. Группировка кортежей. Примеры.
- •29. Представления. Особенности использования. Примеры.
- •30. Триггеры в Transact sql. Пример реализации триггера.
- •31. Курсоры. Основные функции. Правила применения. Примеры.
- •32. Внутренние структуры данных. Двухуровневая система доступа к данным. Отношения каталогов.
- •33. Методы доступа к данным. Бинарные деревья.
- •34. Методы доступа к данным. Многоходовые деревья.
- •35. Методы доступа к данным. Сбалансированные деревья. Структура, правила следования. Основные свойства.
- •36. Операция вставки элемента в в-дерево. Проблема переполнения, методы решения. Пример.
- •37. Операция удаления элемента из в-дерева. Проблема антипереполнения. Методы решения. Пример
- •42. Индекс на основе битовых карт. Основные свойства.
- •43. Индекс на основе битовых карт. Структура листового блока. Операция добавления элемента.
- •44. Индекс на основе битовых карт. Операция обновления элемента. Блокировка записей.
- •45. Методы доступа к данным. Основные операции выполнения sql-выражения.
- •46. Методы доступа к данным. Типы соединений таблиц.
28. Агрегирующие функции. Группировка кортежей. Примеры.
Агрегирующие
функции:
работают с набором строк и предоставляют
один результат в группе. Примеры
функций:
AVG,
COUNT,
MAX,
MIN,
SUM.
AVG
и SUM
используются только для числовых
значений. MIN
и MAX
для числовых значений и дат. COUNT(*)
возвращает количество строк в таблице,
COUNT(выражение) возвращает количество
строк с не пустым (не NULL) значением
выражения. COUNT(DISTINCT выражение) возвращает
количество уникальных не null значений
выражения.
Синтаксис:
SELECT [column,]Групповая_функция(column), ...
FROM таблица
[WHERE условие]
[GROUP BY column]
[ORDER BY column];
Есть возможность применять агрегирующие функции к группам данных. Для этого используется GROUP BY столбец (пример на рисунке, группировка идёт по номеру отдела). Группировку можно делать по нескольким колонкам.
Агрегирующие функции не могут использоваться в части WHERE! При выводе нескольких колонок, для тех, которые не обрабатываются агрегирующей функцией, должен быть установлен GROUP BY. При выводе одной колонки допускается не писать GROUP BY, тогда результат запроса будет рассматриваться как одна группа.
Использование HAVING. Выражение нужно для: накладывания дополнительных условий на результаты агрегирующих функций.
Пример:
SELECT отдел.номер_отдела, AVG(отдел.зарплата)
FROM отдел
GROUP BY номер_отдела
HAVING MAX(зарплата)>150; - будут выведены только те результаты, у которых значения соответствуют условию.
29. Представления. Особенности использования. Примеры.
Представление это объект БД на основе одной или нескольких таблиц и/или других представлений.( виртуальная (логическая) таблица, результат запроса из базы данных.)
Преимущества
представлений:
+ Ограниченный доступ к данным
+ Независимость от данных
+ Упрощение создания сложных запросов
+ Представление по разному одних и тех же данных
Создание представлений
CREATE VIEW имя_представления [(имя_колонки, …)] AS запрос
Имя_представления – именует представление. Имя_колонки – именует колонку представления.
AS – указывает начало определения представления. Запрос – определяет представление.
Причины использования View:
Использование представлений не даёт каких-то совершенно новых возможностей в работе с БД, но может быть очень удобно.
1) Представления скрывают от прикладной программы сложность запросов и саму структуру таблиц БД. Когда прикладной программе требуется таблица с определённым набором данных, она делает простейший запрос из подготовленного представления. При этом даже если для получения этих данных требуется чрезвычайно сложный запрос, сама программа этого запроса не содержит.
2) Использование представлений позволяет отделить прикладную схему представления данных от схемы хранения. С точки зрения прикладной программы структура данных соответствует тем представлениям, из которых программа эти данные извлекает. В действительности данные могут храниться совершенно иным образом, достаточно лишь создать представления, отвечающие потребностям программы. Разделение позволяет независимо модифицировать прикладную программу и схему хранения данных: как при изменении структуры физических таблиц, так и при изменении программы достаточно изменить представления соответствующим образом. Изменение программы не затрагивает физические таблицы, а изменение физической структуры таблиц не требует корректировки программы.
3) С помощью представлений обеспечивается ещё один уровень защиты данных. Пользователю могут предоставляться права только на представление, благодаря чему он не будет иметь доступа к данным, находящимся в тех же таблицах, но не предназначенных для него.
4) Поскольку SQL-запрос, выбирающий данные представления, зафиксирован на момент его создания, СУБД получает возможность применить к этому запросу оптимизацию или предварительную компиляцию, что положительно сказывается на скорости обращения к представлению, по сравнению с прямым выполнением того же запроса из прикладной программы.
Пример 1. CREATE VIEW sum_zakaz AS
SELECT SUM (WorkTable.WorkPrice) AS Summa, SalesID
FROM WorkSalesTable
INNER JOIN WorkTable On WorkTable.WorkId=WorkSalesTable.WorkId
GROUP By WorkSalesTable.SalesId
Пример 2. CREATE VIEW dept_sum_v (name, minsal, maxsal, avgsal)
AS
SELECT d.department_name, MIN(e.salary),MAX(e.salary),
AVG(e.salary)
FROM employees e JOIN departments d
ON (e.department_id = d.department_id)
GROUP BY d.department_name