Лекция № 7

Тема: "Проектирование локальной информационной системы"

 

План

1. Знакомство с СУБД SQLite

2. Работа с SQLite с помощью графической утилиты

3. Конвертирование СУБД разных типов

4. Подключение БД к приложению на Delphi

 

1. Знакомство с СУБД SQLite

Для создания локальной ИС обычно используют специальные типы СУБД, в которых файлы БД и сама СУБД находятся на одном компьютере (такие СУБД называют локальными), или сама СУБД является динамической библиотекой, которая при запуске EXE файла загружается в ОЗУ и позволяет работать  с нужной БД (такие СУБД называются встраиваемыми).

Примерами локальных СУБД являются: Microsoft Access, Paradox, DBase, FoxPro, Visual FoxPro.

К встраиваемым СУБД принадлежат: OpenEdge, SQLite, BerkeleyDB, FireBird Embedded, Microsoft SQL Server Compact.

Преимуществами встраиваемых СУБД являются такие характеристики:

- нет необходимости устанавливать СУБД на машину клиента, потому что все необходимое для работы с БД находится в динамической *.dll библиотеке;

- такие СУБД чаще всего бесплатны и свободно могут использоваться разработчиками;

- такие СУБД отличаются высокой скоростью работы за счет отсутствия реализации некоторых технологий (например, обеспечения поддержки целостности данных между таблицами, механизма транзакций). В этом случае подобные механизмы реализуются самим разработчиком БД.

Однако чаще всего такие СУБД не имеют графических утилит по работе с базами данных, и приходится использовать программы сторонних разработчиков. Благо, что для SQLite таких программ огромное множество.

 

Характеристика SQLite

SQLite – это постоянно совершенствуемая библиотека, которая осуществляет работу автономного механизма баз данных SQL без  потребности в сервере. Сама СУБД представляет собой динамическую библиотеку *.dll, последнюю версию которой можно скатать с сайта http://sqlite.org.

Исходный код SQLite является общественным достоянием, и потому он может использоваться в любых целях – коммерческих или частных. SQLite успешно используется во множестве приложений, в том числе и в некоторых высококлассных проектах (PhotoShop, Opera, Android и т.п.).

Весь исходный программный код данной СУБД  был предоставлен его авторами в общественное пользование. Любой желающий может свободно копировать, изменять, перекомпилировать и распространять исходный код SQLite как в форме исходного кода, так и в виде откомпилированного бинарного файла.

SQLite не имеет потребности в установке перед использованием. Нет никакой процедуры инсталляции. Отсутствуют любые серверные процессы, которые необходимо запускать, останавливать или конфигурировать. Нет никакой потребности в создании администратором нового шаблона базы данных или в назначении пользователям прав доступа. Библиотека SQLite не использует никаких файлов конфигурации. При этом ничего не надо делать, чтобы сообщать системе, что SQLite выполняется в текущий момент.

SQLite является встроенным механизмом базы данных SQL. В отличие от большинства других баз данных SQLite не имеет отдельного серверного процесса. SQLite читает и пишет непосредственно в обычный файл на диске. Полная база данных с многочисленными таблицами, индексами, триггерами содержится в единственном файле на жестком диске. Формат файла базы данных является многоплатформенным. Можно свободно копировать базу данных между 32- и 64-разрядными системами.

Еще один аргумент в пользу SQLite – ее компактность. Со всеми включенными настройками, в зависимости от параметров настройки оптимизации компилятора, размер библиотеки может составлять менее 400 Кб (32-разрядная) и 700 Кб (64-разрядная).

 

2. Работа с SQLite с помощью графической утилиты

Для работы с базами данных SQLite не имеет графической утилиты разработчика. Однако существует множество программ от посторонних производителей. Одной из таких утилит является программа SQLite Expert.

Данная утилита позволяет создавать и работать с базами данных, таблицами, индексами, триггерами. Создавать и выполнять запросы.

Утилита имеет вид:

 

 

Слева отображается дерево элементов БД (сама БД, таблицы и т.п.). Справа отображается содержимое текущего объекта. В верхней части правого окна имеются закладки для работы с разными объектами и механизмами БД.

Также, как и в большинстве окно Window приложений программа имеет набор команд меню и панели инструментов с набором кнопок.

 

