Внутренняя модель данных
Хранение базы данных
Таблица как список записей
Записи фиксированной длины
Записи переменной длины
Записи неопределенной длины
Хранение списковых структур в оперативной памяти
Последовательное распределение памяти
Последовательный список для регулярного двоичного дерева
Связанное распределение памяти
Использование связаных списков
Виды списков
Список с пропусками
Кольцевые списки (кольца)
Двунаправленный циклический список
Коралловое кольцо
Кольца с пропусками
Многосвязанные списки
Типы указателей
Виды указателей
Методы представления древовидных структур
Метод указателей на порожденные записи
Метод указателей на исходные записи
Метод указателей на порожденные и исходные записи
Метод указателей на порожденные и подобные записи
Метод справочника
Методы организации сетевых структур
Пример сетевой структуры
Реализация сетевой структуры
6.84M

Внутренняя модель данных

1. Внутренняя модель данных

Базы данных
Виноградова М.В.
МГТУ им. Н.Э. Баумана, ИУ5

2. Хранение базы данных

• Логическая структура
данных:
– Таблица (двумерный или
многомерный массив
данных)
– Древовидные
иерархические структуры
– Сетевые структуры
• Структура в
оперативной памяти:
– Адресация по месту
(логический или
физический указатель)
– Адресация по
содержимому (по ключу)
Адресная функция:
- отображает логическую структуру данных на физическую
структуру хранения

3. Таблица как список записей

• Списковая структура:
X = ( X[1], X[2], X[3], … , X[n] )
• X [ i ] – i-ый элемент линейного списка
(запись/кортеж таблицы)
• Типы записей:
– Фиксированной длины
– Переменной длины
– Неопределенной длины

4. Записи фиксированной длины

• S (структура) записи = const
• M (размер) записи = const
• Mi поля = const
(+) хорошая скорость обработки
(-) большой расход памяти
a1 |
a2 | ...... |
Запись 1
an
| b1 | ...... |
Запись 2
bn
| ......

5. Записи переменной длины


S (структура) записи = const
M (размер) записи = var
Mi поля = var
Разделитель полей (рп)
Разделитель записей (рз)
a1
| рп |
a2
| рп | ...... |
Запись 1
an
| рп | рз | ........
Запись 2

6. Записи неопределенной длины


S (структура) записи = var
M (размер) записи = var
Mi поля = var
Разделитель полей (рп)
Разделитель записей (рз)
Ai (имя) | ai (значение)
A7 | рп | a7 | рп | А4 | рп | a4 | рп | рз | ……
Запись 2
Запись 1
A1
A2
A3
A4
A5
A6
A7
NULL | NULL | NULL | a4 | NULL | NULL | a7

7. Хранение списковых структур в оперативной памяти

Оперативная память как последовательность байт:
a | v | f | g | k | l | h | k | c | d | h | m | r | s | ………..
• Реализация адресной функции:
– Последовательное распределение памяти
– Связанное распределение памяти

8. Последовательное распределение памяти

• Последовательный список:
– Уi – элемент списка
– N – количество элементов
массива
– m – размер элемента списка
– B – адрес начала списка (база)
Адресная функция:
a(i) = B + (i-1)*m
Позволяет хранить
древовидные структуры

9. Последовательный список для регулярного двоичного дерева

Адресная функция
a(k) = B+(k-1)*m

10. Связанное распределение памяти

• Связанный список
• Цепная структура/Цепь
X [3] | *
Особенности:
– Элементы хранят в любом
месте ОП
– Последовательность
элементов задают указатели
– В инвентарных таблицах БД
хранят указатель на начало
списка (голову)
– Л – конец списка (спец.
символ)
X [2] | *
Вход
X [1] | *
X [4] | *
X [5] | л

11. Использование связаных списков

(+) гибкость, изменение структуры без переноса данных
(-) больший объем хранения
X [3] | *
X [3] | *
X [2] | *
Вход
X [1] | *
Вход
X [1] | *
X [4] | *
X [4] | *
X [5] | л
X [5] | л

12. Виды списков

• Список (цепь/цепная структура) с одним указателем
Вход
x1 | *
x2 | *
x3 | *
x4 | *
x5 | л
• Цепь с двумя указателями (Список с обратным проходом)
– Хранят указатель на голову и на хвост
– Обход в прямом направлении и обход в обратном направлении
Вход
Вход
x1 |л|*
x2 |*|*
x3 |*|*
x4 |*|*
x5 |*|л

13. Список с пропусками

• Цепь с пропусками (Мультицепь)
– Указатель на группу в прямом или обратном направлении
– Оптимальный размер группы r(n) при количестве элементов
n
r(n) n
Вход
a1 |*|*
a2 |*|-
b1 |*|*
b2 |*|-
b3 |*|-
c1 |л|л

14. Кольцевые списки (кольца)

Однонаправленный циклический список
(+) Каждый элемент достижим из каждого

15. Двунаправленный циклический список

16. Коралловое кольцо

• Каждый
элемент имеет
указатель на
голову списка

17. Кольца с пропусками

Вход
a1 |*|*
c1 |*|*
b3 |*|a2 |*|-
b1 |*|*
b2 |*|-

18. Многосвязанные списки

• Виды линейных списков
– Однонаправленные
– Двунаправленные
– циклические
Используются для
организации
древовидных и
сетевых структур

19. Типы указателей

• Абсолютный
– физический адрес памяти
(+) скорость
(-) жесткая привязка
• Относительный
– базовый адрес
– расстояние между элементами списка
• Символический
– адрес вычисляется по значению ключа
– если совпадает, то цепочка
(+) независимость изменения элемента
(-) низкая скорость

20. Виды указателей


По организации структуры данных:
– Встроенные (часть записи)
– Справочник (хранятся отдельно)
Назначение:
– Направление доступа
– Цепочки связных данных
– Семантические связи данных

21. Методы представления древовидных структур

• Допустим, что данные узла – это записи фиксированной
длины
1-й уровень
2-й уровень
3-й уровень
4-й уровень

22. Метод указателей на порожденные записи

(+) обход БД в
прямом
направлении
(-) Переменное
количество
указателей

23. Метод указателей на исходные записи

(+) минимум указателей
(-) много точек входа

24. Метод указателей на порожденные и исходные записи

• Сочетает указатели на исходные и указатели на порожденные
• На первом месте ставят указатель на исходную запись
• Храниться только указатель на корень дерева
(+) большая надежность
(+) прямой и обратный обход
Указатель на исходную запись
Xi | * | * | * | *
Указатели на порожденные записи

25. Метод указателей на порожденные и подобные записи

• с кольцевыми
структурами
(+) В прямом и
обратном
направлении
(+) Постоянное
количество
указателей (2)

26. Метод справочника

• Файл данных
(записей)
• Файл
справочника
• Файл
индекса

27. Методы организации сетевых структур

• Метод указателей на порожденные и
исходные записи
– используют разделитель между
указателями на порожденные и исходные
записи или счетчик
• Метод типа справочник

28. Пример сетевой структуры

29. Реализация сетевой структуры

English     Русский Rules