Сетевая модель данных CODASYL
Реализованная в NetBase сетевая модель данных основывается на отчетах DBTG CODASYL, выпущенных в 1969-1971 гг, где были предложены основные концепции сетевой модели данных. Основные “строительные блоки” структуры сетевой базы данных CODASYL - тип записи и тип набора.
Тип записи представляет собой совокупность одного или нескольких полей данных различных типов, поддерживаемых в NetBase. Помещенная в файл данных запись может существовать в нем не только самостоятельно, но и являться одновременно членом или владельцем каких-либо наборов в зависимости от того, содержит ли она поля ссылочного типа (чтобы быть владельцем набора) или принадлежит подчиненному файлу базы данных (чтобы быть членом набора). Для наборов допускается переменное число записей-членов набора (но не меньше одной) и они могут быть вложенными.
Тип набора CODASYL представляет собой совокупность произвольного количества записей. Наборы CODASYL служат для представления отношений вида 1:N между записями-владельцами и записями-членами наборов. Записи-владельцы и записи-члены одних наборов могут быть одновременно владельцами и/или членами наборов. Таким образом, из записей и наборов базы данных может быть сконструирована база данных произвольно сложной структуры.
Различают записи-члены наборов - обязательные и необязательные, автоматические и ручные. Первая пара характеристик определяет поведение СУБД при удалении записи-владельца набора. Вторая пара характеризует способы включения записей в набор. Обязательные записи-члены наборов удаляются из базы данных при удалении записи-владельца данного набора, а необязательные остаются в базе данных. При помещении в базу данных записи-автоматические члены наборов автоматически включаются в некоторые наборы, а записи-ручные члены включаются в нужные наборы только по командам из прикладной программы.
Отличие сетевой модели NetBase от CODASYL
Отличие реализованного в NetBase типа набора отличается от описанного в CODASYL тем, что:
· Наборы называются списками записей;
· Наборы и члены наборов при создании не описываются каким-либо типом. Тип набора определяется типом ссылочного поля записи-владельца;
1. Для поля типа “Жесткая” ссылка ...все записи-члены набора будут обязательными и автоматическими.
2. Для поля типа “Мягкая” ссылка ...все записи-члены набора будут необязательными и ручными, причем наборы должны быть уже созданы посредством “Жестких” ссылок ....
· Наборы не могут состоять одновременно из обязательных и необязательных записей-членов набора, однако могут ссылаться на другие наборы посредством ссылочных полей.
· Введено понятие единичный набор, т.е. набор, состоящий только из одной записи-члена набора.
· Обязательные записи-члены наборов могут быть ручными записями-членами единичных наборов.
· Иерархическая и сетевая модели данных реализованы в NetBase на основе файлов данных реляционной структуры, связанных между собой. Связи между файлами хранятся в специально организованных файлах, называемых BackTracking Tags (BTT).
Создание файлов данных.
Кнопка Создатьслужит для создание нового файла данных в текущем подразделе (главные или справочники) и при нажатии вызывает окно создания файла данных (Рис 3.2).
Рис. 3.2.
Ввод имени поля.
В колонке "Имя поля" введите имя для каждого поля. Имена полей должны удовлетворять следующим условиям:
· могут быть длиной до 25 символов;
· не должны начинаться с пробела, хотя могут содержать пробелы;
· могут содержать любые символы, кроме кавычек "", квадратных [], фигурных {} и круглых () скобок, отдельного символа номера #, а также комбинации ->;
· не должны совпадать с именами других полей в этом же файле данных;
· должны кратко описывать содержимое полей.
Задание типа поля.
В колонке с названием "Тип" задайте основной тип поля, который определяет, данные какого типа может содержать данное поле. Для этого сделайте двойной щелчок левой кнопкой мыши в соответствующей ячейке справа от имени поля. Всего существует 4 основных типа поля: Текстовое, Числовое, Дата, Ссылочное, которые будут выведены в виде списка под ячейкой. После выбора типа поля панель уточнения типа примет вид:
для текстового поля. Размер текстового поля по умолчанию задается 50 символов, но может быть от 1 до 254.
для числового типа. Размер числового поля выбирается по типу хранимых в нем чисел. Это могут быть:
Байт Поля типа Байт могут содержать целочисленные значения от 0 до 255. Поля такого типа рекомендуется использовать только опытным пользователям или программистам. Его также можно использовать для хранения логических значение типа ДА/НЕТ (т.е. 0 или 1) или для хранения различных флажков и признаков. Преимуществом целочисленных полей является то, что они занимают меньше места на диске по сравнению с полями вещественных типов. Иногда это важно при разработке больших баз данных, когда необходимо экономно использовать дисковое пространство.
Целое без знака Поля этого типа могут содержать целые числа без знака в диапазоне от 0 до 65534. Рекомендации по использованию см. в описании полей типа Байт выше.
Целое со знаком Поля этого типа могут содержать целые числа в диапазоне от -32767 до 32767. Рекомендации по использованию см. в описании полей типа Байт выше.
Длинное целое Поля этого типа могут содержать целые числа в диапазоне от -2147483647 до 2147483647. Рекомендации по использованию см. в описании полей типа Байт выше.
Вещественное одинарной точности Поля этого типа содержат числа с плавающей точкой длиной до 8 значащих цифр (включаю дробную часть) в интервале от 1.5e-45 до 3.4e38 . Числа, имеющие более 8 значащих цифр, округляются и хранятся в формате с плавающей точкой. Вы можете вводить и отображать числа в NetBase разными способами, однако, это не влияет на то, как NetBase хранит эти числа. Например, предположим, что поле содержит значение 17.87543. Если вы выберите Редактор|Поле Формат... для того, чтобы отображать это число с тремя знаками в дробной части, то NetBase все равно будет хранить это число целиком, так что потом вы сможете отобразить это же число с другим количеством знаков в дробной части.
Вещественное Как и вещественное одинарной точности, данный тип поля позволяет хранить числа с плавающей запятой, но в диапазоне от 2.9e-39 до 1.7e38 с 11-12 значащими цифрами.
Вещественное двойной точности Поля данного типа позволяют хранить числа с плавающей запятой в диапазоне от 5e-324 до 1.7e308 с 15-16 значащими цифрами.
Поля даты могут содержать любые правильные даты от 1.1.0000 до 31.12.9999. NetBase знает о високосных годах и проверяет все даты на правильность. Вы получите сообщение об ошибке, если попытаетесь ввести неправильную дату, например 29.02.1991. Для полей типа Дата указывается только формат представления.
Для ссылочных полей уточняется тип ссылки и справочный файл данных. Справочник можно выбрать как из уже существующих, так и создать новый. Типы ссылочных полей могут быть:
“Жесткая” ссылка на список записей. Этот тип поля реализует отношение ОДИН-КО-МНОГИМ: запись-владелец через поле этого типа связана со списком записей подчиненного файла базы данных, имя которого задается в описании поля при создании файла. При этом пользователю предоставляются права создания, редактирования и уничтожения подчиненного списка записей. В поле хранится идентификационный номер указателя на список записей в подчиненном файле базы данных. Команда очистки поля приводит к уничтожению подчиненного списка. Произвольное изменение указателя невозможно, т.к. это приведет к нарушению целостности данных в подчиненном файле базы данных.
“Мягкая” ссылка на список записей. Этот тип поля реализует отношение ОДИН-КО-МНОГИМ: запись-владелец через поле этого типа связана со списком записей подчиненного файла базы данных. При этом пользователю имеет только право просмотра (чтения) уже созданного списка записей в подчиненном файле базы данных, имя которого было указано с описании поля при создании файла. Основным владельцем списка может быть только поле "Жесткая ссылка ...". Команда очистки поля уничтожает только указатель на список, а сам список продолжает существовать. Значение указателя можно легко изменять при необходимости.
“Жесткая” ссылка на запись. Этот тип поля реализует отношение ОДИН-К-ОДНОМУ для записи-владельца и одной записи из подчиненного файла базы данных. В остальном рекомендации по использованию такие же как и для поля “Жесткая” ссылка на список записей
“Мягкая” ссылка на запись. Этот тип поля реализует отношение ОДИН-К-ОДНОМУ для записи-владельца и одной записи из уже существующего списка записей из подчиненного файла базы данных. В остальном рекомендации по использованию такие же как и для поля “Мягкая” ссылка на список записей.
“Жесткая” ссылка на список записей в выбираемом файле. Этот тип поля по своему назначению и использованию аналогичен типу “Жесткая” ссылка на список записей, только имя подчиненного файла указывается не на этапе создания структуры, а во время заполнения файла реальными данными.
“Мягкая” ссылка на список записей в выбираемом файле. Этот тип поля по своему назначению и использованию аналогичен типу “Мягкая” ссылка на список записей, только имя подчиненного файла указывается не на этапе создания структуры, а во время заполнения файла реальными данными.
“Жесткая” ссылка на запись в выбираемом файле. Этот тип поля по своему назначению и использованию аналогичен типу “Жесткая” ссылка на запись, только имя подчиненного файла указывается не на этапе создания структуры, а во время заполнения файла реальными данными.
“Мягкая” ссылка на запись в выбираемом файле. Этот тип поля по своему назначению и использованию аналогичен типу “Мягкая” ссылка на запись, только имя подчиненного файла указывается на этапе создания структуры, а во время заполнения файла реальными данными.