с реляционными базами данных 5 глава




Функционирование маски можно проверить, введя в поле ввода Sample value значение поля таблицы. По нажатию кнопки Test Value выполняется проверка введенного значения, результат проверки выводится в информационной панели.


Глава 4. Технология создания информационной системы


65


Задание ссылочной целостности

Понятие ссылочной целостности относится к связанным таблицам и проявляется в следующих вариантах взаимодействия таблиц:

□ запрещается изменять поле связи или удалять запись главной таблицы, если для нее имеются записи в подчиненной таблице;

□ при удалении записи в главной таблице автоматически удаляются соответст­вующие ей записи в подчиненной таблице (каскадное удаление).

Для выполнения операций, связанных с заданием ссылочной целостности, не­обходимо выбрать пункт Referential Integrity комбинированного списка Table properties (см. рис. 4.2). При этом, как и в случае задания индексов, появляются кнопки Define, Modify, Erase и список, в котором выводятся имена созданных условий ссылочной целостности.

Условие ссылочной целостности задается для подчиненной таблицы и опреде­ляется следующими элементами:

□ полями связи подчиненной таблицы;

□ именем главной таблицы;

□ полями связи главной таблицы;

□ параметрами.

Разработчик может создать, изменить или удалить условие ссылочной целостности.


Рис. 4.8. Задание условия ссылочной целостности

В списке Fields следует выбрать поле связи и нажатием кнопки со стрелкой вправо перевести его в список Child fields (Дочерние поля). Если полей связи

Для задания условия ссылочной целостности нужно нажать кнопку Define, по­сле чего появляется окно Referential Integrity (рис. 4.8).


66


Часть I. Основы работы с базами данных


несколько, то эти действия выполняются для каждого из них. Кнопка со стрел­кой влево удаляет выбранное поле из списка дочерних полей.

В списке Table указывается главная таблица, имена таблиц выбираются в рабо­чем каталоге программы Database Desktop (каталог, определенный как Working Directory, его задание описано в главе 12). После выбора таблицы и нажатия кнопки со стрелкой влево (рядом со списком таблиц) в поле Parent's key авто­матически заносятся ключевые поля главной таблицы.


J

Замечание

Главная таблица должна быть закрыта и не использоваться другими программами, включая Database Desktop. В противном случае при попытке сохранить структуру таблицы возникает ошибка.

Параметры ссылочной целостности выбираются переключателями. Группа Update rule (Правила изменения) определяет вид взаимодействия таблиц при изменениях в главной таблице. Переключатель Cascade устанавливает режим каскадного удаления записей в подчиненной таблице при удалении соответст­вующей записи главной таблицы. Переключатель Prohibit устанавливает режим запрещения изменения поля связи или удаления записи главной таблицы, для которой имеются записи в подчиненной таблице.

Флажок Strict referential integrity (Жесткая ссылочная целостность) устанавлива­ет защиту таблиц от модификации с использованием ранних версий программы Database Desktop (под DOS), которые не поддерживают ссылочную целостность.

После установки нужных режимов и нажатия кнопки ОК появляется окно Save Referential Integrity As, в котором нужно указать имя условия (рис. 4.9). Напом­ним, что для таблиц Paradox условия ссылочной целостности именуются. Для удобства обращения к условию в его имя можно включить имена полей и таб­лиц, задав при этом некоторый префикс, например, ri. После нажатия кнопки ОК сформированное условие ссылочной целостности добавляется к таблице, и его имя появляется в списке условий.


J

Замечание

Условия ссылочной целостности задаются на физическом уровне и действуют для любых программ, выполняющих операции с таблицей: как для программ типа Data­base Desktop, так и для приложений, создаваемых в Delphi.




 


Глава 4. Технология создания информационной системы


67


Созданное условие ссылочной целостности можно изменить, определив но­вый состав полей и новые значения параметров. Изменение условия ссылочной целостности практически не отличается от его создания: после выделения име­ни условия в списке и нажатия кнопки Modify открывается окно определения ссылочной целостности (см. рис. 4.8). При нажатии кнопки ОК измененное ус­ловие ссылочной целостности сохраняется под тем же именем.

Для удаления условия ссылочной целостности нужно выделить его в списке и нажать кнопку Erase. Удаление производится без выдачи предупреждающих сообщений.

Кнопки Modify и Erase доступны, только если выбрано условие в списке.

Задание паролей

Пароль позволяет задать права доступа пользователей (приложений) к таблице. Если для таблицы установлен пароль, то он будет автоматически запрашиваться при каждой попытке открытия таблицы.