Работа c БД

Для создания БД выполните команду "FileNew Database" или щелкните на первой кнопке панели инструментов.

 

 

В окне задания параметров новой БД в первом поле укажите путь и имя файла создаваемой БД, остальные параметры можете оставить без изменения.

 

 

В результате в левой части окна в дереве отобразится узел созданной БД. В контекстном меню узла можно выбрать команды по работе с самой БД, а также команды создания таблиц, представлений. В правой части на закладке "Database" отобразится информация о БД (полное имя, размер, количество таблиц, индексов, триггеров). В нижней части отобразятся кнопки для выполнения обслуживающих операций над БД:

 

- Check – проверить в БД все ограничения Check на непротиворечивость информации;

-Vacuum – удалить из БД записи, помеченные на удаление. В большинстве СУБД удаление записи не приводит к физическому ее удалению из файла, а только к пометке на удаление. В результате такие записи уже не отображаются, но занимают место на диске. Данная кнопка очищает БД от помеченных на удаление записей;

- Reindex – перестраивает индексы в случае возникновения каких-либо сбоев при работе с таблицами БД;

- Repair – восстанавливает БД в случае ее повреждения. Можно восстановить как в новый файл, так и в существующий.

 

После создания БД становятся доступными все разделы меню в верхней части программы. В частности раздел "Database" содержит команды по работе с БД. Кроме стандартных команд по обслуживанию БД в этом разделе имеется команда ""Backup" для создания копии БД (так как в SQLite БД – это один файл, то ее копию можно сделать простым копированием через Проводник Windоws).

 

Работа с таблицей

Для создания таблицы можно использовать несколько способов:

- в контекстном меню узла БД выбрать команду "New Table";

- в меню программу выбрать команду "TableNew Table";

- на панели инструментов щелкнуть на кнопке "New Table".

 

В правой части окна программы отобразится область для задания параметров таблицы с несколькими закладками.

 

 

На закладке "Fields" укажите имя таблицы. С помощью кнопки "Add" добавьте в таблицу нужные поля. При этом открывается окно задания параметров поля.

 

 

Укажите имя поля, тип поля, для текстовых полей укажите размер поля,  для вещественных полей укажите число знаков после запятой (Precision), в случае необходимости задайте для поля значение по умолчанию (Default), для обязательных полей включите флажок "Not null".

После ввода всех полей таблицы щелкните на кнопке "Apply".

В результате в левой части в дереве БД отобразится вложенный узел созданной таблицы. В контекстном меню этого узла или с помощью раздела главного меню "Table" над таблицей можно выполнить операции: переименовать, очистить, удалить, скопировать, перестроить индексы таблицы.

Для изменения структуры таблицы выделите ее узел в дереве БД и в правой части окна перейдите на закладку "Design". Двойным щелчком на элементе его можно изменить. Или выделите элемент для изменения, щелкните на кнопке "Modify".

Для заполнения таблицы данными выделите ее узел в дереве БД и перейдите на закладку "Data".

Работа с индексами

Для создания индекса выделите таблицу в дереве БД, перейдите на закладку "Design", а затем на закладку "Indexes".

С помощью кнопки "Add" можно добавить индекс, кнопки "Delete" – удалить индекс, кнопки "Modify" – изменить существующий индекс. Параметры индекса задаются в отдельном окне.

 

 

Для созданию ключевого поля в таблице переместите нужное поле их вевого списка полей в правый и включите флажок "Primary". Флажок "Autoincrement" сделает ключевое поле счетчиком. Обратите внимание, что при создании ключевого поля имя индекса не указывается.

Для создания простого индекса укажите его имя, переместите нужные поля из левого списка в правый, в колонке "Order" можно указать направление сортировки данных в индексе (по умолчанию ASC). Если индекс должен быть уникальным, то включите для него флажок "Unique".

Все созданные индексы отображаются на закладке "Indexes" внутри таблицы БД.

 

Создание ограничений в таблицах

Ограничение позволяет контролировать ввод пользователя, предотвращая попадание в таблицы недопустимых данных. Например, при вводе оценки значение должно быть в диапазоне от 2 до 5.

Для создания ограничения выберите узел таблицы в дереве БД, перейдите на закладку "Design", а затем на закладку "Constraints". На этой закладке создается два вида ограничений:

