
- •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. Методы доступа к данным. Типы соединений таблиц.
6. Отношения модели данных. Понятия сущности и связи.
Множество это собрание правильно идентифицированных объектов, удовлетворяющих условию принадлежности. Условие принадлежности может быть например сформулировано следующим образом: «все четные, целые, положительные» (т, е. {2, 4, 6, ...}) или «все десятичные цифры» (т. е. {0, 1, 2, ...9}). Множество бывает конечным или бесконечным. Само множество может быть элементом других множеств (например, {{0}, {1, 3, 5, 7}, {2, 4, 6, 8}}). Множества характеризуются двумя важными свойствами:
дефиниционное по своей природе (дает определение), называется интенсионалом множества. Например, определение множества {а / а – есть четное целое положительное} задает интенсионал множества.
репрезентативное по своей природе (термин, обозначающий представительность выбранной части данных по отношению ко всей совокупности данных, из которых была сделана выборка) и носит название расширения (или экстенсионала) множества. Например, представление множества {2, 4, 6, 8, ...} задает одно из возможных расширений множества и специфицирует актуальную реализацию множества путем явного указания его элементов.
Однородные множества, элементы которых более или менее однородны, в моделировании данных носят название доменов. Именованные домены, представляющие семантически значимые объекты, называются атрибутами. Атрибут есть интенсионал домена, а значения атрибута - его расширение (экстенсионал). Атрибуты и их значения являются интерпретацией объектов реального мира и их свойств.
Рассмотрим ряд множеств, каждое из которых представляет некоторый тип объекта. Множества могут интерпретироваться посредством доменов и атрибутов. Агрегация множеств позволяет сформулировать более сложные типы. Агрегат, построенный на множествах, естественно интерпретировать как отношение.
Математическое отношение – это множество, выражающее соответствие между двумя или более множествами (является агрегатом двух или более множеств). Пусть дана некоторая совокупность доменов D1, D2, …, Dm,. Отношение, определенное на доменах D1, D2, …, Dm, есть множество упорядоченных кортежей <d1, d2, …, dm>, таких, что d1 ∈ D1, d2 ∈ D2, …, dm ∈ Dm. Таким образом, отношение определяет соответствие между множествами.
Поскольку само отношение – тоже множество, как и любое множество, оно характеризуется интенсионалом и экстенсионалом. Интенсионал отношения определяется интенсионалами образующих его множеств. Экстенсионал отношения – конкретная реализация этого отношения.
Пример. Пусть даны следующие множества:
D1 = {d1i | d1i – строчная буква английского алфавита} – интенсионал множества, его экстенсионал, например, {a, b, c, d, e}
D2 = {d2j | d2j – десятичная цифра} – интенсионал множества, его экстенсионал, например, {1, 3, 5}
Определим на этих доменах отношение R: R = {<d1i, d2j> | d1i ∈ D1, d2j ∈ D2} – интенсионал отношения; задает двух символьные кортежи, в которых первый символ – буква, второй – десятичная цифра. Экстенсионалом данного отношения может быть конкретное множество R1 = {<a,3>, <a,1>, <c,1>}.
Отношение можно охарактеризовать степенью и мощностью.
Степень отношения (или арность кортежа) – характеристика, относящаяся к интенсионалу отношения; количество образующих данное отношение множеств. В примере отношение имеет степень 2.
Мощность отношения – характеристика, относящаяся к экстенсионалу отношения; количество элементов в конкретной реализации отношения. В примере реализация отношения R1 имеет мощность 3.
В моделях данных термин отношение применяется к определению типа. Отношение R рассматривается как тип объекта, который соотносится с множеством знаков-кортежей. Все кортежи определены на одних и тех же доменах и обладают одинаковыми свойствами.
Поскольку модель данных отражает и динамические аспекты, эти отношения изменяются во времени, т.е. реализации отношений в разные моменты времени могут быть разными. В каждый момент времени реализация отношения представляет собой отношение в математическом смысле этого понятия.
Отношениям можно придать различную семантическую окраску. Так как атрибуты представляют семантически значимые объекты и их свойства, в определение отношения можно включить не просто домены, а именованные домены – атрибуты. В этом случае можно получить схему отношения:
Схема отношения – это именованный список пар <имя атрибута>:<имя домена>, имя которого задает имя отношения: R(A1:D1, A2:D2, …, Am:Dm). Отношение, определенное таким образом, определяет тип сущности.
Отношение связи. Агрегат, построенный на других отношениях, рассматривается как связь между этими отношениями. Для таких агрегатов, наряду с интенсионалом и экстенсионалом, рассматривается еще одно важное свойство отношений – отображение между отношениями, на которых построен агрегат.
Рассмотрим бинарное отношение связи R, построенное на двух множествах – отношениях сущностей S1 и S2: R = {<s1i, s2j> | s1i ∈ S1, s2j ∈ S2}. Данное отношение связи определяет два отображения:
прямое – R : S1 S2
обратное – R-1 : S2 S1
Важной характеристикой отображения является кардинальное число. Оно определяется количеством элементов одного множества, связанных с одним элементом другого множества.
Так, для прямого отображения R : S1 S2, кардинальное число определяется количеством элементов множества S2, связанных с одним элементом множества S1; для обратного отображения R-1 : S2 S1 – количеством элементов множества S1, связанных с одним элементом множества S2.
Так как с разными элементами одного множества может быть связано разное количество элементов другого множества, отображения обычно характеризуются минимальным и максимальным кардинальными числами. Поскольку отношение связи определяет два отображения, используется следующая нотация:
R ( S1 (m1, n1) : S2 (m2, n2 ) )
Запись S1 (m1, n1) определяет минимальное (m1) и максимальное (n1) кардинальные числа отображения S2 S1. Соответственно, запись S2 (m2, n2) определяет минимальное (m2) и максимальное (n2) кардинальные числа отображения S1 S2. Смысл такой записи:
каждый элемент из S1 связан минимум с m2, максимум с n2 элементами из S2,
каждый элемент из S2 связан минимум с m1, максимум с n1 элементами из S1.
Если на отображения не наложены никакие ограничения, считается, что минимальное и максимальное кардинальные числа не определены: R ( S1 ( 0, ∞ ) : S2 (0, ∞ ) ), или R ( S1 : S2 ). Это означает, что элемент из S2 может быть связан с любым количеством элементов из S1, и наоборот.
Наложив те или иные ограничения на минимальное и максимальное кардинальные числа, можно получить различные типы отображений. Пусть, например, определены сущности СТУДЕНТ и КУРС (курс по выбору). Каждый студент должен выбрать один из курсов, но не более трех. На каждый курс должны быть зачислены не менее 5 и не более 100 студентов. Тогда получаем следующее отношение связи:
ВЫБИРАЕТ ( СТУДЕНТ (5, 100) : КУРС (1, 3) ).
Рассмотрим
некоторые особые
типы отображений.
Пусть
имеем следующее отношение связи: R ( S1 (
0, ∞ ) : S2 (1, ∞ ) ). Рассмотрим отображение
S1 S2.
Минимальное кардинальное число данного
отображения равно 1. Это означает, что
каждый элемент из S1 связан, по крайней
мере, с одним элементом из S2 (или
отображается, по крайней мере, одним
элементом S2). Такое отображение называется
полностью
определенным
на S1, а соответствующее ограничение
называется ограничением по существованию:
для существования объекта в S1 необходимо,
чтобы он был связан с объектом из S2
(рисунок 1 слева).
Пусть
имеем следующее отношение связи: R ( S1 (
0, ∞ ) : S2 ( 0, 1 ) ). Рассмотрим отображение
S1
S2. Максимальное кардинальное число
данного отображения равно 1. Это означает,
что каждый элемент из S1 связан не более
чем с одним элементом из S2 (или отображается
не более чем одним элементом S2). Такое
отображение называется неполным
функциональным отображением,
так как минимальное кардинальное число
отображения равно 0, т.е. не все элементы
из S1 отображаются в S2 (рисунок 2 слева).
Пусть имеем следующее отношение связи: R ( S1 ( 0, ∞ ) : S2 ( 1, 1 ) ). Рассмотрим отображение S1 S2. И минимальное, и максимальное кардинальные числа данного отображения равны 1. Это означает, что каждый элемент из S1 связан в точности с одним элементом из S2 (или отображается точно одним элементом S2). Такое отображение называется полным функциональным отображением (рисунок 3 слева).
Связи, для которых хотя бы одно отображение является функциональным (полным или неполным), часто называют связями типа 1 : n, или «один ко многим». Связи, в которых оба отображения являются нефункциональными, называют связями типа n : n, или «многие ко многим».