Создание псевдонима БД

Создадим псевдоним для нашей учебной БД. Псевдоним БД — это просто имя БД. Для файл-серверных БД псевдоним определяет путь доступа к файлам базы данных. В дальнейшем мы, возможно, захотим изменить его. В этом случае нам не придется исправлять этот путь в многочисленных компонентах доступа к данным — достаточно изменить его в псевдониме, и все ссылающиеся на псевдоним компоненты будут связаны с новым местом размещения данных. Роль псевдонимов особенно велика в клиент-серверных БД, в которых он содержит многочисленные дополнительные свойства, управляющие доступом к серверу.

С помощью команды Database ► Explorer из среды Delphi запустите утилиту SQL Explorer, на вкладке Databases открывшегося окна щелкните правой кнопкой мыши на узле Database и выберите команду New в контекстном меню. Утилита предложит выбрать тип вновь создаваемого псевдонима. Согласитесь с вариантом Standard, предлагаемым по умолчанию, — псевдонимы именно этого типа предназначены для обслуживания файл-серверных БД с таблицами Paradox (рис. 1.13).

Создание псевдонима БД - student2.ru

Рис. 1.13. Определение псевдонима

Сразу после этого появится имя псевдонима STANDARD 1, предлагаемое по умол­чанию, и на вкладке Definition будут перечислены его свойства. Воспользуемся тем, что выделено имя STANDARD 1, и сразу заменим его именем BIBLDATA. Теперь перейдите на вкладку Definition и в пустом поле справа от свойства PATH введите путь доступа к файлам БД: С: \BIBLDATA. Щелкните на вновь созданном псевдониме на вкладке Databases правой кнопкой мыши и выберите команду Apply в контекст­ном меню. В появившемся после этого диалоговом окне подтвердите необходи­мость запомнить вновь созданный псевдоним.

Если теперь на вкладке Databases щелкнуть на значке свернутого узла слева от имени псевдонима, а затем — на значке свернутого узла Tables, вы увидите все таблицы БД «Книголюб». Щелкнув на любой из них и открыв вкладку Data, вы сможете уви­деть содержимое выбранной таблицы (рис. 1.14).

Создание псевдонима БД - student2.ru

Рис. 1.14. Отображение содержимого таблицы в окне SQL Explorer

Модуль данных

В программе нам понадобятся 5 компонентов ТТаble и два компонента TDataSource. Разместим их в отдельном модуле данных, чтобы эти компоненты не загроможда­ли основное окно.

Выберите команду File ► New ► Others, чтобы открыть окно хранилища объектов, и на вкладке New открывшегося окна дважды щелкните на значке Data Module. В свойство Name модуля данных поместите значение DM и сохраните модуль в файле dmNaklsU. Чтобы связать модуль с проектом, щелкните на копке панели ин­струментов и выберите только что созданный файл dmNakl sU.

Для связи таблиц с БД воспользуемся компонентом TDatabase на вкладке BDE палитры компонентов Delphi: щелкните на нем и затем — на имени модуля DM в окне дерева объектов. В окне инспектора объектов раскройте список свойства AliasName и выберите псевдоним BIBLDATA. В строке свойства DatabaseName напишите произвольное имя (например, AAA) так называемого локального псевдо­нима, который создает компонент TDatabase.

Локальный псевдоним доступен только в той программе, в которой использу­ется компонент TDatabase. Этот компонент выполняет множество полезных функций, обеспечивающих связь программы с БД. Для файл-серверных сис­тем только с его помощью можно реализовать транзакции — специальный ме­ханизм доступа к данным, повышающий их достоверность и непротиворечи­вость. В клиент-серверных системах он, кроме того, способен передать серверу БД имя пользователя, его пароль и ряд других параметров, оптимизирующих связь с сервером и избавляющих пользователя программы от обязательной регистра­ции на сервере.

После определения псевдонима БД и создания локального псевдонима исчезнет красный знак вопроса слева от компонента в окне дерева объектов, что свидетель­ствует о готовности компонента к работе. Поскольку в нашей простой программе мы не будем непосредственно обращаться к компоненту, можно оставить его имя Databasel, заданное по умолчанию, но я все-таки рекомендую изменить его на DB: в дальнейшем на примере этой программы я продемонстрирую работу механизма транзакций, и в программном коде нам придется обращаться к методам и свой­ствам этого компонента.

Теперь перенесите в окно дерева объектов компонент ТТаblе (вкладка BDE) и «поло­жите» его на псевдоним AAA. В окне инспектора объектов в свойстве DatabaseName нового компонента автоматически появится имя локального псевдонима AAA, одна­ко слева от компонента в окне дерева объектов будет красный знак вопроса, означа­ющий, что компонент ТТаЫе еще не готов к работе.