(_____ ЗамечаниеJ

Пароль действует на физическом уровне и его действие распространяется на все программы, выполняющие доступ к таблице: как на программы типа Database Desktop, так и на создаваемые приложения Delphi.


Рис. 4.10. Задание главного пароля

Пароль таблицы вводится дважды — в полях Master password (Главный пароль) и Verify master password (Подтвердить главный пароль). При нажатии кнопки

Для выполнения операций, связанных с заданием пароля, нужно выбрать строку Password Security в комбинированном списке Table properties окна определения структуры таблицы (см. рис. 4.2). При этом под списком становятся доступны­ми кнопки Define и Modify. Нажатие кнопки Define открывает окно Password Security (рис. 4.10), в котором задается пароль.


68


Часть I. Основы работы с базами данных


ОК оба значения сверяются, и при их совпадении пароль принимается. Ког­да пароль определен, кнопка Define блокируется и становится доступной кноп­ка Modify изменения пароля. Ее нажатие снова вызывает окно задания пароля (см. рис. 4.10), в котором появляются кнопки Change и Delete, а поля ввода за­блокированы.

Нажатие кнопки Delete удаляет пароль, после чего его можно ввести заново. Если в качестве значения пароля указана пустая строка, то пароль для таблицы не задан. Нажатием кнопки Change поля ввода разблокируются, и значение па­роля можно изменить (это нужно сделать в обоих полях). При этом название кнопки Change изменяется на Revert (Возврат), и ее повторное нажатие возвра­щает значение пароля, которое было до начала редактирования.

Рассмотренный пароль считается главным паролем, который предоставляет поль­зователю полные права доступа к таблице, включая изменение записей и структу­ры таблицы, в том числе смену пароля. Кроме главного пароля, можно задать для таблицы дополнительные пароли, устанавливающие пользователю ограниченные права доступа к таблице. Для задания дополнительных паролей нажатием кнопки Auxiliary Passwords открывается одноименное окно (рис. 4.11).

Рис. 4.11. Задание дополнительных паролей

В списке Passwords выводятся действующие дополнительные пароли. Группа переключателей Table rights определяет для пароля права доступа к таблице в целом. Они могут быть следующими:

□ All — полные права, включая изменение записей и структуры таблицы;

□ Insert & delete — разрешены вставка и удаление, а также редактирование за­писей, запрещено изменение структуры таблицы;


Глава 4. Технология создания информационной системы


69


П Data entry — разрешены редактирование и вставка записей, запрещены из­менение структуры таблицы и удаление записей;

Update — разрешены только просмотр (чтение) записей и редактирование неключевых полей;

Read only — разрешен только просмотр (чтение) записей.

Права доступа к таблице действуют на все ее поля; кроме того, для каждого по­ля можно установить отдельные права доступа, не зависящие от прав доступа к другим полям. Права доступа к полям выводятся слева от имени поля в списке Fields rights и могут иметь следующие значения:

All (Чтение и изменение значения поля);

ReadOnly (Только чтение значения поля);

None (Доступ к полю запрещен).

Смена права доступа к полю выполняется выбором поля в списке и нажатием кнопки Fields Rights, при котором право циклически устанавливается очеред­ным значением списка (All, ReadOnly и None).

Создание пароля начинается нажатием кнопки New, после чего его имя указы­вается в поле Current password (Текущий пароль) и устанавливаются права дос­тупа к таблице и ее полям. Нажатие кнопки Add заносит пароль в список до­полнительных паролей.

Нажатие кнопки Change переводит выбранный в списке пароль в режим редак­тирования, при этом появляются кнопки Accept (Подтвердить) и Revert (Воз­врат), а также разблокируется кнопка Delete. В процессе редактирования пароль можно изменить, удалить или оставить без изменений. После смены пароля и прав доступа внесенные изменения утверждаются нажатием кнопки Accept. Для выхода из режима редактирования и возврата к прежним установкам пароля необходимо нажать кнопку Revert. Удаляется пароль нажатием кнопки Delete.

Отметим, что из приложения паролями можно управлять с помощью методов компонента session. Управление паролями заключается в их добавлении и уда­лении. Процедура AddPassword (const Password: String) добавляет НОВЫЙ пароль, заданный параметром Password; процедура RemovePassword (const Password: String) удаляет указанный пароль, а процедура RemoveAllPasswords удаляет все пароли.

Задание языкового драйвера

Для задания языкового драйвера нужно выбрать пункт Table Language (Язык таблицы) комбинированного списка Table properties окна определения структу­ры таблицы (см. рис. 4.2). При этом под списком становится доступной кнопка Modify, открывающая окно Table Language (рис. 6.12). Под "языком" таблицы понимается языковой драйвер, используемый для этой таблицы. В поле списка Language отображается текущий драйвер.


70


Часть I. Основы работы с базами данных


Рис. 4.12. Выбор языкового драйвера

В списке можно выбрать драйвер нужного языка, для русского языка это драй­вер Pdox ANSI Cyrillic, который корректно отображает символы русского алфа­вита и выполняет с ними операции сортировки.

По умолчанию языковой драйвер определяется установками процессора баз данных BDE, поэтому целесообразно установить его (параметр langdriver) в нужное значение, например, с помощью программы Administrator BDE. Пара­метры BDE и вопросы, связанные с их настройкой, рассматриваются в главе 12.

Задание таблицы для выбора значений

Часто возникает ситуация, когда в поле должны заноситься значения из какого-либо набора, который может формироваться различными способами. Одним из часто используемых является вариант, когда эти значения содержатся в поле другой таблицы, а совокупность значений всех записей этого поля образует на­бор допустимых значений.

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

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

(_____ ЗамечаниеJ

При вводе строковых значений учитывается регистр букв, поэтому, например, водитель и водитель являются разными значениями.

В любом случае допустимым является пустое значение (Null), если, конечно, не задано ограничение, что поле не может быть пустым.

Для выполнения операций, связанных с полями выбора, предназначен пункт Table Lookup (Таблица выбора) комбинированного списка Table properties окна определения структуры таблицы (см. рис. 4.2). При этом под списком становит-


Глава 4. Технология создания информационной системы


71


ся доступной кнопка Define, нажатие которой открывает окно Table Lookup (рис. 4.13).

Рис. 4.13. Окно задания таблицы выбора

В списке Fields выводятся имена всех полей таблицы, при этом имена полей, которые не допускают создание таблицы выбора, выделены серым цветом (например, поле автоинкрементного типа).

Имя поля, для которого задается таблица выбора, отображается в области Field name, для его указания следует выделить в списке Fields нужную строку и на­жать кнопку с изображением стрелки вправо. Если указать другое поле и нажать кнопку, то имя этого поля перейдет в область Field name и заменит имя преды­дущего поля.

В списке Lookup table задается таблица выбора, имя которой (имя главного фай­ла) появляется в поле редактирования над списком. В списке Drive (or Alias) задается диск или псевдоним, которые определяют местоположение таблицы выбора. Название каталога, таблицы которого содержатся в списке Lookup table, отображается справа от названия списка Drive (or Alias). Таблицу также можно задать в окне Select File, открываемом нажатием кнопки Browse (Просмотр).

После задания таблицы выбора нажатие кнопки с изображением стрелки влево переводит имя ее первого поля, значения которого будут использованы для фор­мирования набора допустимых значений, в область Lookup field (Поле выбора). Типы полей обеих таблиц должны совпадать, в противном случае в информа­ционной панели выдается сообщение об ошибке.


72


Часть I. Основы работы с базами данных


С помощью группы переключателей Lookup type (Тип выбора) можно задать способ взаимодействия обеих таблиц. Если включен переключатель Just current field (Только текущее поле), то таблица выбора задается только для поля, ука­занного в области Field name. Переключатель All corresponding fields назначает таблицу выбора не только указанному полю, но и всем соответствующим полям. Имена и типы этих полей должны совпадать с соответствующими полями таб­лицы выбора.

Группа переключателей Lookup access (Доступ к таблице выбора) определяет, как пользователь использует значения из таблицы выбора. Если включен пере­ключатель Fill no help (Вставка без помощи), то при редактировании поля, для которого определена таблица выбора, пользователь должен знать допустимые значения этого поля. При этом термин "выбор" не совсем точно отражает взаи­мосвязь полей таблиц, т. к. пользователю не предлагается список возможных значений, из которых он может выбрать нужное ему. Пользователь сам вводит значение в поле, при этом на уровне таблицы выполняется проверка, является ли это значение допустимым. Если значение отсутствует в указанном поле таб­лицы выбора, то оно не принимается.

В этом случае может помочь отображение рядом с редактируемой таблицей таб­лицы выбора, например, как показано на рис. 4.14.

Рис. 4.14. Функционирование поля, для которого задана таблица выбора

В приведенном на этом рисунке примере в окне программы Database Desktop таблица Personnel содержит данные о сотрудниках организации, в ней опреде­лены поля для кода (p_code), фамилии (p_Name), должности (p_Position), окла­да (psaiary) и примечания (p_Note). В строковое поле должности можно вво­дить только допустимое название должности. Перечень всех должностей содержится в единственном поле Position таблицы Position. Для предотвра­щения ввода в таблицу Personnel неправильных значений ее полю p_Position назначена таблица выбора Position с полем Position. В таблице Personnel ДЛЯ


Глава 4. Технология создания информационной системы


73


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

Установка переключателя Help and fill (Помощь и вставка) позволяет не только ввести значение в поле, как описано выше, но и действительно выбрать значе­ние в списке. Список, сформированный на основании значений поля (полей) таблицы выбора (рис. 4.15), появляется при нажатии комбинации клавиш <Сгг1>+<пробел> в редактируемом поле. После выбора нужного значения и на­жатия кнопки ОК оно заносится в поле.



 


Рис. 4.15. Список выбора


Замечание


J


Из таблицы выбора могут быть удалены значения. Если эти значения содержатся в полях таблицы, использующей таблицу выбора, то при переходе в режим ее редак­тирования возникает ошибка. При использовании программы типа Database Desktop таблицу нельзя вывести из режима редактирования, пока все ее значения не приве­дены в соответствие с новыми значениями таблицы выбора. Во время выполнения приложения при доступе к таблице, использующей удаленные из таблицы выбора значения, генерируется исключение.

После задания для поля таблицы выбора в окне определения структуры таблицы (см. рис. 4.2) становятся доступными кнопки Modify и Erase, а также список, в котором отображается имя этой таблицы.

Нажатие кнопки Modify вновь открывает окно задания таблицы выбора, в кото­ром можно ввести новые данные. Кнопка Erase служит для отмены использова­ния таблицы выбора и связанных с ней ограничений на значения поля.

Отметим, что объекты поля типа TFieid наборов данных Table и Query, а также компонент DBGrid позволяют определить для поля список выбора, который



Часть I. Основы работы с базами данных


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

Просмотр списка подчиненных таблиц

Таблица, связанная с другими таблицами, является либо главной, либо подчи­ненной. Выше мы рассмотрели задание ссылочной целостности для подчинен­ной таблицы. Для главной таблицы можно просмотреть список подчиненных таблиц, отображаемый при выборе пункта Dependent Table (Подчиненная табли­ца) все того же комбинированного списка Table properties (см. рис. 4.2). Этот список содержит имена всех таблиц, имеющих условия ссылочной целостности с участием данной таблицы.

Изменение структуры таблицы

Структуру существующей таблицы можно изменить, выполнив команду Table\Restructure после предварительного выбора таблицы в окне программы Database Desktop. В результате открывается окно определения структуры табли­цы, и дальнейшие действия не отличаются от действий, выполняемых при соз­дании таблицы.

(_____ ЗамечаниеJ

При изменении структуры таблицы с ней не должны работать другие приложения, в том числе Delphi. Поэтому предварительно необходимо закрыть Delphi или прило­жение, в котором компоненты Table связаны с перестраиваемой таблицей. Другим вариантом является отключение активности компонентов Table, связанных с пере­страиваемой таблицей, для чего свойству Active этих компонентов через Инспек­тора объектов устанавливается значение False.

Переименование таблицы следует выполнять из среды программы Database Desktop, а не из среды Windows, например, с помощью Проводника. Для этого при работе со структурой таблицы можно нажать кнопку Save As и задать новое имя таблицы. В результате в указанном каталоге диска появятся все необходимые фай­лы таблицы. При этом старая таблица также сохраняется. Информация о названии таблицы используется внутри ее файлов, поэтому простое переименование всех файлов таблицы приведет к ошибке при попытке доступа к ней.

Если необходимо просто ознакомиться со структурой таблицы, то выполняется команда Table\Into Structurel. В результате появляется окно определения струк­туры таблицы, но элементы, с помощью которых в структуру таблицы могут быть внесены изменения, заблокированы. Просмотр структуры возможен также для таблицы, с которой связаны другие приложения.


Глава 4. Технология создания информационной системы


75


Создание приложения BDE

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

Вид формы приложения на этапе проектирования показан на рис. 4.16, где в форме размещены компоненты Tablel, DataSourcel, DBGridl и DBNavigatorl.



 


Рис. 4.16. Форма приложения для работы с БД

Компонент Tablel обеспечивает взаимодействие с таблицей БД. Для связи с требуемой таблицей нужно установить в соответствующие значения свойство DataBaseName, указывающее путь к БД, и свойство TabieName, указывающее имя таблицы. После задания таблицы для открытия набора данных свойство Active должно быть установлено в значение True.


Замечание


J


Значение True свойства Active нужно устанавливать после задания таблицы БД, т. е. после установки нужных значений свойств DataBaseName и TabieName.

Имя таблицы лучше выбирать в раскрывающемся списке в поле значения свойства TabieName. Если путь к БД (свойство DataBaseName) задан правильно, то в этом списке отображаются главные файлы всех доступных таблиц.

В рассматриваемом приложении использована таблица клиентов, входящая в состав поставляемых с Delphi примеров, ее главный файл — Clients.dbf. Файлы этой и других таблиц примеров находятся в каталоге, путь к которому указывает псевдоним dbdemos. Настройка псевдонима может быть выполнена с помощью программы BDE Administrator.

Компонент DataSourcel является промежуточным звеном между компонентом Tablel, соединенным с реальной таблицей БД, и визуальными компонентами


76


Часть I. Основы работы с базами данных


DBGridi и DBNavigatori, с помощью которых пользователь взаимодействует с этой таблицей. На компонент Tabiei, с которым связан компонент DataSourcel, указывает свойство DataSet последнего.

Компонент DBGridi отображает содержимое таблицы БД в виде сетки, в кото­рой столбцы соответствуют полям, а строки — записям таблицы. По умолчанию пользователь может просматривать и редактировать данные. Компонент DBNavigatori позволяет пользователю перемещаться по таблице, редактировать, вставлять и удалять записи. Компоненты DBGridi и DBNavigatori связываются со своим источником данных — компонентом DataSourcel — через свойства DataSource.

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



 


Рис. 4.17. Взаимосвязь компонентов приложения и таблицы БД

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

Таблица 4.1. Значения свойств компонентов


Компонент


Свойства


Значения


 



 


Глава 4. Технология создания информационной системы


77


В дальнейшем при организации приложений, использующих механизм доступа BDE, предполагается, что названные компоненты связаны между собой именно таким образом, и свойства, с помощью которых эта связь осуществляется, не рассматриваются.

Для автоматизации процесса создания формы, использующей компоненты для операций с БД, можно вызвать Database Form Wizard (Мастер форм баз дан­ных), показанный на рис. 4.18. Этот Мастер расположен на странице Business Хранилища объектов.

Мастер позволяет создавать формы для работы с отдельной таблицей и со свя­занными таблицами, при этом можно использовать наборы данных Table или Query.

Рис. 4.18. Окно Мастера Database Form Wizard

Использование модуля данных

При конструировании формы невизуальные компоненты, используемые для доступа к данным, такие как DataSource или Table, размещаются в форме, но при выполнении приложения эти компоненты не видны. Поэтому их можно размещать в любом удобном месте формы, которая для них является контейне­ром — модулем. Кроме того, для размещения невизуальных компонентов, через которые осуществляется доступ к данным, предназначен специальный объект — модуль данных.

Есть три типа модулей данных:

□ простой модуль данных;

□ удаленный модуль данных;

□ Web-модуль.


78


Часть I. Основы работы с базами данных


Ниже рассматривается простой модуль данных, который представлен объектом DataModuie. Использование удаленного модуля данных и Web-модуля подробно изучается при рассмотрении трехуровневых приложений и публикации БД в Интернете (см. главы 17, 18, 20).

Если применяется простой модуль данных, то взаимосвязь компонентов прило­жения и таблицы БД имеет вид, показанный на рис. 4.19.

Рис. 4.19. Взаимосвязь компонентов приложения и таблицы БД при использовании модуля данных

Модуль данных, как и форма, является контейнером для своих невизуальных компонентов, и для него создается модуль кода с расширением pas. Добавление модуля данных к проекту выполняется командой File\New\DataModule главного меню Delphi. В окне модуля компоненты размещаются так же, как и в форме (рис. 4.20). При выборе объекта в окне Инспектора объектов отображаются его свойства, значения которых можно просматривать и изменять.

Рис. 4.20. Модуль данных

При обращении к содержащимся в модуле данных компонентам для них указывается составное имя, в которое, кроме имени компонента, входит имя модуля данных. Составное имя имеет формат



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: