Delphi имеет мощную встроенную поддержку для работы с локальными и распределенными базами данных(БД) самых различных форматов.
Реляционная БД(Рис. 23.1) представляет собой прямоугольную таблицу. Столбцы таблицы называются полями, а строки – записями. Каждое поле имеет уникальное имя и тип данных, который можно хранить в этом поле. Число полей в БД фиксировано, а записи можно добавлять и удалять.
Рис. 27.1 Типичная реляционная БД.
Существует несколько форматов файлов баз данных. Наиболее часто применяются базы форматов Paradox (расширение .db) и InterBase (расширение .gdb). Программа, написанная на Delphi, может взаимодействовать как с этими, так и со многими другими видами БД (dBase, FoxPro, Access) на основе единого подхода. С точки зрения написания программы нет никакой разницы, работаете вы с базами Paradox, dBase или Access. Это достигается тем, что операции с БД могут выполняться при помощи специального языка SQL(Structural Query Language). Кроме того, SQLобеспечивает многопользовательский доступ к БД, что автоматически делает программу сетевой.
Три основные функции системы управления базами данных(СУБД):
1. Ввод данных. Любая СУБД должна поддерживать структуры, в которых могут накапливаться данные. Кроме того, должны поддерживаться процедуры оперативного просмотра этих данных и внесения в них изменений с целью обеспечения актуальности данных.
2. Поддержание запросов по данным (или выполнение их). СУБД должна предоставлять пользователю возможность оперативно отыскивать и просматривать отдельные части накопленной информации.
3. Составление отчетов. СУБД должна предоставлять возможность периодически обобщать информацию, хранимую в базах данных и получать документы определенной формы.
В настоящее время известны три вида моделей данных, предназначенных для создания автоматизированных банков данных: сетевая, иерархическая и реляционная. В сетевых и иерархических моделях данных ассоциации между данными поддерживаются групповыми отношениями. Групповое отношение - иерархическое отношение между записямидвух типов. Записи одного типа являются владельцами отношения, а записи другого - членами отношения, или подчиненными. Наиболее распространенный способ реализации групповых отношений - построение цепных списков. Для этого запись-владелец в служебной части содержит адресную ссылку (ключ базы данных) на первую подчиненную запись, а каждая подчиненная запись содержит аналогичную ссылку на следующую. Последняя подчиненная запись либо содержит ссылку на владельца (замкнутый цепной список), либо находится в поле ссылки - признак конца цепи (разомкнутый список). При этом способе реализации групповых отношений имеет место полная независимость логической и физической последовательностей данных.
Отношения в реляционной модели данных не содержат кортежей-дубликатов. Это свойство обеспечивается наличием так называемого первичного ключа - набора атрибутов, значения которых однозначно определяют кортеж отношения.
Проектирование БД ставит перед собой следующие цели:
1. Возможность хранения в БД всех необходимых данных.
2. Исключение избыточности данных.
3. Сведение числа хранимых в БД таблиц к минимуму.
4. Нормализация отношений для легкого обновления и удаления записей.
Для выполнения условия хранения всех данных, первым шагом проектирования структуры БД является определение всех атрибутов объектов реального мира, информация о которых должна храниться в БД. Набор этих атрибутов для одного и того же объекта может оказаться различным в зависимости от предназначения БД. Например, рассмотрим объект "машиностроительная деталь". Если нужно спроектировать базу данных для хранения конструкторской спецификации, в ней достаточно иметь атрибуты "обозначение", "наименование", "куда входит", "имя файла с чертежом". Если же проектируем БД тех же деталей, но уже для решения задачи расчета норм расхода материалов на изготовление деталей, то понадобятся атрибуты "длина", "ширина", "высота", "материал", "вид заготовки" и т.д.