Компонент ТТаble является набором данных (НД). Он преимущественно ис­пользуется в файл-серверных системах для доступа к данным из какой-либо од­ной таблицы БД. Чтобы подготовить компонент к работе, необходимо опреде­лить имя этой таблицы: раскройте список его свойства TableName и выберите в нем таблицу NAKLS. В дальнейшем нам придется много раз обращаться к мето­дам и свойствам этого компонента, поэтому измените его имя Table 1, заданное по умолчанию, на имя связанной с ним таблицы: в строке свойства Name введите Nakls.

Чтобы данные из НД Nakls смогла отобразить сетка DBGridl в главном окне про­граммы, ее нужно связать с НД с помощью специального компонента TDataSource: выделите его на вкладке Data Access палитры компонентов и затем щелкните на компоненте Nakls в окне дерева объектов, чтобы связать его с НД.

Теперь подготовим вторую пару ТТаblе — TDataSource для отображения дан­ных из таблицы MOVEBOOK во второй сетке главного окна: «положите» на псевдо­ним AAA набор данных ТТаЫе, а на него — источник данных TDataSource; свя­жите НД с таблицей MOVEBOOK и дайте ему имя Move. Вид модуля данных к этому моменту показан на рис. 1.15.

Наборы данных Na kl s и Move связаны реляционным отношением один ко многим: единственной записи (накладной) в первом НД может соответствовать произволь­ное количество записей (книг) во втором. Чтобы НД «знали» об этом и согласо­ванно отображали данные, их нужно предварительно подготовить. Перейдите на вкладку Diagram в окне кода модуля данных (предварительно нажмите клавишу F12 для визуализации окна кода) и с помощью мыши «перетащите» компоненты Nakls и Move из окна дерева объектов на вкладку Diagram. Перетаскивание реализуется классическим способом Drag&Drop: левая кнопка мыши нажимается на компо­ненте в окне дерева объектов и остается нажатой при перемещении указателя мыши на вкладку Diagram, после чего отпускается. Расположите таблицы Diagram одну под другой так, как это показано на рис. 1.16.

Создание псевдонима БД - student2.ru

Рис. 1.15. Окно модуля данных с двумя наборами данных и окно дерева объектов

Создание псевдонима БД - student2.ru

Рис. 1.16. Расположение таблиц в окне Data Diagram

Для установления связи между таблицами щелкните на кнопке [Щ: (кнопка Master Detail) панели инструментов, подведите указатель мыши в виде перечеркнутого круга к нижней кромке верхней таблицы (в этот момент указатель превратится в крестик), нажмите левую кнопку мыши и, удерживая ее нажатой, прочертите ли­нию к верхней кромке нижней таблицы, после чего отпустите кнопку. На экране появится окно конструктора связей (рис. 1.17).

Чтобы установить связь, нужно указать связываемые поля в родительской и до­черней таблицах. По умолчанию для дочерней таблицы конструктор связей вы­брал поле с первичным ключом Move ID. Чтобы сменить поле, нужно раскрыть список Available Indexes в верхней части окна и выбрать индекс MOVEBOOK_NAKL. После этого в поле Detail Fields появится имя поля MNakl — щелкните на нем и на имени поля NakllD в списке Master Fields, после чего щелкните на кнопке Add (эта кнопка станет доступной только после выделения полей связи и перестает быть доступной после щелчка на ней). Закройте окно конструктора связей щелч­ком на кнопке ОК.

Создание псевдонима БД - student2.ru

Рис. 1.17. Окно конструктора связей

После выполнения этих действий между таблицами NAKLS и MOVEBOOK устанав­ливается связь один ко многим по полю NakllD, о чем свидетельствует вид окна Data Diagram на рис. 1.18.

Создание псевдонима БД - student2.ru

Рис. 1.18. Окно Data Diagram после установления связи между таблицами

Щелкните на таблице Movebook. DB в окне дерева объектов и откройте набор дан­ных Move: в окне инспектора объектов поместите в его свойство Active значение True. Точно так же откройте таблицу Nakls.

На этом начальный этап работы с окном модуля данных закончен, и нам нужно перей­ти к главному окну программы (щелкните на вкладке fmNaklsU в окне кода и нажмите клавишу F12). С помощью команды File ► Use Unit свяжите модуль главного окна с модулем данных. Для верхней сетки DBGridl раскройте список свойства DataSource и выберите в нем пункт DataSourcel — сетка туг же наполнится данными из НД Nakls. Точно так же свяжите нижнюю сетку с источником данных DataSource2. Свяжите на­вигатор баз данных DBNavigatorl в нижней части окна с источником DataSourcel.

Модули данных

Для упрощения разработки приложений баз данных наряду с формами в Delphi используются модули данных. Модуль данных (data module) – это централизованный контейнер для невизуальных компонентов доступа к базе данных. Он предназначен для отделения логики обработки данных и бизнес-правил от логики работы пользовательского интерфейса.

Наши рекомендации