
- •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. Методы доступа к данным. Типы соединений таблиц.
22. Основные свойства sql, как языка программирования. Отличие от других языков программирования.
Свойства: • Результатом запроса SELECT всегда является таблица.
• Данные, возвращаемые запросом, содержат данные из таблиц БД, или результаты операций над ними.
• Как правило один и тот же набор результирующих данных может быть получен различными способами.
• Скорость двух эквивалентных с точки зрения результата запросов может различаться на порядок.
• Манипуляторная часть SQL является декларативным языком программирования (мы описываем результат, а не последовательность действий, приводящих к его получению).
• Процедурные возможности, как правило, являются СУБД зависимыми (т.е. представлены расширениями языка).
• Запросы могут быть объединены в хранимую процедуру для повторных вызовов.
SQL относится к классу непроцедурных языков программирования. Это означает следующее: в качестве входной информации для формулируемого на языке SQL запроса к базе данных используется множество кортежей-записей одной или нескольких таблиц-отношений. В результате выполнения запроса также образуется множество кортежей результирующей таблицы-отношения. Другими словами, в SQL результатом любой операции над отношениями также является отношение. Запрос SQL задает не процедуру, то есть последовательность действий, необходимых для получения результата, а условия, которым должны удовлетворять кортежи результирующего отношения, сформулированные в терминах входного (или входных) отношения.
В отличие от многих языков программирования SQL удобочитаем и понятен даже новичкам. На языке SQL описываются наборы данных, помогающие получить ответы на вопросы. При использовании SQL необходимо применять правильный синтаксис. Синтаксис — это набор правил, позволяющих правильно сочетать элементы языка.
23. Основы построения sql- запросов. Источники данных запроса. Условия выборки кортежей. Примеры.
В большинстве случаев, выборка осуществляется из одной или нескольких таблиц. В последнем случае говорят об операции слияния. В тех СУБД, где реализованы представления и хранимые процедуры, также возможно получение соответствующих наборов данных.
Синтаксис оператора SELECT:
SELECT [DISTINCT| ALL] {* ⎟ [<СПИСОК СТОЛБЦОВ>]}
FROM <СПИСОК ТАБЛИЦ>
[WHERE <предикат-условие выборки или соединения;>]
[GROUP BY <список полей результата>]
[HAVING <предикат-условие для группы>]
[ORDER BY <список полей, по которым требуется упорядочить ВЫВОД>]
Фраза SELECT:
• наличие ключевого слова ALL (по умолчанию) означает, что в результирующую таблицу включаются все строки, удовлетворяющие условиям запроса, что может привести к появлению в результирующей таблице одинаковых строк;
• ключевое слово DISTINCT предназначено для приведения таблицы в соответствие с принципами теории отношений, где предполагается отсутствие дубликатов строк;
• символ "*" определяет очень часто встречаемую ситуацию, когда в результирующий набор включаются все столбцы из исходной таблицы• запроса.
Во фразе FROM задается перечень исходных таблиц запроса. Тут могут указываться ссылки на таблицу, соединения таблиц или вложенного табличного выражения. Ссылки на таблицу – просто перечисление имён. Соединение таблиц – через JOIN: INNER JOIN (по умолчанию) – внутреннее соединение, OUTER JOIN – внешнее соединение. Вложенное табличное выражение – это подзапрос, за которым обязательно следует AS <имя>.
Во фразе WHERE определяются условия отбора строк результата или условия соединения строк исходных таблиц, подобно операции условного соединения в реляционной алгебре. Здесь не могут быть использованы агрегатные функции. В качестве условий отбора могут быть использованы следующие операторы:
• сравнения " = , <>, >, <, >=, <=" — для сравнения результатов вычисления двух выражений; более сложные выражения строятся с помощью логических операторов AND, OR, NOT;
• BETWEEN А AND В — предикат истинен, когда вычисленное значение выражения попадает в заданный диапазон;
• IN — предикат истинен тогда, когда сравниваемое значение входит в множество заданных значений;
• LIKE и NOT LIKE — предикаты, смысл которых противоположен, требуют задания шаблона, с которым сравнивается заданное значение;
• IS NULL — предикат, применяющийся для выявления равенства значения некоторого атрибута неопределенному значению:
• EXIST и NOT EXIST, используемые во встроенных подзапросах.
Во фразе GROUP BY задается список полей группировки. Включается, в том числе, если в список вывода конструкции включается выражение, содержащее агрегатную функцию.
Во фразе HAVING задаются предикаты-условия, накладываемые на каждую группу.
Во фразе ORDER BY задается список полей упорядочения результата, то есть список полей, который определяет порядок сортировки в
результирующей таблице
Пример 1. SELECT SN “Имя поставщика”
FROM S JOIN SP ON S.Sid = SP.Sid
WHERE Pid = ‘P1’
Пример 2. SELECT Emp_id emp, Name_dept Name
FROM dept d
WHERE d.dep_id IN
(SELECT e.dep_id
FROM emp e);
Пример 3. SELECT DeptID, SUM(Salary)
FROM Emp
GROUP BY DeptID
HAVING SUM(Salary) >100