Смекни!
smekni.com

Разработка автоматизированной системы заполнения первичной документации предприятия (стр. 6 из 18)

· Удаление записей;

Рассмотрим некоторые методы организации контроля ссылочной целостности, с учетом этих операций.

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

2) Модификация записей. При редактировании полей связи подчиненной таблицы необходимо, чтобы новое значение полей связи совпадало со значением какой-либо записи основной таблицы, то есть дополнительная запись должна поменять ссылочную запись в основной таблице, но не должна потерять ее вообще. Редактирование полей связи основной таблицы разумно подчинять одному из приведенных ниже правил:

· Редактировать записи, у которых нет подчиненных записей. Если есть подчиненные записи, то блокировать изменение полей связи;

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

3) В операциях удаления записей связанных таблиц большую свободу имеют записи подчиненной таблицы. Их удаление, исходя из выше приведенных правил, должно происходить практически бесконтрольно. Удаление записей основной таблицы должно быть подчинено одному из следующих правил:

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

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

Системы программирования BorlandDelphi, как средства разработки приложений баз данных

Как отмечалось выше, среда визуального программирования BorlandDelphi является одним из лучших средств для разработки приложений баз данных. Этому способствует и поддержка множества технологий, архитектур БД, и наиболее распространенных моделей данных, и гибкость языка ObjectPascal, и многое другое. Кроме того, BorlandDelphi – это средство написания программ, т.е. при помощи Delphi пишутся внешние приложения баз данных, что позволяет реализовать дополнительную функциональность приложения и обеспечить наиболее точное соответствие требованиям заказчика.

Рассмотрим основные механизмы построения приложений баз данных, используемые в BorlandDelphi 7.0.

Механизмы Delphi для организации доступа к данным

Характерной особенностью большой части программ, созданных с помощью Delphi и предназначенных для работы с базами данных, является их зависимость от специальной библиотеки программ, которая называется BDE (BorlandDatabaseEngine – машина баз данных корпорации Borland). BDE представляет собой набор динамических библиотек DLL, предназначенных для низкоуровневого доступа к данным самых различных форматов. BDE«умеет» работать с таблицами самых распространенных СУБД, как файл-серверных (dBase, Paradox, FoxPro, Clipper), так и клиент-серверных (InterBase, MicrosoftSQLServer, Oracle и др.). Без установки и регистрации BDE на компьютере не может работать ни одна программа БД, созданная в Delphi версий от 1 до 4 . Это обстоятельство существенно затрудняет распространение, созданных с помощью Delphi, программ, так как в месте с программой должна поставляться и библиотека BDE.

Начиная с пятой версии в среде Delphi доступны и другие технологии, позволяющие обойтись и без BDE – ADO, InterBaseExpress и dbExpress.

Так как при разработки программы «D-ArtAurora» была использована технология ADO, то далее будет рассматриваться только особенности данной технологии доступа к данным.

Технология ADO (ActiveXDataObjects – объекты данных, построенные как объекты ActiveX) усиленно развивается корпорацией Microsoft. Основные особенности использования технологии ADO не зависят от архитектуры БД: эта технология характерна не только для файл-серверных, но и для клиент-серверных и трехзвенных БД. Основным достоинством технологии ADO является ее естественная ориентация на создание «облегченного» клиента. В рамках этой технологии на машине разработчика устанавливаются базовые объекты MSADO и соответствующие компоненты Delphi, обеспечивающие поддержку этой технологии. На машине сервера данных устанавливается провайдер данных - некоторая настройка над специальной технологией OLEDB, «понимающая» запросы объектов ADO и «умеющая» переводить эти запросы в нужные действия над данными. Взаимодействие компонентов ADO и провайдера данных осуществляется на основе универсальной для Windows технологии ActiveX, причем провайдер реализуется как COM-сервер, а ADO-компоненты - как COM-клиенты. Так же на машине сервера создается и размещается источник данных. В случае файл-серверных систем отдельные таблицы типа dBase, FoxPro, Paradox и т.п. должны управляться соответствующим ODBC-драйвером, а в роли провайдера используется MicrosoftOLEDBProviderforODBCdrivers. Для файлов БД, созданных в MicrosoftAccess необходимо использовать MicrosoftJet 4.0 OLEDBProvider, и такая БД будет управляется машиной баз данных MicrosoftJet 4.0 DatabaseEngine. Если используется промышленный сервер данных Oracle или MSSQLServer, данные не нуждаются в какой-либо дополнительной обработке, а в роли провайдера используется соответственно MicrosoftOLEDBProviderforOracle или MicrosoftOLEDBProviderforSQLServer. Не трудно обнаружить и явный недостаток технологии ADO – она не может использоваться, если для соответствующей структуры данных не создан нужный провайдер или ODBC-драйвер.

