Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СРС_проект_ИС.doc
Скачиваний:
18
Добавлен:
11.08.2019
Размер:
3.38 Mб
Скачать

3.2. Создание структуры таблиц базы данных

Создание таблиц файл-серверных БД осуществляется с помощью утилиты Database Desktop (DBD), входящей в комплект поставки Delphi. Утилита обеспечивает создание, просмотр и модификацию таблиц БД различных форматов (Paradox, dBASE, Microsoft Access). Кроме того, утилита позволяет выполнять выборку информации путем создания запросов.

У тилита DBD запускается с помощью команды Пуск > Программы > Borland Delphi 7 > Database Desktop (при работе в среде Delphi для запуска используется команда Tools > Database Desktop главного меню). Необходимо настроить рабочий каталог – выбрать команду File > Working Directory и установить в появившемся окне ссылку на каталог С:\ Sale \ Data (рис. 10).

Рис. 10. Установка рабочего каталога

Д ля создания таблицы IZDELIE следует выбрать команду File > New > Table. DBD откроет окно Create Table, в котором можно выбрать тип таблицы. Щелчком на кнопке ОК согласимся с вариантом Paradox 7, предложенным по умолчанию. На экране появится окно Create Paradox 7 Table (рис. 11).

Рис. 11. Структура полей таблицы IZDELIE

Каждому полю создаваемой таблицы соответствует одна запись в таблице Field roster окна: в колонку Field Name нужно поместить имя поля, в колонку Type – символ, определяющий тип хранимых в поле данных, в колонку Size – число, определяющее длину поля (требуется не для всех типов полей), в колонку Key – символ звездочки (*), если по значениям этого поля нужно построить первичный ключ.

Введем название первого поля IKod (первый символ названия поля для таблиц Paradox всегда прописной), нажмем клавишу табуляции для перехода к следующей колонке. Нажмем клавишу пробела, чтобы утилита DBD показала список возможных типов, и выберем тип Alpha. В поле Size укажем длину поля – 4. После выбора черный прямоугольник появится в колонке Key. Нажмем клавишу «пробел», чтобы создать по полю первичный ключ.

Продолжим ввод полей таблицы IZDELIE. Для полей INaim и IEdin также выберем тип Alpha, для поля ICena – тип Money. В окне определения структуры таблицы щелкнем кнопку Save as и затем укажем имя файла – Izdelie. Руководствуясь описанием полей физической модели (рис. 7), можно создать остальные таблицы демонстрационной БД.

3.3. Свойства таблиц Paradox

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

  • автоматически следить за правильностью вводимых в поля данных (пункт Validity Checks в списке Table properties);

  • выбирать данные из другой таблицы (Lookup Table);

  • строить вторичные индексы, в том числе составные (Secondary Indexes);

  • следить за ссылочной целостностью (Referential Integrity);

  • защищать таблицу от несанкционированного доступа (Password Security);

  • выбирать языковый драйвер (Table Language).

В табл. 16 представлены типы полей, используемых в таблицах Paradox.

По умолчанию после открытия окна редактирования структуры таблицы в списке Table properties выбран пункт Validity Checks, что позволяет контролировать содержимое полей.

С помощью флажка Required Field можно потребовать обязательного заполнения поля при вводе новой записи – за этим будет следить BDE.

На BDE можно возложить контроль за минимальным и максимальным значениями числового поля (строки Minimum Value и Maximum Value).

В строке Default Value можно задать значение поля по умолчанию.

