Модели данных. Модели баз данных базируются на современном подходе к обработке информации, состоящем в том, что структуры данных обладают относительной устойчивостью.
Структура базы данных должна отображать информационную модель предметной области, позволять формировать элементы данных (записи) и взаимосвязи между ними. При этом взаимосвязи обычно типизированы следующим образом: “один к одному” — одна запись может быть связана только с одной другой записью; “один ко многим” — одна запись может быть связана со многими другими; “многие ко многим” — одна и та же запись может входить в отношения со многими другими записями.
Использование того или иного типа взаимосвязи определило четыре основные модели баз данных: иерархическую, сетевую, реляционную и объектно-ориентированную.
Иерархическая модель данных представляет данные в виде древовидной структуры и является реализацией логических отношений “один ко многим”.
Сетевая модель данных позволяет отображать отношения “один ко многим” и “многие ко многим”. В ее основу положены сетевые структуры. Любой элемент сетевой структуры может быть связан с любым другим элементом.
В реляционных базах данных отношения представляются в виде двумерной таблицы. Каждое отношение представляет собой подмножество декартовых произведений доменов. Доменом здесь называется множество значений, расположенных в столбце соответствующего атрибута двумерной таблицы.
Объектно-ориентированные модели данных объединяют в себе две модели данных — реляционную и сетевую и используются для создания БД со сложными структурами данных.
Основные устройства внешней памяти компьютера — магнитные диски и магнитные ленты. В отличие от оперативной памяти здесь время доступа к данным зависит от места расположения данных на диске или ленте (требуется время на подвод нужного участка к механизму чтения-записи).
Данные во внешней памяти хранятся в виде файлов.
Файл — множество логически связанных записей. В простейшем случае файл — последовательный массив записей.
С диска читается (записывается) не один символ (байт), а сектор или блок данных размером обычно 512 байт. Время доступа к гибкому диску (FDD) — 200-500 мс, к жесткому (HDD) — до 10-12 мс. Размер сектора оговорен конструкцией диска и не зависит от проектировщика системы. Обмен дисковой памяти с оперативной происходит только целыми секторами. Поэтому оптимальные длины записей, при которых достигается минимальное время обмена, должны быть кратными длине сектора. Правда, выигрыш по сравнению с записями, пересекающими границу сектора, составляет всего 2-5%.
Операционная система отводит часть оперативной памяти под буферы ввода-вывода. Каждый буфер имеет размер сектора, а их количество задается пользователем. При попытке чтения какого-либо сектора из внешней памяти операционная система ищет его сначала среди буферов, и только в случае его отсутствия происходит реальное чтение из внешней памяти. Считанный сектор занимает свободный буфер или вытесняет из одного из буферов давно не используемую информацию.
Во внешней памяти несколько смежных секторов (обычно 2 или 4, а вообще — до 16) образуют кластер. При создании файла ему отводится один кластер. Если информация выходит за пределы кластера, файлу отводится новый кластер из числа свободных на диске. Он может быть несмежным с первым и связывается с ним в цепочку. Длина цепочки ограничивается только наличием свободных кластеров.
На диске выделяется место под таблицу размещения файлов (FAT — File Allocation Table), остальное пространство диска используется для размещения файлов. В таблице хранятся описания файлов и соответствующие им списки (цепочки) кластеров.
Доступ к файлу начинается с обращения к FAT и поиска имени файла, при успешном поиске становятся доступны кластеры файла в области размещения файлов. При записи на диск нового файла в FAT предоставляется очередная свободная строка, а в области размещения файлов — очередные свободные кластеры.
При удалении файла первый символ имени файла в FAT заменяется служебным символом (обычно знаком вопроса). В результате имя файла и занимаемые им кластеры становятся недоступными.