Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
68
Добавлен:
16.04.2013
Размер:
257.54 Кб
Скачать

Главные и подчиненные таблицы и их ключи

Главная

таблица

Первичный

ключ

Подчиненная

таблица

Внешний

ключ

PERSON

Nom

HAVE_D

Nom

FLAT

Adr

PERSON

Adr

FLAT

Adr

TPHONE

Adr

PROFIT

Id

HAVE_D

Id

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

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

Обеспечение быстрого доступа к информации

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

В качестве индексного ключа используется атрибут (или набор атрибутов) индексируемой таблицы, который часто используется для поиска в таблице. Если индексным ключом является первичный ключ, то созданный индекс называется первичным (Primary Index). Если индексный ключ отличается от первичного, то созданный индекс называется вторичным (Secondary Index). Так, для быстрого поиска жителя по его фамилии в таблице PERSON целесообразно создать вторичный индекс, указав в качестве индексного ключа атрибут FIO. Другим примером индексного ключа служит внешний ключ подчиненной таблицы, в которой созданный вторичный индекс позволяет быстро определить наличие строк, содержащих значения внешних ключей, равные значению первичного ключа главной таблицы.

В СУБД PARADOX первичный индекс формируется автоматически при создании БД, когда атрибут таблицы отмечается как принадлежащий первичному ключу. Так же автоматически формируется вторичный индекс по внешнему ключу, когда для подчиненной таблицы устанавливается свойство Referential Integrity. Другие вторичные индексы, необходимые для работы с таблицей, формируются, когда для таблицы устанавливается свойство Secondary Indexes.

Создание базы данных

Создание каталогов

Таблицы, входящие в состав БД, хранятся в компьютере в виде файлов, которые следует поместить в один каталог. Создадим для этих целей каталог D:\DELPHI\DATAPRDX.

Для нормальной работы утилиты Database Desktop (DBD) в локальной сети с защищенными сетевыми дисками дополнительно следует создать каталог D:\DELPHI\DBD; с помощью утилиты DBD в качестве Private Directory задать D:\DELPHI\DBD; в качестве Working Directory - D:\DELPHI\DATAPRDX. При выходе из утилиты нужно подтвердить сделанные изменения.

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

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

В главном меню утилиты DBD выберем команду Tools | Alias Manager. В появившемся диалоговом окне нажмем кнопку New и в строке Database alias наберем псевдоним TUTOR_DATABASE; в строке Driver type выберем тип драйвера STANDARD, а в строке Path введем спецификацию пути D:\DELPHI\DATAPRDX. Для сохранения псевдонима нажмем кнопку Keep new, а затем OK и кнопку Да в ответ на запрос Okay to save Public Aliases to ...?

Завершим работу с DBD, выбрав в главном меню утилиты команду File | Exit.

Проверка наличия драйвера СУБД

Чтобы убедиться в наличии драйвера выбранной СУБД PARADOX, запустим утилиту BDE Administrator командой Программы | Borland Delphi | BDE Administrator. В диалоговом окне выберем закладку Configuration и убедимся, что PARADOX присутствует в списке драйверов. Выделив имя PARADOX, справа увидим таблицу параметров драйвера. Проверим и при необходимости установим параметр LEVEL=5, задающий версию СУБД PARADOX. Если в БД будет храниться русскоязычная информация, то особый интерес представляет параметр LANGDRIVER, задающий драйвер, определяющий набор символов и порядок алфавитной сортировки. Следует записать в конспект значение этого параметра (вероятнее всего, что LANGDRIVER=‘ascii’ANSI).

Для формата даты (System | Formats | Date) установим параметр MODE=1, чтобы дата выводилась в форме ДД/ММ/ГГ.

Убедимся в существовании псевдонима TUTOR_DATABASE на закладке Databases и завершим работу с утилитой, выбрав из ее меню команду File | Exit. Если параметры драйвера СУБД PARADOX изменялись, то нужно подтвердить необходимость их сохранения, нажав кнопку Yes в появившемся диалоговом окне.

Описание структуры таблиц