ADO-компоненты Delphi для организации доступа к данным

1) Связной компонент TADOConnection. Этот компонент осуществляет связь остальных компонентов с ADO. После того, как с помощью этого компонента связь с данными установлена, на него могут ссылаться другие компонент, разделяя установленную связь. Однако роль компонента TADOConnection гораздо шире, чем просто концентрация соединений. С помощью своих свойств и методов он может осуществлять точную настройку соединения, обеспечивать необходимый уровень изоляции транзакций, управлять транзакциями и т.д.

2) Компонент TADOTable. Данный компонент предназначен для организации доступа непосредственно к таблицам базы данных с помощью свойства TableName, доступ к которой осуществляется либо самостоятельно – через свойство ConnectionString, либо через компонент TADOConnection, который имеет такое свойство. При помощи широкого набора методов этого компонента можно осуществлять добавление, редактирование, удаление записей соответствующей таблицы базы данных, перемещение по записям, как непосредственно, так и с помощью методов поиска и фильтрации данных. Кроме того данных компонент, обеспечивает доступ ко всем полям подключенной таблицы и позволяет непосредственно изменять и считывать значения каждого поля для текущей записи; так же компонент TADOTable предоставляет широкие возможности по созданию объектов для вычисляемых полей (значения формируются на основе значений других полей) и постановочных полей.(значения берутся из других таблиц базы данных). При необходимости данный компонент может организовать работу с таблицей базы данных в режиме кэширования изменений (предоставляет возможность отката сделанных в таблице изменении – работа с виртуальной копией таблицы).

3) Компонент TADODataSet. Этот компонент предназначен для обеспечения доступа к одной или нескольким таблицам базы данных с помощью SQL-запроса типа SELECT, то есть компонент может обращаться не только к одно, но сразу к нескольким таблицам базы данных, в отличие от компонента TADOTable.

4) Компонент TDataSource (находится на вкладке «DataAccess»). Данный компонент предназначен для связывания компонентов обеспечивающих получение данных и базы (TADOTable, TADODataSet, TADOQuery) с компонентами, позволяющими визуализировать эти данные (см. ниже).

5) Компонент TADOQuery. Этот компонент предназначен для формирования и выполнения запросов SQL различной структуры и сложности к таблицам базы данных, подключение к которой, так же как и других компонентов, осуществляется с помощью компонента TADOConnection или свойства ConnectionString. Данный компонент позволяет сформировывать и выполнять запросы на выборку данных (SELECT), добавление (INSERT), удаление (DELETE) и обновление (UPDATE). Кроме того, имеется возможность использования параметров вместо конкретных значений при выполнении различных запросов. Для выполнения запросов типа SELECT используется метод Open и при этом может использоваться визуализирующий компонент для отображения результатов запроса. Для выполнения запросов, которые не возвращают значений, используется метод ExecSQL. С помощью этого компонента так же можно выполнять запросы на создание таблиц (CREATE) в базе данных.

Компоненты Delphi для визуализации данных

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

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

2) Компонент TDBText. С помощью компонента можно отображать текстовое представление различных полей таблицы в том виде, в котором эти поля отображаются в сетке TDBGrid. Текст, отображаемый в компоненте формируется на основании значения некоторого поля текущей записи. Отображаемый текст нельзя изменить и соответственно при помощи данного компонента нельзя осуществлять редактирование значения, отображаемого поля таблицы.