– в верхней таблице отображаются ограничения на уникальность значений в поле,

– в нижней таблице – ограничения на значение поля.

Для создания ограничения на уникальность введите имя ограничения и флажком отметьте нужное поле.

Для создания ограничения на значение поля введите имя ограничения и формулу. Например, для поля "ball " ограничение может иметь вид:

 

 

Связывание таблиц

            Для связывания таблиц в дереве БД выберите подчиненную таблицу, перейдите на закладку "Design", а затем на закладку "Foreign Keys".

            Параметры связывания задаются в отдельном окне.

 

 

Укажите имя связи, имя главной таблицы (Parent Table), поле подчиненной таблицы для связывания (Child Key), поле главной таблицы для связывания (Parent Key), действия при удалении из главной таблицы (On Delete), действия при обновлении в главной таблице (On Update).

 

3. Конвертирование СУБД разных типов

 При разработке множества программных систем часто возникает необходимость конвертирования БД из одного формата в другой. Для этого существуют специальные программы. Одной из них является утилита ESF Database Migration Toolkit Pro.

Программа представляет собой мастер. Продемонстрируем на примере конвертирования БД из формата SQLite в формат Access.

На первом шаге указывают формат исходной БД (SQLite) и имя БД.

 

 

На втором шаге указывают формат, в который конвертируется БД и имя новой БД.

 

 

На третьем шаге с помощью флажков отмечают таблицы, которые нужно конвертировать.

 

 

Справа от имени таблицы с помощью кнопки с тремя точками можно указать имена и типы полей в новой БД, а также как переносятся данные: с заменой, с добавлением или просто пустая таблица для переноса только структуры.

 

 

На последнем шаге щелкните на кнопке "Submit". В результате будет создана новая БД в новом формате.

 

4. Подключение БД к приложению на Delphi

Для подключения некоторых типов СУБД операционная система Windows имеет встроенные средства поддержки: Access, SQL Server, Oracle. Другие СУБД можно подключить, используя универсальную технологию ODBC. Для работы с этой технологией разработчики разных СУБД выпускают специальные ODBC драйверы, которые необходимо установить на машину клиента перед работой с БД.

Установка таких ODBC драйверов выполняется с помощью стандартного инсталлятора и не вызовет затруднений.

 

Для подключения БД SQLite к проекту Delphi через ODBC драйвер необходимо выполнить ряд действий (при условии, что сам ODBC драйвер уже установлен). 

На форму добавьте компонент ADOConnection (ADO). Для настройки параметров соединения для компонента откройте свойство Connection String. В появившемся окне щелкните на кнопке "Build".

 

 

Откроется мастер задания параметров соединения. На первом шаге выберите драйвер "Microsoft OLE DB Provider for ODBC Driver".

 

 

На втором шаге выберите переключатель "Использовать строку подключения" и щелкните на кнопке "Сборка".

 

 

 

В новом окне щелкните на кнопке "Создать".

 

 

В следующем окне выберите драйвер "SQLite3 ODBC Driver".

 

 

На следующем шаге укажите имя файла для сохранения подключения.

 

 

На следующем шаге после щелчка на кнопке "Готово" откроется окно задания параметров подключения к БД SQLIte.

 

 

Укажите имя файла БД. Если БД находится в одной папке с программой, то удалите полный путь к файлу. Установите флажки как показано на рисунке.

 На этом подключение БД будет выполнено и работу с таблицами можно выполнять обычным средствами, как и для других СУБД.

 

Вопросы для самоконтроля

1. Какие локальные и встраиваемые  СУБД вы знаете? Дайте характеристику локальным СУБД.

2. В чем преимущества и недостатки встраиваемых СУБД?

3. Дайте характеристику основным свойствам СУБД SQLite.

4. Как выполнить основные операции над базами данных с помощью утилиты SQLite Expert?

5. Как выполнить основные операции над таблицами с помощью утилиты SQLite Expert?

6. Как создать индексы и ограничения в таблицах с помощью утилиты SQLite Expert?

7. Как связать таблицы SQLite с помощью утилиты SQLite Expert?

8. Что такое ODBC драйвер? В чем особенности его использования?

9. Опишите принцип подключения БД SQLite к проекту Delphi.