С помощью строки Picture можно задать шаблон для автоматического форматирования значения поля. Например, если задан шаблон (###)### - #### и в поле введена строка 9151653939, она будет автоматически преобразована к виду (915)165-3939.

Для какого-либо поля таблицы иногда требуется установить однозначную связь с полем другой таблицы. В этом случае BDE 6удет следить за тем, чтобы значение вводимой записи в поле первой таблицы было бы одним из значений указанного поля в другой таблице, которая в этом случае называется таблицей подстановки.

Например, в нашей БД поле NZKod таблицы NAKLAD должно содержать ссылку на код заказчика в таблице ZAKAZCIK. Если с помощью DBD установить связь между этим полем и полем ZKod таблицы ZAKAZCIK, при вводе или редактировании таблицы NAKLAD BDE будет отвергать любые значения, которые не совпадают с одним из значений поля ZKod таблицы подстановки ZAKAZCIK.

Таблица 16

Type

Size

Описание

Alpha

Number

Money

Short

Long Integer

ВСD

Date

Time

Timestamp

Memo

Formatted Memo

Graphic

OLE

Logical

Autoincre-ment

Binary

Bytes

1-255

0-32

1-240

0-240

0-240

0-240

0-240

1-255

Текстовое поле указанной длины

Числа с плавающей запятой в диапазоне от –10307 до +10307 с 15 значащими десятичными разрядами

Денежное поле. Содержит вещественные числа с фиксированной запятой, 6 знаками целой части и 2 знаками дробной

Целые числа в диапазоне от –32 768 до +32 768

Целые числа в диапазоне от –2 147 483 648 до +2 147 483 647

Двоично-десятичные вещественные числа. Size – количество разрядов после запятой

Дата в диапазоне от 1.01.0000 до 31.12.9999

Время с точностью до миллисекунд

Дата и время

Мемо-поле для размещения произвольных текстовых cтрок неограниченной длины. Первые Size символов хранятся в основной таблице, остальные – в файле с расширением .MB

Мемо-поле для размещения форматированного текста в формате RTF

Графическое изображение в формате BMP. Size байтов хранится в основной таблице, остальные – в отдельном файле

Объект OLE

Логическое поле. Содержит значение Тrue или False

Автоинкрементное поле

Набор байтов произвольной длины. Первые Size байтов хранятся в основной таблице, остальные – в отдельном файле

Набор из Size байтов (целиком хранится в таблице)

Для установления связи нужно выбрать пункт Table Lookup в списке Table properties и щелкнуть на кнопке Define. В появившемся окне Table Lookup (рис. 12) в списке Fields выбирается поле, за значениями которого нужно следить, и щелчком на кнопке со стрелкой вправо имя этого поля переносится в строку Field name. Затем в списке Lookup table выбирается нужная таблица и щелчком на кнопке со стрелкой влево имя первичного ключевого поля этой таблицы переносится в строку Lookup field.

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

Назначение переключателей:

  • Just current field – проверяется соответствие только связанных полей;

  • All corresponding fields – проверяется соответствие всех полей обеих таблиц (в этом случае структуры обеих таблиц должны быть идентичными);

  • Fill no help – при редактировании проверяемого поля таблица подстановки не показывается;

  • H elp and fill – если при редактировании проверяемого поля нажать клавиши Ctrl+Пробел, таблица подстановки будет показана в отдельном окне.

Рис. 12. Установление связи с таблицей подстановки

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

Рис. 13. Определение вторичного индексного поля

Определим вторичный индекс в таблице NAKLAD по полю NData. Для этого раскроем список Table Properties, выберем пункт Secondary Indexes и щелкнем на появившейся кнопке Define. В окне Define Secondary Index (рис. 13) в списке полей таблицы выделим щелчком поле NData и щелкнем на кнопке со стрелкой вправо, чтобы перенести поле в список Indexed fields. Таким способом можно перенести несколько полей (составной вторичный индекс).

С помощью флажков группы Index options можно определить следующие особенности индекса:

  • Unique – индекс будет содержать уникальные значения;

  • Maintained – индексные поля сортируются по возрастанию значений;

  • Case sensitive – индекс чувствителен к регистру букв в текстовых полях;

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

При щелчке на кнопке ОК DBD запросит имя индекса (в таблицах Paradox, как и в большинстве серверов БД индексы именуются). Введем строку Data_Naklad и щелкнем на кнопке ОК.

Ссылочная целостность – это особый механизм, способствующий поддержанию непротиворечивых сведений в связанных таблицах БД. Таблица NAKLAD содержит данные о накладных, а таблица SNAKL – о строках этих накладных. Перед удалением данных о накладной нужно предварительно удалить связанный с ней список строк, иначе таблица SNAKL будет содержать записи о «ничейных» строках. Если таблицы связаны механизмом ссылочной целостности, BDE будет блокировать попытки изменения поля связи в родительской таблице, пока не изменены связанные с ним записи в дочерней таблице.

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

Д ля установления ссылочной целостности нужно выбрать пункт Referential Integrity в списке Table properties и щелкнуть на кнопке Define. Откроется окно Referential Integrity, показанное на рис. 14.

Рис.14. Установление ссылочной целостности

В списке Fields выбирается поле связи редактируемой таблицы (она должна быть дочерней), а в списке Table – нужная родительская таблица. После щелчков на кнопках со стрелками имена полей связи переносятся в строки Child fields и Parents fields. Далее нужно щелкнуть на кнопке ОК. BDE запросит имя вновь создаваемой ссылочной целостности, а затем создаст ее.

С помощью переключателей в группе Update rule определяются правила поддержания ссылочной целостности:

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

  • CascadeBDE автоматически производит каскадные изменения в дочерней таблице при изменениях родительской таблицы.

Любая таблица Paradox может быть полностью или частично защищена от несанкционированного доступа. Для этого в списке Table properties выбирается пункт Password Security и щелчком на кнопке Define открывается диалоговое окно Password Security (рис. 15).

Р ис. 15. Окно определения пароля

Пароль может содержать от 1 до 15 любых символов, в том числе и пробелы. Он чувствителен к регистру букв. С помощью кнопки Auxiliary Passwords вызывается дополнительное окно, в котором можно уточнить, какие поля и как защищаются.

Е сли таблица имеет текстовые поля, для нее нужно указать языковый драйвер. Для этого в списке Table properties выбирается пункт Table Language и щелчком на кнопке Define открывается диалоговое окно Table Language (рис. 16).

Рис. 16. Окно выбора языкового драйвера

Для правильного отображения русскоязычного текста следует выбирать драйвер Pdox ANSI Cyrillic или Paradox Суrr 866. Первый использует кодовую страницу 1251 для Windows, второй – страницу 866 для MS-DOS.

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