Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторные работы по Delphi

.pdf
Скачиваний:
62
Добавлен:
05.06.2015
Размер:
768.49 Кб
Скачать

Министерство образования Российской Федерации Ульяновский государственный технический университет

ПРОЕКТИРОВАНИЕ БАЗ ДАННЫХ

В СРЕДЕ DELPHI

Компьютерный методический материал к лабораторным работам

Составитель Л.С. Блюдина

Ульяновск 2001

УДК 681.3 (076)

ББК 73я7

П79

Рецензент декан РТФ УлГТУ, кандидат технических наук, доцент В.Н. Рогов. Одобрено секцией методических пособий научно-методического cовета университета.

Проектирование баз данных в среде

Delphi:

Компьтерный

методический материал к лабораторным работам /

Сост.

Л.С. Блюдина.-

Ульяновск: УлГТУ, 2001.-77 c.

 

 

 

Cборник содержит методические указания

к

выполнению шести

лабораторных работ по проектированию баз данных. Инструментальной

средой для проектирования является

современная

СУБД Delphi.

Методические

указания

содержат

обучающие

фрагменты и

индивидуальные

задания,

выполнение

которых позволит ускорить

усвоение материала.

 

 

 

Предназначены для студентов специальностей 522800

и 522300, а также

могут использоваться на других специальностях.

 

УДК 681.39(76)

ББК 73я7 © Ульяновский государственный

технический университет, 2001

Лабораторная работа № 1 Проектирование базы данных и редактирование данных

Проектирование БД

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

Основным назначением программы DBD 7.0 при работе с таблицами является создание и модификация их структуры. Можно также заполнять таблицу данными, но, как правило, для этого используются приложения, созданные в DELPHI.

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

Структура полей

1) Наименования полей:

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

Field Name - столбец содержит название поля таблицы БД.

Туре - тип данного поля. Он определяется символом, соответствующим конкретному типу данных.

Size - размер поля в байтах, если тип данных требует задания размера (например, для строк).

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

Правила именования полей для таблиц формата Paradox следующие:

длина имени поля не может быть более 25 символов;

нельзя, чтобы первым символом в имени был пробел, хотя использовать пробелы в имени можно;

каждое имя поля должно быть уникально (строчные и прописные буквы эквивалентны);

нельзя использовать символы: , (запятая), | (вертикальная линия) и ! (восклицательный знак);

нельзя применять ключевые слова, используемые в SQL-запросах,

например SELECT и COUNT.

2) Типы данных:

Для определения типов полей, т. е. типов данных, которые могут находиться в этих полях, используются следующие символы, определяющие соответствующие типы полей:

A (Alpha) - определяет строку с фиксированным количеством символов от 1

до 255;

N (Number) - определяет положительное или отрицательное вещественное число из диапазона -10(^307) до 10(^308) с точностью до 15 знаков; в число может входить знак + (плюс) или - (минус), цифры и десятичный знак (точка или запятая);

$ (Money) - определяет денежный формат поля, который похож на формат (Number), но при выводе данных ограничивает число десятичных знаков и отображает символ валюты;

S (Short) - определяет целое число из диапазона от -32767 до 32767;

I (Long Integer) - определяет целое число из диапазона от -2147483648 до

2147483647;

# (BCD) - определяет вещественное число с точностью от 0 до 32 знаков после запятой;

D (Date) - определяет дату с 1 января 9999 года до н. э. до 31 декабря 9999 года н. э.;

T (Time) - определяет время с точностью до миллисекунд, ограниченное 24 часами;

@ (Timestamp) - определяет хранение одновременно и даты, и времени;

M (Memo) - определяет текст произвольной длины, первые символы которого (от 1 до 240) хранятся в БД;

F (Formatted Memo) - определяет текст произвольной длины с оформлением, первые символы которого (от 0 до 240) хранятся в таблице БД; G (Graphic) - определяет хранение графического изображения в формате

BMP;

O (OLE) - определяет хранение OLE - объекта;

L (Logical) - определяет значение логического типа, по умолчанию можно использовать значения True и False;

+ (Autoincrement) - определяет поле счетчика (аналогично Long Integer, но только для чтения), значение которого автоматически увеличивается на единицу при переходе к новой записи;

B (Binary) - определяет поле произвольной длины, в котором информация хранится в двоичном виде; DBD 7.0 этот формат не отображает;

Y (Bytes) - определяет поле произвольной длины, в котором информация хранится в виде байтов; DBD 7.0 этот формат не отображает.

3) Модификация структуры таблицы:

Для добавления нового поля в структуру таблицы следует, находясь в последнем столбце последней строки таблицы, нажать клавиши Enter либо Tab. После этого в таблице полей БД добавится внизу новая строка. Тип у

всех полей должен быть обязательно определен перед сохранением таблицы БД. Если требуется вставить новое поле между существующими, нужно перейти на строку, содержащую описание поля, перед которым будет вставлено новое. Затем нажать клавишу Insert.

При удалении поля из структуры следует нажать клавиши Ctrl-Del. При этом надо соблюдать осторожность, т. к. данные из удаляемого поля будут потеряны.

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

4)Определение характеристик таблицы:

Вправой части окна находятся описания характеристик таблицы.

Переход от описания полей к части описания характеристик таблицы осуществляется нажатием клавиши F4 или с помощью мыши. Обратный переход осуществляется с помощью мыши или клавиш Shift+Tab. Характеристики таблиц приведены в выпадающем списке, находящемся в правой верхней части окна.

Validity Checks (Проверка ввода значений)

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

1. Required Field (Обязательное поле). Данный выключатель определяет, обязательно ли нужно вводить значение в поле. Этот выключатель необходимо включать для ключевого поля.

2.Minimum Value (Минимальное значение). Величина, находящаяся в этой строке ввода, определяет минимально допустимое значение в выбранном поле таблицы.

3.Maximum Value (Максимальное значение). Величина, находящаяся в этой строке ввода, определяет максимально допустимое значение в выбранном поле таблицы.

4.Default Value (Значение по умолчанию). Определенное в этой строке ввода значение устанавливается в поле при создании новой записи в таблице.

5.Picture (Шаблон). В данной строке ввода определяется, какие символы могут быть введены в текущее поле. Это условие описывается в виде строки, состоящей из некоторого множества символов. Для удобства ввода и проверки шаблона можно воспользоваться диалоговым окном, которое вызывается при нажатии кнопки Assist (Помощник).

Table Lookup (Таблица - справочник)

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

Secondary Indexes (Вторичные индексы)

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

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

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

Password Security (Защита паролем)

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

Table Language (Язык таблицы)

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

Dependent Table (Зависимые таблицы)

После выбора этой характеристики появляется список всех таблиц, для которых редактируемая таблица является основной. Эта связь задается при определении характеристики Referential Integraty (Ссылочная целостность).

Корректировка таблиц в DBD 7.0

Корректировку с помощью отображенной таблицы выполнять нельзя. Необходимо выполнить команду главного меню Table|Restructure, с помощью

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

Индексирование

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

Индекс, построенный на основе ключа, называется первичным индексом, и соответствующий ему индексный файл создается автоматически. Но в этом случае имеется ряд ограничений: во-первых, ключевые поля обязательно должны стоять в начале записи, что ограничивает возможность выбора; во-вторых, у двух любых записей БД ключи должны быть различны.

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

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

Пример 1. Создание базы данных «Телефонная книжка» и ее индексирование

Рассмотрим задачу создания БД на примере простой электронной телефонной книжки. Для каждого человека записывается его фамилия, имя, отчество, дата рождения, пол, домашний и рабочий телефоны.

Для хранения информации о человеке будем использовать таблицу с именем People.

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

Ключ

Имя поля

Тип

Размер,

Дополнительно

Описание

 

 

 

байт

 

 

#

IDPeople

Счетчик

 

Обязательное,

Идентификатор

 

 

 

 

ключевое

записи

 

Family

Строка

30

Обязательное

Фамилия

 

Name

Строка

15

 

Имя

 

SecName

Строка

15

 

Отчество

 

Birthday

Дата

 

 

День рождения

 

Sex

Логическо

 

Обязательное

Пол

 

 

е

 

 

 

 

Notes

Memo

100

 

Комментарий

В этой таблице было искусственно добавлено поле IDPeople, которое является ключом.

Если бы один человек имел один телефон, можно было бы обойтись одной таблицей People, добавив к ее полям поле Tel. Но человек может иметь несколько телефонов, причем как домашних, так и рабочих. Если использовать одну таблицу, информация о человеке должна повторяться столько же раз, сколько у него номеров телефонов. Это вносит весьма большую избыточность, а кроме того, может повлечь за собой много ошибок при вводе однообразной информации. Поэтому для хранения информации о телефоне используется отдельная таблица с именем Tel, которая связана с таблицей People.

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

Ключ

Имя поля

Тип

Размер,

Дополнительн

Описание

 

 

 

байт

о

 

#

IDTel

Счетчи

 

Ключевое

Идентификатор записи

 

 

к

 

 

 

 

IDPeople

Число

4

Обязательно

Идентификатор человека

 

 

 

 

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

 

 

 

 

 

ое

 

 

Number

Строка

9

Обязательно

Номер телефона

 

TypeTel

Строка

4

 

Тип телефона

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

Таким образом, структура БД «Телефонная книжка» состоит из двух связанных таблиц People и Tel. Таблица People является основной, а взаимосвязь устанавливается с помощью полей IDPeople в этих таблицах.

Приступим непосредственно к созданию нашей БД:

1. Запустите программу DataBase Desktop 7.0. Задайте команду меню File|New|Table. В результате появится окно Create Table со значением в списке форматов таблицы Paradox 7.0. Так как создавать таблицы будем в формате Paradox 7, нажмите кнопку ОК в этом окне. В результате появится окно Create Paradox 7 Table (Untitled), в котором будет определяться структура таблицы. Вначале создайте таблицу People.

2. Задайте поля таблицы

