Создание связанных таблиц в базах данных

Цель работы: Приобрести навыки создание связанных таблиц в базах данных

Литература: 1.Культин Н.Б. Delphi 6. Программирование на Object Pascal.-СПб.: БХВ-Петербург, 2002.-528 с.

Краткие теоретические сведения:

При подготовке к лабораторной работе следует повторить следующие вопросы: [1],глава 17 Базы данных.стр 463-466.

Содержание отчета:

1.Задание к лабораторной работе.

2.Схема формы проекта, текст процедур обработчиков событий.

3.Результаты расчета

Постановка задачи. Требуется создать приложение для учёта поступающих на склад товаров. База данных состоит из двух таблиц: "Товары" и "Приход товаров". Отношение между таблицами один-ко-многим. Рабочая структура таблицы приведена ниже:

Таблица "Товары"

Название поля Смысл Тип Длина
Tovar Название товара Строка  
Edizm Единица измерения Строка  
Zena Цена за единицу измерения Денежная сумма  

Таблица "Приход товаров"

Название поля Смысл Тип Длина
N_Prih Номер прихода Автоинкримент  
Tovar Название товара Строка  
DatPrih Дата прихода Дата  
Kolvo Количество Целочисленный  

Для таблицы "Товары" первичный ключ будет построен по полю Tovar, a для таблицы "Приход товаров" - по полю N_Prih.

Для реализации ссылочной целостности в таблице "Приход товаров" необходимо построить внешний ключ по полю Tovar.

Для сортировки записей при их выводе в приложение необходимо создать индекс по полям DatPrih, Tovar.

Задание 1 Создание псевдонима базы данных.

Порядок работы

Создайте каталог для базы данных. Создайте псевдоним базы данных MyAIias с помощью утилиты Explore, вызвав её командой Database - Explore. B окне утилиты выполните команду Object - New и введите параметр Path для созданного алиаса (путь к каталогу, где находится база данных). Для запоминания созданного псевдонима выполните команду Object - Apply (иначе псевдоним будет сохранен на сеанс работы). Закройте утилиту. Алиас можно создать также с помощью утилиты DatabaseDesktop (команда Tools -DatabaseDesktop) или с помощью утилиты BDE Administrator, запустив её из менюПуск.

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

Порядок работы

1. Запустите утилиту Database Desktop из меню Пуск или из Delphi (c помощью команды Tools -. Database Desktop) для создания таблиц.

2. Установите Working и Private директории утилиты (директория, где будут находится таблицы базы данных и директория для временных файлов) командами File - Working Directory и File - Private Directory.

3. Выполните команду File - New - Table для создания таблицы и в окне запроса выберите формат таблицы - таблица базы данных Paradox 7.

4. В раскрывающемся окне Create Paradox 7 Table создайте структуру таблицы базы данных - "Товары". Для этого выполните следующее:

• Введите первое поле с именем Tovar. Для выбора типа данных этого поля щёлкните правой кнопкой мыши на поле Type и выберите тип Alpha (строка) из появившегося списка. Введите наибольший размер строки (для этого поля это - 20), отметьте, что поле Tovar входит в состав первичного ключа.

• Продолжайте определять поля, используя информацию из следующей таблицы:

Имя поля Тип Размер Ключ
Tovar А   *
Edizm А    
Zena $    

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

• Для ввода русского текста в строковые поля установите соответствующий языковый драйвер. Для этого щёлкните на списке Table properties, выберите в раскрывающемся списке Table Language, нажмите кнопку Modify и в раскрывающемся списке выберите драйвер ‘ASCII’ ANSI.

5. Сохраните таблицу в базе данных под именем Tovary, нажав кнопку Save As (Русские буквы лучше не использовать в названиях таблиц, т.к. промышленные серверы не принимают кириллицу).

6. Создайте структуру ещё одной таблицы базы данных - "Приход товаров", используя следующую таблицу:

Имя поля Тип Размер Ключ
N_Prih Tovar DatPrih Kolvo + А D I   *

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

