Программное создание Баз Данных

И так вы создали БД, затем таблицу (или табицы), описали и присоединили поля к таблице и кажется БД готова. Но нет! БД еще немного сыровата. Есть еще один ключевой момент – индексы. Индексами или индексными полями, как их иногда называют, являются знакомые вам ключевые поля. Необходимо отметить, что почти во всех БД индексы используются только для ускорения обработки больших файлов и выполняют небольшую роль в поддержке отношений между таблицами. В используемых Visual Basic БД (mdb-файлы), ключевые поля используют и для установки ограничения целостности, и для ускорения поиска и для выборки информации.

Создание индексов

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

Создание первичного ключа (PrimaryKey)

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

(считаем, что БД и Таблица уже созданы, поля описаны и добавленны к таблице):

  • При помощи метода CreateIndex объекта TableDef, создаем объект Index;
  • Устанавливаем свойства индекса;
  • Добавляем индекс к таблице;

Здесь приводится код создания индекса:

Dim Idx1 As Index

Создаем объект индекс

Set Idx1 = NewTbl.CreateIndex("PrimaryKey")

'Устанавливаем его свойства

Idx1.Name = "PrimaryKey"

Idx1.Primary = True

‘Свойство Fields должно быть таким же, как имя поля котороe становится индексным

Idx1.Fields = "ID"

'Прибавляем индекс к таблице

NewTbl.Indexes.Append Idx1

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

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

Создание внешнего ключа

Главной задачей внешнего ключа является определение и поддержка отношений между таблицами в БД. Поэтому внешние ключи не являются уникальными для той таблицы в которой они находятся. Внешние ключи (или не первичные индексы) так же могут обеспечивать уникальность полей, для этого используется свойство Unique. Установив его в True вы гарантируете введение уникальных (т.е. не повторяющихся ) значений. В объектах полей имеется только одно свойство, которое относится к созданию индексов – это свойство определяет порядок сортировки по возрастанию или по убыванию. По умолчанию устанавливается порядок по возрастанию, если необходимо сортировать по убыванию, то свойству Attribues поля, присваивают константу dbDesiending.

Код для создания вторичных индексов совершенно одинаков с кодом создания первичных индексов.

Dim Idx1 As Index

Dim Idx2 As Index

Создаем объект индекс

Set Idx1 = NewTbl.CreateIndex("PrimaryKey")

Set Idx2 = NewTbl.CreateIndex("SecondaryKey")

'Устанавливаем свойства Idx1

Idx1.Name = "PrimaryKey"

Idx1.Primary = True

‘Свойство Fields должно быть таким же, как имя поля котороe становится индексным

Idx1.Fields = "ID"

'Устанавливаем свойства Idx2

Idx2.Name = "SecondaryKey"

Idx2.Primary = False а можно вообще не устанавливать

‘Свойство Fields должно быть таким же, как имя поля котороe становится индексным

Idx2.Fields = "Phone"

Idx2.Unique= True

'Прибавляем индекс к таблице

NewTbl.Indexes.Append Idx1

NewTbl.Indexes.Append Idx2

Примечание Одна таблица может иметь не более 32 индексов.

Удаление индекса

Для удаления индекса достаточно вызвать метод Delete объекта TableDef.

Код для удаления индекса PrimaryKey из таблицы (к примеру Table1).

NewDB.TableDefs("Table1").Indexes.Delete "PrimaryKey"

Примечание Нельзя удалить индекс используемуй в отношении. Для удаления такого индекса нужно сначала разорвать их, а потом удалить индекс.