Лабораторная работа №2
Создание базы данных.
Для создания базы данных в Visual FoxPro можно использовать мастера по созданию базы данных или создавать базу данных в интерактивном режиме с помощью конструктора базы данных. Конструктор базы данных позволяет создавать и модифицировать таблицы, входящие в базу данных, определять для них индексы. Можно устанавливать отношения между таблицами, которые будут поддерживаться при создании форм и отчетов. Все описание структуры базы храниться в словаре базы данных, который представляет собой совокупность системных таблиц.
Создание базы данных в конструкторе проектов
Для создания базы данных в конструкторе проектов необходимо выполнить следующее:
1. Выбрать вкладку «Data» окна конструктора проектов.
2. Установить курсор мыши на значение Database и нажать кнопку New.
3. В открывшемся окне диалога «New database» нажать кнопку New database.
4. В поле Enter окна диалога «Create» нужно задать имя создаваемой базы данных, убедившись, что в поле Тип файла установлен тип сохраняемого файла «Database», а в поле Папка правильно выбран каталог, в котором следует расположить базу данных.
5. После нажатия кнопки Сохранить, и на экране откроется окно конструктора базы данных (рис 1), в котором можно создавать новые таблицы, входящие в базы данных, а также изменять структуру и индексы существующих таблиц.
Рис 1.Окно конструктора базы данных
Для создания новых таблиц и модификации существующих можно использовать:
· Команды меню Database (табл.1)
· Команды контекстного меню
· Панель инструментов конструктора базы данных «Database Designer»
Команды |
Назначение |
New Table |
Создает новую таблицу |
Add Table |
Добавляет таблицу в базу данных |
New Remote View |
Создает удаленное представление данных |
New Local View |
Создает локальное представление данных |
Modify |
Модифицирует таблицу |
Browse |
Показывает таблицу в режиме Browse |
Remove |
Удаляет таблицу из базы данных |
Find Object |
Находит указанный вами объект в окне конструктора |
Rebuild Table Indexes |
Перестраивает индексы |
Remove Delete Records |
Физически удаляет помеченные для удаления записи |
Edit Relationship |
Редактирует отношения между таблицами |
Edit Referential Integrity |
Определяет условия целостности данных |
Edit Stored Procedures |
Редактирует хранимую процедуру |
Connections |
Выводит на экран окно диалога «Connections»,в котором вы можете создавать или модифицировать соединения с удаленными данными |
Arrange |
Упорядочивает объекты по имени или типу и выравнивает их по горизонтали или вертикали |
Refresh |
Переводит окно конструктора базы данных |
Properties |
Выводит на экран окно диалога «Database Properties» |
Clean Up Database |
Очищает базу данных(файл с расширением .DBC) от помеченных для удаления объектов |
Таблица 1. Команды меню Database
При нажатии правой кнопки мыши на экране появляется контекстное меню конструктора базы данных, которое содержит наиболее часто используемые команды из меню Databаse, команду Help, а также команды для раскрытия уровней вложенности объектов в окне конструктора базы данных (Expand All) и их свертывания (Collapse All).
Рис 2. Панель инструментов «Databаse Designer».
Панель инструментов «Databаse Designer» содержит кнопки для выполнения наиболее часто используемых действий над базой данных (рис. 2.).Описание кнопок панели инструментов – в табл. 2.
Название |
Назначение |
New Table |
Создает новую таблицу |
Add Table |
Добавляет таблицу в базу данных |
Remove Table |
Удаляет таблицу из базы данных |
New Remote View |
Создает удаленное представление данных |
New Local View |
Создает локальное представление данных |
Modify Table |
Модифицирует таблицу |
Browse Table |
Показывает таблицу в режиме Browse |
Edit Stored Procedures |
Редактирует хранимую процедуру |
Connections |
Создает связь с удаленными данными |
Таблица 2. Панель инструментов «Databаse Designer».
Создание таблиц.
В Visual FoxPro существует несколько основных правил по заданию наименования таблицы:
· Наименование таблицы является именем одноименного файла, поэтому максимальное количество символов в наименовании таблицы определяется ограничениями используемой операционной системы.
· Наименование таблицы может содержать буквы, цифры и знак подчеркивания. Воздержитесь от использования специальных символов (%, !, @, &, $, # ).
· В наименовании таблицы недопустимо наличие пробелов.
· Каждая таблица в базе данных должна иметь уникальное имя.
Для создания таблицы из конструктора базы данных можно воспользоваться одним из следующих способов:
· Выбрать команду Database | New Table
· Выбрать команду New Table контекстного меню
· Нажать кнопку New Table на панели инструментов «Databаse Designer».
Рис.3 окно диалога «New Table»
Создание таблицы с помощью конструктора таблиц.
Можно перейти в конструктор таблиц из мастера по созданию таблицы или же непосредственно из окна диалога «New Table», нажав кнопку New Table и определив имя создаваемой таблицы в окне диалога «Create».в результате выполнения этих действий откроется окно диалога создания таблицы «Table Designer» (рис. 4).
Окно диалога «Table Designer» содержит три вкладки «Fields», «Indexes», «Table». На вкладке «Fields», которая является активной при открытии окна диалога, определяются поля таблицы. Вкладка «Indexes» служит для определения индексов таблицы. Вкладка «Table» – позволяет определять для таблицы условие достоверности вводимых данных и триггеры добавления, удаления и модификации данных.
Каждое поле таблицы характеризуется наименованием, типом и шириной поля. Для числовых полей дополнительно задается количество десятичных знаков. Кроме этих основных параметров, каждое поле обладает дополнительными свойствами, определяющими условия ввода данных. Есть возможность задать для каждого поля его краткое описание, которое может потребоваться при модификации таблицы в процессе создания приложения или его сопровождения. Наименование каждого из полей таблицы выбирается произвольно, но таким образом, чтобы отразить характер информации, которая будет храниться в данном поле. Тип поля определяется типом данных, хранящихся в этом поле.
Рис. 4 Окно диалога создания таблицы «Table
Designer».
В верхней части вкладки «Table» содержится поле Name, в котором можно задавать длинное имя таблицы. Это имя затем будет отображаться в окне проекта, а также использоваться при создании форм, запросов и отчетов. Ниже этого поля находится поле, содержащее имя базы данных, в которую будет входить создаваемая таблица. Это поле доступно только для чтения.
Тип данных поля вводится в строке ввода столбца Type, ширина полей – в строке ввода столбца Width, а количество десятичных знаков – в строке ввода Decimal. Столбец Index предназначен для задания индекса типа Regular для данного поля.
При вводе имени поля по умолчанию присваивается ему текстовый тип данных (Character) с шириной поля, равной 10.
Типы полей:
Character – текстовый, максимальная ширина поля составляет 254 символа.
Integer – для хранения целых чисел, диапазон допустимых значений поля от – 2147483647 до 2147483647.
Numeric и Float идентичны и содержат числовые данные в двоичном формате с фиксированной точкой. При определении полей этого типа следует указать количество десятичных знаков. Эти поля рекомендуется использовать в тех случаях, когда не требуется высокая точность при выполнении вычислений.
Double – для хранения данных с высокой точностью, диапазон от – 4.94065648541247*10-324 до –8.988465743115*10+307 .
Logical – для создания полей логического типа, размер всегда равняется 1.
Date – для хранения дат полей, в которых данные представлены в специальном формате. При вводе дат осуществляется проверка формата данных и допускается ввод только правильных дат. При работе сданными можно использовать операторы поиска и сортировки, возможно вычисление количества дней между двумя датами или дату, которая наступит спустя заданное количество дней.
DateTime – для хранения дат и времени суток.
Currency – для хранения денежных данных, в отличие от числового поля, для него определена точность, равная четырем знакам после запятой.
Memo – текстовые поля произвольной длины могут содержать те же типы данных, что и простые текстовые поля. Отличие между этими полями заключается в том, что размер Memo – поля не ограничен 254 символами, а зависит от объема данных, хранящихся в этом поле. Фактически объем данных, которые можно ввести в поле данного типа, определяется объемом жесткого диска. Visual FoxPro автоматически создает файл для хранения данных Memo – поля, с расширением .FPT , а его имя совпадает с наименованием таблицы.
General – для хранения в таблицах изображения и другие двоичные данные.
Свойства полей
Каждое поле таблицы обладает свойствами, значения которых отображаются в нижней части вкладки «Fields». Область «Display» задает форматы для ввода и отображения данных:
Свойство |
Описание |
Format |
Задает формат отображения данных в формах, отчетах и окне «Browse» |
Input mask |
Задает формат ввода данных |
Caption |
Определяет заголовок поля |
Область «Map field type to classes» предназначена для выбора библиотеки и имени класса, который будет использоваться для создания объектов в форме при размещении данного поля таблицы:
Свойство |
Описание |
Display library |
Задает путь и имя файла библиотеки классов |
Display class |
Задает имя класса из выбранной библиотеки |
Область «Field validation» содержит следующие поля:
Свойство |
Описание |
Rule |
Условие правильности ввода данных |
Message |
Сообщение, выводимое при неправильном вводе данных |
Default value |
Начальное значение поля |
Текстовое поле Field comment позволяет задать краткое описание поля, которое может потребоваться при последующих модификациях структуры таблицы.
Правила использования опции NULL:
· По умолчанию команда APPEND BLANK добавляет запись с пустыми полями, а не с неопределенными значениями;
· При установке опции NULL на пустое символьное поле, оно останется пустым;
· При установке опции NULL на числовое поле, имеющее нулевое значение, значение поля не изменяется;
· При сбросе опции NULL на символьное поле с неопределенным значением, поле становится пустой строкой;
· При сбросе опции NULL на числовом поле с неопределенным значением, в поле заносится число ноль.
Установка опции NULL
- Выполнить в командном окне или в программе команду SET NULL ON ;
- Изменить структуру таблицы, установив опцию NULL для всех полей, которые должны принимать это значение;
В противном случае Visual FoxPro будет выдавать сообщение об ошибке при попытке добавить запись с неопределенным значением поля при помощи команд APPEND FROM или INSERT SQL.
Добавление и удаление полей таблицы
Для добавления нового поля в структуру таблицы нужно установить курсор на поле, выше которого предполагается добавить новое поле, и нажать кнопку Insert.
Для удаления поля таблицы необходимо перейти на строку с описанием данного поля и нажать кнопку Delete.
Свойства таблицы
Каждая таблица обладает определенными для нее свойствами. Для задания свойств таблицы нужно выбрать вкладку «Table» (рис. 5). Здесь можно ввести текстовое описание таблицы, определить условие проверки ввода данных на уровне записей и создать триггеры для добавления, изменения и удаления записей таблицы. Определение условий правильности ввода данных при описании таблицы гарантирует достоверность данных в таблице, так как проверка осуществляется независимо от того, из какого приложения произошло обращение к таблице.
Рис. 5 Вкладка «Table» конструктора таблиц
Задания.
1. Создайте на диске каталог с вашим именем.
2. Создайте проект при помощи мастера с именем Sales. В качестве места хранения укажите свой персональный каталог.
3. В окне конструктора проекта создайте базу данных с именем Sales.
4. В базе данных создайте две таблицы со следующей структурой:
Таблица Customer (Покупатель) содержит информацию о покупателях (фамилия, имя, отчество, адрес, телефон и т.п.)
№ n/n |
Наименование |
Тип |
Описание |
1 |
icdCustomer |
Integer |
Код покупателя |
2 |
cCompany |
Character (20) |
Предприятие |
3 |
cLastName |
Character (16) |
Фамилия |
4 |
cFirstName |
Character (16) |
Имя |
5 |
cSecondName |
Character (16) |
Отчество |
6 |
cZIP |
Character (6) |
Почтовый индекс |
7 |
cCountry |
Character (20) |
Страна |
8 |
cRegion |
Character (20) |
Область |
9 |
CCity |
Character (20) |
Город |
10 |
Caddress |
Character (60) |
Остальная часть адреса |
11 |
YCreditLimit |
Currency |
Кредит |
12 |
MNotes |
Memo |
Примечание |
Таблица Ordsale содержит информацию о заказах и покупках различных покупателей.
№ n/n |
Наименование |
Тип |
Описание |
1 |
icdCustomer |
Integer |
Код покупателя |
2 |
isdGoods |
Integer |
Код товара |
3 |
dOrderDate |
Date |
Дата заказа |
4 |
OrderQuant |
Numeric(10) |
Заказанное количество |
5 |
yUnitPrice |
Currency |
Цена |
6 |
cNotes |
Character (254) |
Примечание |
Из данных таблиц можно получить информацию о каждом клиенте (табл. Customer) и сделанных им покупках (табл. Ordsale). Каждая запись в таблицах идентифицирует один объект группы (покупатель или сделанный заказ). Отношение между объектами определяет отношение между таблицами. Предлагается, что один и тот же покупатель может сделать несколько заказов и покупок. Между покупателями и сделанными ими заказами существует отношение один-ко-многим. Связь таблиц осуществляется на основании данных в совпадающих полях icdCustomer.
Примечание: При закрытии окна конструктора таблиц откажитесь от немедленного ввода данных!
5. Укажите для каждого поля в таблицах краткий комментарий.
6. Выбрав имя таблицы, и используя кнопку BROWSE, просмотрите содержимое обеих таблиц.
7. В режиме просмотра таблицы при помощи комбинации клавиш Ctrl+Y добавьте несколько новых строк и заполните эти строки данными.
8. Измените, заголовки нескольких полей в первой таблице и просмотрите ее в режиме BROWSE. (При просмотре обратите внимание на то, чтобы в пункте меню View был выбран режим Browse, а не Edit).
9. При помощи комбинации клавиш Ctrl+T пометьте строки в таблице на удаление. Физически удалить эти строки можно при помощи команды меню Table | Remove Deleted Records.
10. Сохраните свой проект для дальнейшей работы.
Пример выполнения работы