Схема проектируемой БД, представленная в табл.2, задается описанием структуры отдельных таблиц. Наличие связей между таблицами (см. рис.3) определяет порядок, в котором описываются структуры таблиц: в первую очередь описываются структуры наименее зависимых таблиц FLAT и PROFIT, а затем структуры таблиц TPHONE, PERSON и HAVE_D.

Описание структуры таблицы осуществляется с помощью утилиты DBD. Окно, в котором описывается структура таблицы (рис.4), появляется после выбора команды File | New | Table в главном меню утилиты DBD и выбора типа таблицы для СУБД Paradox 5.0 for Windows.

В

Рис.4. Окно для описания структуры таблицы

области Field Roster задается список атрибутов (полей) таблицы. Для атрибута (поля) указывается имя (в колонке Field Name), обозначение типа (в колонке Type), размер (в колонке Size) и принадлежность первичному ключу (в колонке Key). Принадлежность атрибута первичному ключу отмечается вводом символа * (звездочка). Атрибуты, входящие в первичный ключ, должны располагаться подряд в начале списка атрибутов (см. табл.3).

Атрибут, для которого обязательно должно быть задано значение, отмечается установкой признака Required Field.

Допустимые значения атрибута и значение по умолчанию задаются свойством таблицы Validity Checks, выбираемым из списка Table Properties. Диапазон числовых значений атрибута записывается в строках Minimum и Maximum, значение по умолчанию - в строке Default. Шаблон для ввода значений атрибута или перечень допустимых текстовых значений атрибута записывается в строке Picture. Примеры шаблонов можно увидеть, нажав кнопку Assist.

Для описания структуры таблицы FLAT нужно задать соответствующий список атрибутов (см. табл.2) и ввести звездочку в колонке Key для атрибута Adr (рис.5). Для всех атрибутов следует установить п

Рис.5. Структура таблицы FLAT

ризнак Required Field, а для атрибутов Skv, Nrooms, KCategory указать допустимые значения и значения по умолчанию (см. табл.2). Допустимые значения атрибута KCategory перечисляются в строке Picture и заключаются в фигурные скобки: {П,Н,К}.

Д

Рис.6. Выбор языка таблицы

ля всех таблиц, принадлежащих БД TUTOR_DATABASE, нужно проверить и при необходимости изменить свойство таблицы Table Language (язык таблицы), которое должно совпадать со значением параметра LANGDRIVER, ранее записанным в конспект. Это свойство выбирается из списка Table Properties, а его значение проверяется нажатием кнопки Modify. В появившемся окне Table Language из списка Language выбирается нужный язык таблицы, а затем нажимается кнопка OK (рис.6).

Для сохранения описанной структуры таблицы нажимается кнопка Save As и задается имя таблицы.

С

Рис.7. Структура таблицы PROFIT

труктура таблицы PROFIT описывается в соответствии со схемой БД, приведенной в табл.2. Для всех атрибутов, кроме Id, устанавливается признак Required Field, а атрибут Id отмечается как первичный ключ (рис.7).

Структура таблицы TPHONE описывается в соответствии со схемой БД (см. табл.2) и с учетом наличия в этой таблице внешнего ключа (см. табл.4). Для всех атрибутов устанавливается признак Required Field, а атрибут Ntel отмечается как первичный ключ. Описание внешнего ключа задается при установке свойства таблицы Referential Integrity, которое выбирается из списка Table Properties (рис.8).

Кнопка Define служит для создания новых внешних ключей, а кнопка Modify - для изменения существующих. При нажатии на эти кнопки появляется окно, в котором задается соответствие между внешним ключом подчиненной таблицы и первичным ключом главной таблицы (рис.9).

Рис.8. Структура таблицы TPHONE

Рис.9. Окно с описанием внешнего ключа таблицы TPHONE

