Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
база данных.docx
Скачиваний:
167
Добавлен:
24.03.2015
Размер:
5.83 Mб
Скачать

11.7. Создание таблиц базы данных

Работа по созданию инфсрмацш лшой системы включает два основных этапа: создание БД и создание приложения. Продемонстрируем возможнос­ти С+ + Builder по работе с БД на примере создания простой информацион­ной системы. Эту информационную систему можно разработа гь даже без на­писания кода: все необходимые операции выполняются с помощью программы Database Desktop. Коне грукюра формы и Инспектора объектов.

В простейшем с.лучае БД состоит из одной таблицы. Если таблицы уже имеются, то перьый этап не выполняется. От метим, что совместно с С++ Builder постав, шется большое количество примеров приложений, в том чис­ле и приложений БД. Фай иы таблиц для этих приложений находятся в ката­логе c:\Program Files\Common Files\Borland Shared\Data. Готозые таб лицы также можно использовать для своих приложений.

Для работы с таб лицами БД при проектировании приложения удобно ис­пользовать программу Database Desktop, которая позволяет:

  • создават ь таблицы;

  • изменять структуры;

  • редактировать записи.

Кроме гого. с помощью Database Desktop можно выполнять и другие дей­ствия над БД (создание, редактирование и выполнение визуальных и SQL- запросов. операции с псев донимами). Отметим, что большинство рассматри­ваемых действий по управлению структурой таблш 1,ы можно выполнить также программно.

Процесс создания новой таблицы начинается с вызова команды File\New\Table (Файл\Новая\Табпица) и происходит в интерактивном ре­жиме. При этом разработчик должен:

  • выбрать формат (тип) таблицы;

  • задать структуру таблицы.

В нача те создания новой таблицы в окне Create Table (Создание таблицы) выбирается ее формат. По умолчанию предлагается формат таблицы Paradox версии 7, который мы и будем использовать. Для таблиц других форматов, на­пример dBase IV, действия по со щанию таблицы практичен Ки не отличаются.

После выбора формата таблицы появляется окно определения структуры габлицы (рис. 11.19), в котором выполняются следующие действия:

Field Name

Type

Size

Key

щ

Code

+

*

2

Number

S

3

Fio

A

12

4

Address

A

15

held roster

"3

TabL gioper',. . | Secondary Indexes

