Особенности программ для работы с БД

Характерной особенностью созданных с помощью Delphi программ для работы с БД является непременное использование в них BDE (процессор реляционной базы данных Borland Database Engine, включенный в состав Delphi), которая осуществляет роль связующего моста между программой и БД.

 
 

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

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

Невизуальные компоненты осуществляют непосредственную работу с BDE, и три из них (TTable, TQuery, TStoredProc) служат наборами данных, в то время как визуальные компоненты отображают поставляемые им данные и служат для создания удобного интерфейса пользователя. Между наборами данных и визуальными компонентами обязательно располагаются компоненты TDataSource, играющие роль клапанов, открывающих или закрывающих потоки данных, которыми обмениваются источники с визуальными компонентами (см рис.).

 

 


  1. Понятие ключа (первичный, составной, внешний) и индексирования. Назначения ключа.

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

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

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

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

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

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

Пусть в отношении а имеется не ключевой атрибут а1, значения которого являются значением ключевого атрибута б1 в другом отношении б, тогда атрибут а1 отношения а есть внешний ключ, с помощью него устанавливается связь между отношениями.

Индекс — это комбинация нескольких полей, которые служат для быстрого доступа к необходимой информации.

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

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

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

В отличие от ключа, который является уникальным в каждой таблице, индексов в ней может быть несколько. Это в первую очередь необходимо для быстрой сортировки по нужному полю или полям. Если эти поля проиндексированы, то сортировка по ним будет выполнена значительно быстрее, чем по обычным полям. В любой момент времени можно активировать любой из индексов таблицы. Именно по активному (текущему) индексу обычно будет выполняться сортировка записей таблицы. Следует, однако, заметить, что, несмотря на наличие нескольких индексов, таблица может не иметь текущего индекса. Вообще говоря, поведение индексов и ключей зависит от типа используемой базы данных. Так, например, в таблицах Paradox ключ автоматически является главным индексом, который не имеет имени. В то же время в таблицах dBase ключ в принципе не создается, вместо него используется один из индексов. Но в общем случае ключевые поля обычно автоматически индексируются. Индексные файлы, создаваемые по ключевым полям таблицы часто называются файлами первичных индексов, для неключевых полей – вторичными ( пользовательскими).


  1. Операция связывания таблиц БД. Назначение связывания и виды связи.

Связывание таблиц на уровне приложений:

  1. Необходимо к свойству master source подчинить таблицу. Выбираем значение data source принадлежащее главной таблице в этой связи.
  2. Раскрыть редактор полей, в правой части, свойство ms откроем редактор связей, выбрать available Indexes. Data fields появится имя поля связи, а на панели master fields необходимо получить тоже самое поле.

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

Основные виды связывания таблиц:

Между таблицами могут устанавливаться бинарные (между двумя таблицами) тернарные (между тремя таблицами) и, в общем случае, n-арные связи. Наиболее часто встречающиеся бинарные связи. При связывании двух таблиц выделяют основную и дополнительную (подчинен­ную) таблицы. Логическое связывание таблиц производится с помощью ключа связи Ключ связи, по аналогии с обычным ключом таблицы, состоит из одного или не­скольких полей, которые в данном случае называют полями связи (ПС). Суть связывания состоит в установлении соответствия полей связи основной и дополнительной таблиц. Поля связи основной таблицы могут быть обычными и клю­чевыми. В качестве полей связи подчиненной таблицы чаще всего используют клю­чевые поля. В зависимости от того, как определены поля связи основной и дополнительной таб­лиц (как соотносятся ключевые поля с полями связи), между двумя таблицами в об­щем случае могут устанавливаться следующие четыре основные вида связи (табл. 3,2):

• один — один (1:1);

• один — много (1:М);


много — один (М:1);

• много — много (М:М или M:N).