С правой стороны окна расположен список главных таблиц. Следует выбрать таблицу FLAT, связанную с подчиненной таблицей TPHONE. При этом поле Adr, являющееся первичным ключом главной таблицы FLAT, появится в графе Parent’s Key. С левой стороны окна расположен список атрибутов подчиненной таблицы TPHONE. Из этого списка нужно выбрать атрибут Adr, являющийся внешним ключом. Чтобы изменение значения первичного ключа вызывало автоматическое изменение соответствующих значений внешнего ключа, следует установить признак Cascade в области Update Rule. Чтобы запретить изменение значения первичного ключа при наличии соответствующих значений внешнего ключа в подчиненной таблице, устанавливается признак Prohibit.

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

С

Рис.10. Структура таблицы PERSON

труктура таблицы PERSON описывается в соответствии со схемой БД (см. табл.2) и с учетом наличия в этой таблице внешнего ключа (см. табл.4). Для всех атрибутов, кроме Nom, устанавливается признак Required Field, а атрибут Nom отмечается как первичный ключ (рис.10). Внешний ключ описывается тем же способом, что и для таблицы TPHONE. В качестве имени ограничения ссылочной целостности для таблицы PERSON следует задать FLATAdr.

С

Рис.11. Структура таблицы HAVE_D

труктура таблицы HAVE_D описывается в соответствии со схемой БД (см. табл.2) и с учетом наличия в этой таблице двух внешних ключей (см. табл.4). Для атрибутов Nom и Id устанавливается признак Required Field, и они отмечаются звездочкой как принадлежащие первичному ключу (рис.11). Атрибут Nom описывается как внешний ключ, связанный с одноименным первичным ключом таблицы PERSON. Соответствующее ограничение ссылочной целостности обозначается именем PERSONNom. Атрибут Id описывается как внешний ключ, связанный с одноименным первичным ключом таблицы PROFIT. Соответствующее ограничение ссылочной целостности обозначается именем PROFITId.

После описания структуры таблиц можно проверить правильность установленных связей главных таблиц с подчиненными таблицами (см. рис.3). Для этого нужно командой Utilities | Info Structure вызвать окно, отображающее структуру одной из главных таблиц FLAT, PERSON, PROFIT, и выбрать свойство Dependent Tables (зависимые таблицы) из списка Table Properties. При этом справа появится список подчиненных таблиц. На рис.12 видно, что главной таблице FLAT подчинены таблицы PERSON и TPHONE. После проверки связей таблиц окно закрывается нажатием кнопки Done.

С

Рис.12. Связь главной таблицы FLAT с подчиненными таблицами

труктуру таблицы при необходимости можно изменить командой Utilities | Restructure. Например, чтобы создать вторичный индекс по атрибуту FIO для существующей таблицы PERSON, нужно выбрать ее имя из списка, нажать кнопку OK и после появления окна со структурой таблицы PERSON выбрать свойство таблицы Secondary Indexes и нажать кнопку Define. В появившемся окне из списка Fields следует выбрать атрибут FIO и нажать кнопку со стрелкой вправо (рис.13). Необходимо также пометить крестиком режимы индекса Maintained и Case Sensitive в области Index Options. Эти режимы задают обновление индекса при изменении данных в таблице PERSON и сортировку индекса с учетом регистра букв в значении атрибута FIO. После нажатия кнопки OK следует ввести имя вторичного индекса PERSON03_FIO и нажать кнопку OK. (Имя означает, что индекс принадлежит таблице PERSON, является третьим по счету для этой таблицы, индексным ключом служит атрибут FIO.)

В правой части появившегося окна со структурой таблицы PERSON отображается список из двух имен вторичных индексов (рис.14). Вторичный индекс Adr был создан автоматически при объявлении поля Adr таблицы PERSON внешним ключом, когда задавалось ограничение ссылочной целостности FLATAdr для таблицы PERSON. Таким образом, таблица PERSON имеет три индекса: первичный индекс с индексным ключом Nom и два вторичных индекса Adr и PERSON03_FIO.

Д

Рис.13. Создание вторичного индекса по атрибуту FIO для таблицы PERSON

ля сохранения измененной структуры таблицы необходимо нажать кнопку Save.

После создания БД следует завершить работу с утилитой DBD командой File | Exit. Ввод информации в БД будет осуществляться средствами разрабатываемой информационной системы.

Соседние файлы в папке version3