
- •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. Методы доступа к данным. Типы соединений таблиц.
26. Коррелированные подзапросы. Особенности использования in, not in,exists, not exists.
Коррелированный подзапрос - это оператор SELECT, вложенный в другой оператор, и ссылающийся на один или несколько столбцов внешнего запроса. Поэтому можно сказать, что коррелированный подзапрос зависит от внешнего запроса. Это - главное различие между коррелированным и простым подзапросом. Простой подзапрос не ссылается на внешний запрос, он может быть выполнен независимо от него.
Оператор EXISTS возвращает значение 1 (TRUE), если результат подзапроса содержит хотя бы одну строку, и значение 0 (FALSE), если подзапрос выдает пустой результат. Например, получить список товаров, заказанных по крайней мере одним клиентом, можно с помощью запроса SELECT * FROM Products WHERE EXISTS (SELECT * FROM Orders WHERE product_id = Products.id AND customer_id IS NOT NULL);
Оператор NOT EXISTS возвращает результат, противоположный результату выполнения оператора EXISTS: 1 (TRUE), если результат подзапроса не содержит ни одной строки, и 0 (FALSE), если результат подзапроса непустой. Например, получить список клиентов, заказавших все виды товаров, можно с помощью следующего запроса: SELECT * FROM Customers WHERE NOT EXISTS (SELECT * FROM Products WHERE NOT EXISTS (SELECT * FROM Orders WHERE product_id = Products.id AND customer_id = Customers.id));
Операторы IN и NOT IN, с которыми вы познакомились в подразделе «Операторы сравнения», позволяют проверить, содержится ли некоторое значение в результате подзапроса. Рассмотрим еще один пример использования оператора IN. SELECT * FROM Customers WHERE '2007-12-12' IN (SELECT date FROM Orders WHERE Customers.id = customer_id);
Обобщенные правила по использованию IN, NOT IN, EXISTS, NOT EXISTS:
1.
Правила, описанные ниже не являются
рецептами на все случаи жизни. В
зависимости от конкретной ситуации из
них могут быть исключения.
2. Принцип работы EXIST и NOT EXISTS во многом аналогичен.
3. Принцип работы IN и NOT IN во многом аналогичен если нет значений NULL. Если присутствуют значения NULL, работа IN и NOT IN отличается.
4. Предикат NOT IN не содержит значений NULL.
5. Предикат IN может работать эффективней чем EXISTS, если внешний запрос работает с большим набором данных, а внутренний с не большим.
6. Предикат EXISTS может работать эффективней чем IN, если внешний запрос работает с небольшим набором данных, а внутренний с большим.
7. Результат работы NOT IN и NOT EXISTS различен, если в данных присутствует NULL.
8. Результат работы NOT IN и NOT EXISTS одинаковый, если в данных нет значений NULL, но производительность работы разная.
27. Теоретико-множественные операции в sql-запросах. Примеры.
Теоретико-множественные операции – объединение (UNION), вычитание (MINUS), пересечение (INTERSECT).
Операция
UNION (аналог
Full
outer join)
Возвращает результат объединения двух запросов, исключая дубликаты.
SELECT Dep_id
FROM Dep
UNION
SELECT Dep_id
FROM Emp
Операция
INTERSECT (аналог
inner
join)
Возвращает строки, которые присутствуют в обоих запросах.
SELECT Dep_id
FROM Dep
WHERE Dep_id <>3
INTERSECT
SELECT Dep_id
FROM Emp
Операция MINUS
Возвращает строки первого запроса, которые отсутствуют во втором
SELECT Dep_id
FROM Dep
MINUS
SELECT Dep_id
FROM Emp
WHERE Dep_id NOT IN(1,2)