? 3§йКёГ~1| Motffj (

Erase j

Г Pari Table

Save | Savers, j Cancel j Help j Рис. 11.19. Определение структуры таблицы

  • описание полей;

  • задание ключа;

  • задание индексов;

  • определение ограничений на значения полей;

  • определение условий (ограничений) ссылочной целостности;

  • задание паролей;

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

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

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

После определения структуры таблицы ее необходимо сохранить, нажав кнопку Save As и укагав расположение таблицы на диске и ее имя. В резуль­тате на диск записывается новая таблица, первоначально пустая, при этом все необходимы,0 файлы создаются автомат ическь.

Описание полей

Центральной частью окна определения структуры таблицы является спи­сок Field roster (Список полей), в котором указываются поля таблицы. Для каждого поля задаются:

  • имя поля - в столбце Field Name;

  • тип поля - в столбце Туре;

  • размер поля — в столбце Size.

Имя поля вводится по правилам, установленным для выбранного форма­та таблиц.

Тип поля можно задать, непосредственно указав соответствующий сим­вол, например. А для символьного или I для целочисленного поля, или выб­рать его в списке, раскрываемом нажатием клавиши <пробел> или щелчком правой кнопки мыши в столбце Туре. Список содержит все типы полей, до­пустимые для заданного формата таблицы. В списке подчеркнуты символы, используемые для обозначения соответствующего типа, при выборе типа эти символы автоматически заносятся в столбец Туре.

Размер поля задается не всегда, необходимость его указания зависит от типа поля. Для полей определенного типа, например, автоинкрементного (+) или целочисленного (I), размер поля не задается. Для поля строкового типа размер определяет максимальное число символов, которые могут храниться в поле.

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

Ключ создается указанием его полей. Для указания ключевых полей в стол­бце ключа (Key) нужно установить символ *, переведя в эту позицию курсор и нажав глобую алфавитно-цифровую клавишу. При повторном нажатии кла­виши отметка принадлежности поля ключу снимается. В структуре таблицы ключевые поля должны быть первыми, т. е. верхними в списке полей. Часто для ключа используют автоинкрементное поле (см. рис. 11.19).

Напомним, что для таблиц Paradox ключ также называют первичным ин­дексом (Primary Index), а для таблиц dBase ключ не создается, и его роль вы­полняет один из индексов.

Для выполнения остальных действий по определению структуры табли­цы используется комбинированный список Table propel ties (Свойства таб­лицы), содержащий следующие пункты:

  • Validity Checks (проверка правильности ввода значений полей) — вы­бирается по умолчанию;

  • Table Lookup (таблица выбора);

« Secondary Indexes (вторичные индексы);

  • Referential Integrity (ссылочная целостность):

  • Password Security (пароли);

  • Table Language (я?ык таблицы, языковой драйвер);

  • Dependent Tables (подчиненные таблицы).

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

Состав данного списка зависит от формат а таблицы. Так, для таблицы dBase он содержит только пункты Indexes и Table I anguage

Задание индексов

Задание индекса сводится к определению:

  • состава полей;

  • парам< тров;

  • имени.

Эти элементы устанавливаются и ди изменяются при выполнении опера ций создания, изменения и удаления индекса. Напомним, что для таблиц Paradox индекс называют также вторичным индексом.

Для выполнения операций, связанных с задан1 ipm индексов, необходимо выбрать пункт Secondary Indexes (Вторичные индексы) списка Table properties (Свойства таблицы), при этом под списком появляются кнопки Define (Определить) и Moaify (Изменить), список индексов и кнопка Ьгаье

(Удалить^. В списке индексов выводятся имена созданных индексов, на рис. 11.19 это индекс incM.

Создание нового индекса начинается с нажатия кнопки Define, которая всегда доступна. Она открывает окно Define Secondary Index (Задание вто­ричного индекса), в котором вдаются состав полей и параметры индекса (рис. 11.20).

В списке Fields окна выводятся имена всех полей таблицы, включая и те, которые недопуст имы в составе индекса, например, графическое ноле или поле комментария. В списке Indexed fields (Индексные поля) содержатся поля, которые включаются в состав создава< мого индекса. Перемещение полей меж­ду списками выполняется выделением нужного поля ( повей) и нажатием рас­положенных между этими списками кнопок с изображением горизонтальных стрелок. Имена полей, которые нельзя включать д состав индекса, выделяют­ся в левом списке серым цветом. Поле не может быть повторно включено в состав индекса, если оно уже выбрано и находится в нравов списке.

Замечание.

m

Fields

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

Define Secondary Index

Indexed fields

Code Number

±1

21

Change ordei ij

11 idex options -

Unique P Mai itemed

Cace sensitive Descending

Help

OK

Cancel

14 Зак 174

Рис. 11.20. Окно задания индекса

Изменить порядок следование полей в индексе можно с помощью кнопок с изображением вертикальных стрелок, имеющих общее название Change order (Изменить порядок). Для перемещения поля (полей) необходимо его (их) выделить и нажать нужную кнопку.

Флажки, расположенные в нижн< й части окна задания индекса, по: юоля- ют указать следующие параметры индекса:

  • Unique — индекс требует для состав ляютцих его полей уникальных зна­чений;

  • Maintained - задается автоматическое обслуживание индекса;

  • Case sensit.ve — для полей строкового типа учит ывает< я регистр сим­волов;

  • Descending — сортировка выполняется в порядке убывания значений.

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

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

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

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

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

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

Задание ограничений на значения полей

Задание ог раничений на значения полей заключается в указании для по­лей:

  • требования обязательного ввода значения;

  • минимального значения;

  • максимального значения;

  • значения по умолчанию;

  • маски ввода.

Установ. [енные ограничения задают ся на физическом уровне (уровне таб­лицы) и действуют для любых программ, выполняющих операции с табли­цей: как для программ типа Database Desktop, так и для приложений, созда­ваемых в С++ Builder. Дополнительно к этим ограничениям или вмес го них в приложении можно задат ь программные ограничении.

Для выполнения операций, связанных с заданием ограничений на значе­ния полей, нужно выбрать пункт Validity Checks (Проверка значений) ком­бинированного списка Table propel ties (см. рис. 11.19).

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

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

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

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

Для выполнения операций, связанных с заданием ссылочной целостнос­ти, необходимо выбрать пункт Heferential Integrity комбинированного спис­ка Table properties (см. рис. 11.19).

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

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

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

Для выполнения операций, связанных с заданьем паро 1я. нужно выбрать строку Password Security в комбинированном списке Table proper ties окна определения структуры таблицы (см. рис. 11.19).

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

Для задания языкового драйвера нужно выбрать пункт Table Language (Язык таблицы) комбинированного списка Table properties окна определе­ния структуры таблицы (см. рис. 11.19).

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

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

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

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

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