Для полей Tovar, DataPrih, Kolvo включайте переключатель Required Field. Установите для таблицы языковый драйвер и сохраните таблицу в базе данных под именем Prihod, установив в диалоговом окне сохранения опцию Display table.

7. Перейдите в режим реструктуризации таблицы, выполнив Table- Restructure.

8. Создайте индекс по полям DataPrih, Tovar. Для этого в списке Table properties выберите Secondary Indexes и нажмите кнопку Define. B появившемся диалоговом окне занесите в правый список Indexed fields поля DataPrih и Tovar и нажмите ОК. В новом диалоговом окне введите имя вторичного индекса - Sort_DataPrih_Tovar. В дальнейшем этот индекс можно удалить или модифицировать. Сохраните таблицу.

9. Определите ссылочную целостность между таблицами, используя то, что таблицы находятся в отношении один-ко-многим и в качестве поля связи выступает поле Tovar. Ссылочная целостность в Paradox определяет, во-первых, связь между таблицами, а во вторых, вид каскадных воздействий.

• Для определения связи между таблицами откройте таблицу Prihod с помощью команды File - Open - Table и выполните изменения структуры таблицы с помощью команды Table - Restructure. Далее в списке Table properties выберите Refrential Integrity и нажмите кнопку Define. B появившемся диалоговом окне в левом списке Field показаны поля таблицы Prihod, а в правом списке Table — все таблицы базы данных. Укажите, что полем связи для дочерней таблицы Prihod является поле Tovar (для этого поместите поле Tovar в список Chield fields), выберите из списка таблиц Table таблицу Tovary и нажмите кнопку <= (в списке Parent's key должны оказаться первичные ключи таблицы Tovary, в нашем случае это — поле Tovar). Переключатели Update rules определяют вид каскадных воздействий на таблицу Prihod при изменении значения поля связи в таблице Tovary или удалении в ней записи:

Cascade — разрешены каскадные изменения и удаления подчиненных записей в дочерней таблице;

Prohibit — запрещены изменения полей связи или удаление записи в родительской таблице, если для данной связи есть связанные записи в дочерней таблице.

Оставьте умалчиваемый выбор Cascade, нажмите кнопку OK и введите в окно запроса имя ссылочной целостности Tovary_Prihod_Integrity.

• Сохраните изменения в таблице Prihod.

10. Снова войдите в режим реструктизации таблицы Prihod и посмотрите в раскрывающемся списке Secondary Indexes. B списке вторичных индексов должен появиться новый индекс Tovar, который был построен автоматически по неявному определению внешнего ключа при созданий ссылочной целостности. 11. Выйдите из режима реструктуризации и закройте окно Database Desktop.

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

Порядок работы

1. Создайте новое приложение.

2. Поместите на форму компонент Table (на закладке Data Access палитры компонентов) - невизуальный компонент. В Инспекторе Объектов установите свойства:

- DatabaseName равное псевдониму базы данных, в которой будет сохраняться таблица. Выберите псевдоним MyAlias из раскрывающегося списка,

- TableName равное имени таблицы, выбрав имя Tovary из раскрывающегося списка имён таблиц для заданного псевдонима.

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

3. Поместите на форму компонент Data Sourse (та же закладка палитры компонентов) для связи визуальных и невизуальных компонент. Для связи этого компонента с таблицей установите его свойство DataSet равным Tablel.

4. Поместите на форму сетку для данных (визуальный компонеИт) - объект DBGrid (закладка DataControls палитры компонентов). Установите его свойство DataSourse.

5. Поместите рядом с таблицей метку с заголовком ТОВАРЫ.

6. Добавьте на форму пять кнопок Добавить, Изменить, Удалить, Запомнить, Отменить. Свойство State объекта класса Ttable может принимать следующие значения:

• dsBrowse - объект находится в режиме просмотра;

• dsInsert - объект находится в режиме добавления записи;

• dsEdit - объект находится в режиме редактирования.

, Добавьте в обработчики событий OnClick для кнопок следующие действия:

• для кнопки Добавить вызовите метод Insert для объекта Tablel, если он находится в состоянии просмотра;

• для кнопки Изменить вызовите метод Edit для объекта Tablel, если он находится в состоянии просмотра;

• для кнопки Удалить вызовите метод Delete для объекта Tablel, если он и- находится в состоянии просмотра и после вызова диалогового окна

MessageDlg с предложением подтвердить удаление записи пользователь нажал кнопку Yes;

• для кнопки Запомнить вызовите метод Post для объекта Tablel, если он находится в состоянии вставки или редактирования;

• для кнопки Отменить вызовите метод Cancel для объекта Tablel, если он находится в состоянии вставки или редактирования.

7. Аналогично, добавьте на форму компоненты Table, Data Sourse, DBGrid, Label для таблицы Prihod. Для этой таблицы вместо кнопок поместите на форму компонент DBNavigator. Установите его свойства DataSourse и ShowHint (для появления подсказок, когда курсор будет задерживаться над кнопкой панели).

8. Запустите приложение.

Введите в таблицу Tovary следующие записи:

Tovar Edlzm Zena
Макароны кг  
Пепси-кола банка  
Сахар кг  

Введите в таблицу Prihod следующие записи (значение поля N_Prih формируется автоматически):

Tovar DatPrih Kolvo
Сахар 10.11.99  
Макароны 12.12.99  
Сахар 20.12.99  
Макароны 30.12.99  
Сахар 03.02.00  
Пепси-кола 15.03.00  
Пепси-кола 20.03.00  
Макароны 23.03.00  
Пепси-кола 06.04.00  

9. Закройте приложение. Создайте связь между таблицами. Для этого раскройте список в свойстве MasterSourse таблицы Table2 в Инспекторе объектов и выберите из списка DanaSoursel. Для свойства MasterFields раскройте окно редактора связей. В этом окне раскройте список Available Index и выберите индекс Tovar (при этом в окошке Detail Fields появится поле связи Tovar, выделите его), выберите это же поле в окошке Master Fields и нажмите кнопку Add.

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

11.Закройте приложение.

12.В созданном приложении имеются следующие недостатки:

• Автоинкриментный столбец N_Prih обеспечивает уникальность записи и не несёт смысловой нагрузки, поэтому его лучше не показывать.

• Названия колонок в сетках объектов DBGrid соответствуют названиям полей таблиц и представлены латинскими буквами (русские названия полей таблиц мешают при формировании SQL-запросов и автоимена объектов-полей становятся бессмысленными).

Все эти недостатки можно устранить путём создания для таблиц объектов-полей и их соответствующей настройкой.

13.Выполните создание виртуальных полей из физических полей таблицы Prihod с помощью редактора Field Editor.

• Для этого дважды щёлкните мышью на объекте Table2, затем правой кнопкой - на окне редактора полей и выберите команду Add fields. Выделите все поля, кроме N_Prih, и нажмите ОК. Для каждого добавленного поля Delphi автоматически создаёт виртуальное поле -объект класса Tfield (убедитесь в этом, просмотрев Инспектор объектов).

• Измените названия виртуальных полей (свойства объектов-полей DisplayLabel) соответственно на Товар, Дата прихода и Количество.

Запустите приложение и убедитесь, что таблица Приход приобрела желаемый вид. Закройте приложение.

14. Для таблицы Tovary выполните переименование столбцов таблицы по-другому. Дважды щёлкните мышью на объекте DBGridl, затем правой кнопкой - на окне столбцов компонента и нажмите кнопку Add All Fields для явного определения столбцов компонента посредством Инспектора объектов. Для каждого нового объекта- столбца в Инспекторе объектов раскройте свойство Title и измените свойство Caption соответственно на Товар, Ед.изм., Цена. Запустите приложение и убедитесь, что таблица Товары приобрела желаемый вид. Закройте приложение.

Задание 4 Смена активного индекса и определение визуальных компонентов для работы с полями таблицы Prihod.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: