- •1. Понятие базы данных и банка данных.
- •1.1 Основные определения.
- •1.2 Составляющие банка данных.
- •1.3 Цели использования банков данных.
- •1.4 Трехуровневая архитектура базы данных.
- •1.5 Основные функции субд.
- •1.5.1 Управление данными во внешней памяти.
- •1.5.2 Управление оперативной памятью.
- •1.5.3 Управление транзакциями
- •1.5.4 Журнализация
- •1.5.5. Поддержка языков бд
- •2. Модели данных.
- •2.1 Ранние модели данных.
- •2.1.1 Иерархическая модель данных.
- •2.1.2 Сетевая модель данных.
- •2.2 Реляционная модель данных.
- •2.4 Объектная модель данных.
- •2.5 Нереляционные субд.
- •3. Реляционная модель данных.
- •3.1 Структура и основные понятия реляционной модели данных.
- •3.2 Правила Кодда для реляционных субд.
- •3.3 Реляционная алгебра и реляционное исчисление.
- •3.3.1 Реляционная алгебра.
- •3.3.2 Реляционное исчисление.
- •4. Проектирование баз данных.
- •4.1 Проектирование при помощи нормализации.
- •4.1.1 Первая нормальная форма.
- •4.1.2 Вторая нормальная форма.
- •4.1.3 Третья нормальная форма и нормальная форма Бойса-Кодда.
- •4.1.4 Четвертая нормальная форма.
- •4.1.5 Пятая нормальная форма.
- •4.2 Модель «сущность-связь».
- •4.2.1 Появление и развитие метода. Современное состояние.
- •4.2.2 Метод Баркера.
- •4.2.3 Метод idef1x.
- •4.2.4 Получение схемы базы данных из модели «сущность-связь».
- •4.3 Денормализация базы данных.
- •5. Язык sql.
- •5.1 Появление и развитие языка.
- •5.2 Современная структура языка.
- •5.3 Язык определения данных.
- •5.4 Язык манипулирования данными.
- •5.4.1 Запросы insert, update, delete.
- •5.4.2 Запрос select.
- •6. Управление транзакциями.
- •6.1 Понятие транзакции. Основные свойства транзакций.
- •7.2 Восстановление.
- •6.3 Параллельность.
- •6.3.1 Проблемы параллельных транзакций и уровни изолированности.
- •6.3.2 Блокировки данных.
- •6.4 Поддержка транзакции в языке sql и библиотеках ado.Net.
- •Рекомендуемая литература
2.1.2 Сетевая модель данных.
СУБД, реализующие сетевую модель данных, появились почти одновременно с иерархическими СУБД. Обычно их оформление в виде отдельной ветви СУБД связывают с работой Data Base Task Group (DBTG), частью организации CODASYL (COnference on DAta SYstems Languages), отчет которой был опубликован в 1971 году. Вскоре после его опубликования и появилось несколько СУБД, реализующих архитектуру CODASYL, в том числе, существующая до настоящего времени СУБД IDMS (принадлежит компании Computer Associates и продается под наименованием CA IDMS/DB).
Сетевую модель данных можно считать расширением иерархической модели. Если в последней у записи-потомка может иметься только один предок, то в сетевой – произвольное количество. Сама СУБД представляет собой наборы экземпляров каждого типа записи из числа заданных в БД наборов типов записей, и наборы экземпляров каждого из наборов типов связи (для простоты будем называть их записи и связи).
То есть, сетевая СУБД допускает наличие между двумя наборами экземпляров записи любого количества связей. При этом две записи могут меняться ролями родителя и потомка, как это видно на рисунке …
Рисунок 2.2 Пример сущностей и связей в сетевой модели данных.
Очевидно, что при помощи таких связей можно смоделировать гораздо большее разнообразие ситуаций и отношений между сущностями в предметной области. Хотя, структура базы данных усложняется, это с лихвой окупается за счет исключения необходимости дублирования данных, которое происходило бы при моделировании сложных связей в иерархической БД.
Кроме того, в некоторых сетевых СУБД записи могут иметь сложную структуру и включать в себя векторы (то есть, наборы полей, включаемые как в состав записи, например, поле «Адрес», включающее элементы «Индекс», «Город», «Улица», «Дом», «Квартира») и даже повторяющиеся группы (то есть, поля, для которых может иметься несколько значений). например, в записи «Сотрудник» может иметься поле «Владение иностранным языком», которое должно хранить несколько значений, если сотрудник владеет более чем одним иностранным языком. Кроме того, повторяющаяся группа может состоять из векторов (скажем, у организации может быть несколько адресов – юридический, почтовый и т. п.).
Как и иерархические, сетевые СУБД предполагают манипуляцию данными на уровне отдельных записей. Типичные операции в сетевой СУБД выглядят следующим образом:
найти конкретную запись в наборе однотипных записей (например, студента с именем Иванов);
перейти от предка к первому потомку по некоторой связи (например, к первому студенту группы ПИ-31);
перейти к следующему потомку в некоторой связи (например, от Иванова к Сидорову);
перейти от потомка к предку по некоторой связи (например, найти группу, в которой учится Сидоров);
создать новую запись;
уничтожить запись;
модифицировать запись;
включить в связь;
исключить из связи;
переставить в другую связь и т.д.
Из рассказанного видно, что сетевые СУБД предоставляют больше возможностей, нежели иерархические, но одновременно, ввиду более сложной структуры, требуют больших вычислительных ресурсов и более сложных алгоритмов для работы с данными.
