
- •Общая часть
- •Актуальность проекта
- •Описание языка программирования
- •1.2.1.Общие сведения
- •Разработка приложений баз данных
- •Архитектура базы данных
- •Создание бд
- •Компоненты доступа к данным
- •1.3.4 Отображение данных
- •1.3.5 Навигационный способ доступа к данным
- •1.3.6 Выбор информации из базы данных
- •1.3.7 Работа со связанными таблицами
- •1.3.8. Основные команды языка sql
Разработка приложений баз данных
Использование и разработка баз данных (БД) является одним из основных направлений программирования. Спектр применения БД чрезвычайно широк: практически, каждое предприятие имеет собственные базы данных, в которых, как минимум, производится бухгалтерский и складской учет, а в более крупных компаниях при помощи БД обслуживается весь цикл функционирования бизнеса. Создание БД и приложений для работы с ними - одно из основных предназначений среды Delphi. Прежде всего, база данных обеспечивает хранение информации и предоставляет средства для доступа к ней. Для создания, ведения и использования БД используют системы управления базами данных - СУБД.
СУБД бывают персональными и многопользовательскими. Наиболее известными локальными СУБД являются Access, FoxPro, Paradox и DBASE, а многопользовательскими - DB/2, Oracle, MS SQL Server и Interbase. Что касается Delphi, то, хотя ее и нельзя назвать СУБД как таковой, однако ее возможности по работе с БД настолько широки, что зачастую она превосходит по ним специализированные СУБД.
При этом базы данных, как и системы, их обслуживающие, подразделяются на 2 категории: локальные и клиент-серверные. Соответственно, и приложения, используемые для работы с теми или иными БД, будут либо локальными, либо клиентсерверными. Основное отличие клиентсерверных приложений состоит в том, что они могут работать с удаленными БД, в то время как локальные - только с теми, что находятся на этом же ПК (максимум - в пределах доступного сетевого диска). При этом локальные приложения так же называются одноуровневыми приложениями, а клиентсерверные бывают двух- или многоуровневыми, при этом, в любом случае, в них различают клиентскую и серверную части.
Фактически, классификация СУБД на персональные и многопользовательские совпадает с разделением БД на локальные и клиент-серверные. Т.е. персональные СУБД, как правило, работают с локальными БД, а многопользовательские - с клиент-серверными. И действительно, например Access является типичной персональной СУБД, работающей с локальной базой. При этом потенциальная возможность обслуживания запросов от нескольких клиентов (для случая размещения БД на файл сервере) не делает подобную СУБД истинно многопользовательской.
Но существует еще одни критерий классификации БД - по организации хранения данных, по которому они подразделяются на 3 принципиально разных типа. Это реляционные БД, иерархические БД и сетевые БД. Практически все современные БД относятся к реляционным, концепция которых была разработана на рубеже 60х-70х годов компанией IBM.Все уже названные СУБД предназначены для работы именно с реляционными базами данных. Особенности реляционных БД сводятся к следующим ключевым моментам:
Все данные хранятся в таблицах, состоящих из столбцов и рядов;
Связи между данными в различных таблицах организованы не явно, а по совпадению каких-либо ключевых значений (или по отношениям - relation);
Каждый столбец имеет собственное имя и содержит данные только одного, явно заданного типа.
Порядок столбцов и типы значений определяются в момент создания таблицы. При этом любая таблица должна иметь хотя бы 1 столбец;
Ряды значений никак не упорядочены, но их можно упорядочить при обработке запроса;
Запросы к реляционным БД возвращают результат в виде таблицы, которая, в свою очередь, так же может быть использована для запроса.
В целом к достоинствам реляционной модели данных относят простоту и удобство их реализации, а так же гибкость структуры. Из недостатков можно выделить, пожалуй, только возможность потери целостности данных, что вызвано отсутствием жестких связей между данными таблиц. В этой книге мы будем рассматривать только реляционные базы данных.
Ознакомившись с основными терминами и понятиями БД, можно перейти к рассмотрению средств, имеющихся в распоряжении разработчика, создающего приложения БД при помощи Delphi. Средства Delphi, предназначенные для работы с БД, можно разделить на 2 категории: инструментарий и компоненты. Инструментарий включает в себя рад дополнительных программ, входящих в поставку Delphi и предназначенных для работы с БД. Что касается компонентов, то в VCL имеется множество специализированных компонент, предназначенных для работы с БД.Хотя Delphi и не является СУБД в классическом понимании этого термина, в частности, у нее нет собственного формата баз данных, она поддерживает как собственные сразу несколько форматов, в частности, dBase и Paradox.
Таблицы dBase являются одним из первых форматов БД, появившихся на ПК, благодаря чему с ними могут взаимодействовать многие СУБД - если и не на прямую, то по крайней мере, имея возможность импортировать и экспортировать данные в этом формате. Более того, с некоторыми оговорками, их можно просматривать и редактировать даже в электронных таблицах, например, в Excel.
Формат dBase является достаточно простым и может использовать для хранения каждой таблицы до 3 файлов:
-dbf - основная таблица с данными;
-dbt - BLOB-данные (этот файл появляется, если в таблице предусмотрены соответствующие поля);
-mdx - файл с индексами.
Помимо поддержки БД в самой среде Delphi, в состав поставки Delphi входит ряд дополнительных инструментов, служащих для обеспечения работы с БД. Прежде всего, это BDE - Borland Database Engine, представляющий собой набор системных библиотек и драйверов, предназначенных для взаимодействия БД и приложений, разрабатываемых в Delphi.
Кроме того, имеется рад дополнительных приложений, вызвать которые можно самостоятельно (из программной группы Delphi), или из IDE:
BDE Administrator - утилита для настройки различных параметров BDE, настройки драйверов баз данных, создания и удаления псевдонимов БД. Эта программа так же встраивается в системную панель управления;
Database Desktop - программа для создания, просмотра и редактирования отдельных таблиц и запросов;
Data Pump - программа для переноса данных между БД;
Database Explorer - программа-проводник для иерархического просмотра и редактирования БД. В версиях Enterprise и Architect устанавливается более гибкая и функциональная версия - SQL Explorer;
SQL Monitor - программа для отслежива
ния прохождения запросов к удаленным серверам БД (только Enterprise и Architect);
SQL Builder - приложение для конструирования SQL-запросов (вызывается при обращении к соответствующим компонентам в Delphi IDE, только Enterprise и Architect);
InterBase Server - СУБД InterBase, включая клиентскую и серверную части (только Enterprise и Architect);
dbExpress - набор драйверов для доступа к SQL-СУБД, включая InterBase, DB2, Oracle, MSSQL и MySQL. В VCL для этих целей используется одноименный набор компонентов.
В ранних версиях Delphi вместо dbExpress использовались SQL Links, но, начиная с Delphi 7, эта система считается устаревшей. Как и другие SQL-ориентированные компоненты, dbExpress и SQL Links имеются только в версиях Enterprise и Architect. Для работы с таблицами при создании приложения БД можно использовать приложение Database Desktop, входящее в поставку Delphi. С помощью Database Desktop можно создавать и реструктуризировать таблицы, вносить в них новые записи, а так же создавать запросы.
При рассмотрении ключей и индексов мы много раз упоминали про организацию связи между различными таблицами в рамках БД. И хотя теоретически БД может состоять из одной единственной таблицы, содержащей лишь имена и даты рождения сотрудников, на практике СУБД для подобных целей не применяются: такую информацию можно хранить в виде электронной таблицы, а то и вообще в обычном текстовом файле. Поэтому рассмотрим более типичную ситуацию, когда БД состоит из нескольких взаимосвязанных таблиц.
Организация отношений между таблицами называется связыванием, или соединением таблиц и является одним из ключевых моментов разработки БД. Связи задаются как при создании таблиц (назначение ключей и индексов), так и в процессе разработки и даже работы приложения, для чего используются различные средства, предоставляемые СУБД.
Для связывания таблиц используют поля, называемые полями связи. Такие поля должны быть индексированными. При связывании таблиц одна из них назначается главной (Master), а другая - подчиненной (Slave, Detail). При этом индекс, отвечающий за соединение в подчиненной таблице, называют внешним ключом. Что касается главной таблицы, то ее поле, участвующее в связывании, должно быть главным индексом (разумеется, если в применяемой СУБД есть такое понятие). Типы полей, участвующих в связывании, должны совпадать, например, оба они должны быть целочисленными.
Рассказывая о реляционных базах данных, невозможно не упомянуть о таком инструменте, как SQL - Structured Query Language (язык структурных запросов). Язык SQL предназначен для создания запросов к базам данных и существенно отличается от других языков программирования, в том числе от Delphi.
Прежде всего, SQL не является процедурным языком (хотя в промышленных СУБД и реализована возможность создания процедур на SQL). Каждый запрос определяет, что нужно сделать с данными и выполняется сам по себе, а не является последовательностью инструкций. Например, простейший запрос, который выведет все содержимое таблицы BILL, будет выглядеть следующим образом:
SELECT * FROM BILL