2.1. Введите в первой записи описания структуры, в столбце Field Name, значение IDPeople и нажмите клавишу Тab для перехода к следующему столбцу.

2.2.Далее в столбце Type нажмите клавишу пробела и выберите из списка значение +(Autoincrement), затем нажмите клавишу Tab для перехода к следующему столбцу.

2.3.В следующем столбце Key нажмите клавишу пробела для указания, что данное поле ключевое (в столбце Key появится звездочка).

2.4.Включите с помощью мыши выключатель Required field (Обязательное поле), а затем выберите мышью поле Key в последней записи и нажмите клавишу Tab для перехода к следующей строке, описывающей новое поле таблицы БД.

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

этом соответствующий тип; только для полей Family, Name, SecName и Notes в столбце Size укажите соответствующий размер, а выключатель Required field включите только для полей Family и Sex. Следует отметить, что все оставшиеся поля не будут ключевыми, а следовательно и поле Key для них не будет активным. Для поля Birthday установите параметр Picture (Шаблон) следующим образом. Для удобства ввода и проверки шаблона воспользуемся окном, которое вызывается при нажатии кнопки Assist (Помощник). Здесь в строке Picture (Шаблон) вводится текст шаблона, правильность которого можно проверить кнопкой Verify Sintax (Проверка синтаксиса), а в строку Sample Value (Пример значения) вводится значение для проверки соответствия введенному шаблону. Тест осуществляется кнопкой Test Value (Проверка значения), после нажатия которой можно увидеть результат проверки в виде сообщения в рамке сообщений. Выберите шаблон

#[#]:#[#]:#[#] {AM,PM};, #[#]/#[#]/#[#] - время, дата - из выпадающего списка

Sample Picture (Примеры шаблонов) и нажмите кнопку Use. Теперь в строке ввода Picture в появившемся шаблоне удалите все, кроме #[#]/#[#]/#[#], т. к. нам нужна только дата. Нажмите кнопку ОК.

3. Сохраните таблицу под именем People.db на диске при помощи кнопки Save As, далее вам нужно будет активизировать выключатель Display Table (Показать таблицу) из группы Options для того, чтобы после сохранения новая таблица была отображена на экране для работы с данными в ней.

4.Открытая таблица позволяет лишь просматривать данные. Выберите команду меню Table|Edit Data или нажмите клавишу F9. Теперь введите несколько записей и запишите таблицу. Перемещаться по полям можно с помощью мыши, клавиш стрелок и клавиши Tab.

5.Создайте теперь таблицу Tel. Для этого выполните действия аналогичные действиям, которые выполнялись при создании таблицы People, вводя соответствующие таблице Tel поля, за одним лишь исключением - здесь необходимо создать вторичный индекс по полю IDPeople, который создается следующим образом:

5.1. Выберите в выпадающем списке Table Properties свойство

Secondary Indexes.

5.2.Нажмите появившуюся кнопку Define.

5.3.В окне Define Secondary Index в списке Field выберите значение IDPeople, затем нажмите кнопку со стрелкой вправо рядом со списком, после чего нажмите кнопку ОК.

5.4.В появившемся окне Save Index As введите в строку ввода IDPeopleIndex и нажмите кнопку ОК.

6.Сохраните таблицу под именем Tel.db.

7.Установите взаимосвязь между таблицами.

7.1. Задайте в качестве рабочей папки ту папку, в которой вы сохраняли создаваемые таблицы БД «Телефонная книжка». Для этого выполните команду главного меню File|Working Directory и в появившемся диалоговом окне выберите требуемую папку.

7.2. Откройте таблицу Tel.db.

7.4.Задайте команду Table|Restructure, в результате появится окно, аналогичное окну определения структуры таблицы.

7.5.Выберите в выпадающем списке Table Properties свойство

Referential Integrity.

7.6.Нажмите появившуюся кнопку Define.

7.7.В окне «Referential Integrity» из списка Field выберите значение IDPeople[I], затем нажмите кнопку со стрелкой вправо рядом со списком.

7.8.В списке Table выберите значение People, затем нажмите кнопку со стрелкой влево рядом со списком. В центре окна будет схематично изображена взаимосвязь таблиц. Нажмите кнопку ОК в окне

«Referential Integrity».

7.10.В окне «Save Referential Integrity As» в строку введите имя соединения PeoplesTel, а затем нажмите кнопку ОК. В результате в списке, находящемся в правой части окна определения структуры таблицы, появится введенное имя.

7.11.В окне определения структуры таблицы нажмите кнопку Save.

8.Введите в таблицу несколько записей, используя команду меню Table|Edit Data.

9.Задайте команду главного меню File|Close для закрытия таблицы Tel.db.

Пример 2. Редактирование содержимого таблиц БД «Телефонная книжка»

1. Откройте файл People.db.

2.Выберите из меню команды Table опцию Edit Data. Теперь данные можно редактировать.

3.Активизируйте любую запись в таблице и откорректируйте или измените ее.

4.Откорректируйте подобным образом несколько записей.