
- •Лабораторная работа №1 Тема: Анализ предметной области задачи. Проектирование структуры базы данных
- •Постановка задачи
- •Лабораторная работа №2 Тема: Создание таблиц бд инструментальным способом
- •Задания:
- •Лабораторная работа №5 Тема: Определение отношений между таблицами
- •Задание:
- •Лабораторная работа №6 Тема: Создание таблиц бд реляционным способом
- •Задание:
- •Лабораторная работа №7 Тема: Навигация нд. Модификация нд
- •Задание:
- •Лабораторная работа №9 Тема: Поиск записей
- •Лабораторная работа №10 Тема: Запросы
- •Задание:
- •Лабораторная работа №11 Тема: Запросы с параметром. Динамический запрос
- •Задание:
- •Лабораторная работа №12 Тема: Простой отчет (Rave Report, qReport)
- •Задание:
- •Создание простейшего отчёта с помощью qReport
- •Лабораторная работа №13 Тема: Отчет с группировкой. Отчет со связанными таблицами
- •Задание:
- •Создание отчёта с группировкой (qReport)
- •Создание отчёта с группировкой (Rave Report)
- •Создание отчёта для связных нд (qReport)
- •Лабораторная работа №14 Тема: Экспорт и импорт данных в Word, Excel
- •Задание:
- •Экспорт в ms excel
- •Экспорт в ms Word
- •Лабораторная работа №15 Тема: Экспорт и импорт данных в Calc, Writer
Государственное бюджетное образовательное учреждение
среднего профессионального образования
«Уфимский колледж информатики, статистики и вычислительной техники»
Методические указания
к выполнению
лабораторных работ
дисциплина «База данных»
специальность 230105
курс III
преподаватель: Махмутова Г.М.
2012
Содержание
Цели и задачи лабораторных работ
Лабораторная работа № 1. Анализ предметной области. Проектирование структуры базы данных
Лабораторная работа № 2. Создание таблиц БД инструментальным способом
Лабораторная работа № 3. Разработка приложений в Delphi
Лабораторная работа № 4. Создание таблиц БД навигационным способом
Лабораторная работа № 5. Определение отношений между таблицами
Лабораторная работа № 6. Создание таблиц БД реляционным способом
Лабораторная работа № 7. Навигация НД. Модификация НД
Лабораторная работа № 8. Сортировка и фильтрация НД
Лабораторная работа № 9. Поиск записей
Лабораторная работа № 10. Запросы
Лабораторная работа № 11. Запросы с параметром. Динамический запрос
Лабораторная работа № 12. Простой отчет (Rave Report, QReport)
Лабораторная работа № 13. Отчет с группировкой. Отчет со связанными таблицами.
Лабораторная работа № 14. Экспорт и импорт данных из Word, Excel
Лабораторная работа № 15. Экспорт данных в Calc, Writer
Цели и задачи лабораторных работ
Лабораторные работы по курсу «Базы данных» предназначены для студентов 3 курса очной формы обучения по специальности 230105 «Программное обеспечение вычислительной техники и автоматизированных сетей» и имеют следующие цели и задачи:
систематизацию и закрепление теоретических и практических знаний в области организации, проектирования и создания баз данных;
изучение конкретной системы управления базами данных;
освоение навыков практической работы в конкретной аппаратно-программной среде СУБД.
В конце лабораторных работ приведены варианты заданий для лабораторных работ.
В качестве примера приведен отчет студента, разработанный в среде Delphi.
Рекомендуется оформить отчет, который содержит следующие элементы:
Титульный лист;
Отчеты по каждой лабораторной работе;
Машинный листинг программы - в виде приложения.
Лабораторная работа №1 Тема: Анализ предметной области задачи. Проектирование структуры базы данных
Цель: Изучить предметную область задачи. Построить ER-диаграмму задачи. Произвести нормализацию БД.
Задание:
Постановка задачи. Описать информацию об объектах предметной области, которая требуется для решения задачи и которая должна храниться в БД.
Сформулировать задачи, которые будут решаться с использованием данной БД, и краткое описание алгоритмов их решения.
Описать входные документы, которые служат основанием для заполнения данными БД.
Описать выходные документы, которые должны генерироваться в системе.
Разработать ER-диаграмму задачи.
Все таблицы привести к 3НФ.
Оформить отчет.
Постановка задачи
Программа "Учёт оплаты за обучение " позволяет получить сведения о студентах, обучающихся на платной основе, создавать автоматически различные документы, которые раньше писались вручную.
Целью задачи является быстрое и удобное получение информации об оплате за обучение, а также её хранении и обновлении в продолжение всего учебного периода и удаления её в случае окончания студентом учебного заведения.
Необходимость автоматизации данной задачи появилась в связи с тем, что информация об оплате за обучение, договорах, платёжных поручениях могут быть затребованы, а поиск их на бумажных носителях затруднителен.
Данная задача позволяет быстро получить необходимые данные по мере их необходимости и предоставлять их на бумажном носителе, если в этом есть необходимость.
Программа обеспечивает копирование выбранной информации, её сортировку и фильтрацию, а так же редактирование и распечатку на принтере.
Входными документами для задачи являются:
данные паспорта студента:
Фамилия;
Имя;
Отчество;
Номер и серия паспорта;
Прописка.
справочные данные о специальности:
Название;
Плата;
Срок обучения;
- данные о договорах:
№ договора;
Дата заключения;
Сумма.
- платёжные поручения:
№ платёжного документа;
Дата оплаты;
Сумма.
Информация для задачи поступает последовательно, группируется по группам, специальностям и сохраняется на магнитном диске.
Выходным документом является:
- полная карточка студента об оплате обучения.
О
сновной
экономический эффект достигается за
счёт сокращения времени
оформления входной и выходной информации.
Сокращение времени происходит за счет
компактного отображения данных о
студенте с последующей возможностью
их создания и редактирования.
ER - диаграмма
Структура БД
Лабораторная работа №2 Тема: Создание таблиц бд инструментальным способом
Цель: Изучить среду программы Database Desktop. Создать таблицы БД инструментальным способом. Разработать приложение в Delphi.
Задания:
Изучить среду Database Desktop.
Создать таблицы в Database Desktop для задачи.
Создать псевдоним.
Создать приложение в Delphi.
Использовать модуль данных.
Для набора данных создать вычисляемое поле, поле выбора данных.
Оформить отчет.
1) Задание структуры таблиц.
Для создания таблиц БД инструментальным способом нужно воспользоваться программой Database Desktop.
Процесс создания новой таблицы:
File – New – Table
В начале создания таблицы в окне Create Table выбирается её формат, в нашем случае это Paradox7.
Задаём структуру таблиц:
Таблица Dogovor.db
|
Название поля |
Тип |
Размер |
Ключ |
1. |
Nom_dogovora |
A (Alpha) |
10 |
* |
2. |
Kod_styd |
A (Alpha) |
4 |
|
3. |
Data |
D (Date) |
|
|
4. |
Symma |
$ (Money) |
|
|
Таблица Gryppa.db
|
Название поля |
Тип |
Размер |
Ключ |
1. |
Nazvanie_gr |
A (Alpha) |
4 |
* |
2. |
Kyrator |
A (Alpha) |
20 |
|
3. |
Kod_spec |
A (Alpha) |
4 |
|
Таблица Plat_por.db
|
Название поля |
Тип |
Размер |
Ключ |
1. |
Nom_plat_por |
A (Alpha) |
10 |
* |
2. |
Nom_dogovora |
A (Alpha) |
10 |
|
3. |
Data_opl |
D (Date) |
|
|
4. |
Symma |
$ (Money) |
|
|
Таблица Specialnost.db
|
Название поля |
Тип |
Размер |
Ключ |
1. |
Kod_spec |
A (Alpha) |
4 |
* |
2. |
Nazvanie |
A (Alpha) |
30 |
|
3. |
Srok_ob |
N (Number) |
|
|
4. |
Plata_b |
$ (Money) |
|
|
5. |
Plata_k |
$ (Money) |
|
|
Таблица Stydent.db
|
Название поля |
Тип |
Размер |
Ключ |
1. |
Kod_styd |
A (Alpha) |
4 |
* |
2. |
FIO |
A (Alpha) |
20 |
|
3. |
Forma_ob |
A (Alpha) |
10 |
|
4. |
Nazvanie_gr |
A (Alpha) |
4 |
|
5. |
Nom_ser_pasp_st |
A (Alpha) |
15 |
|
5. |
Propiska |
A (Alpha) |
15 |
|
5. |
Nom_ser_pasp_rod |
A (Alpha) |
15 |
|
2) Создание псевдонима.
Чтобы подключиться к БД в Delphi, необходимо создать псевдоним, который указывает местонахождение файла БД и представляет собой специальное имя для обозначения каталога.
В Delphi – приложении доступ к БД осуществляется через BDE (процессор БД фирмы Borland).
Псевдоним создаётся с помощью программы BDE – Администратор.
После запуска программы выбираем:
Object – New
В появившемся окне оставляем без изменения тип БД – Standart и нажимаем OK.
В левой части окна указываем имя псевдонима, в нашем случае Oplata.
Чтобы сохранить все изменения, выбираем:
Object – Apply.
3) Создание приложения в Delphi.
Набор невизуальных компонентов работы СУБД группируются в создаваемой программе в специальном модуле данных.
Модуль данных представляет собой хранилище объектов, которое позволяет управлять их работой.
Новый модуль добавляется командой:
File – New – Data Module
Затем созданный модуль(Unit2) необходимо подключать ко всем формам, где происходит работа с БД.
На модуле данных размещаем:
5 невизуальных компонентов Table (вкладка BDE):
TSpec
DatabaseName: Oplata;
TableName: Specialnost.db;
TGryppa
DatabaseName: Oplata;
TableName: Gryppa.db;
TStydent
DatabaseName: Oplata;
TableName: Stydent.db;
TPlatPor
DatabaseName: Oplata;
TableName: Plat_por.db;
TDogovor
DatabaseName: Oplata;
TableName: Dogovor.db.
5 невизуальных компонентов DataSourse (вкладка DataAccess):
- DSSpec
DataSet: TSpec;
DSGryppa
DataSet: TGryppa;
DSStydent
DataSet: TStydent;
DSPlatPor
DataSet: TPlatPor;
DSDogovor
TDogovor.
Для отображения содержимого набора данных в виде таблицы, используется компонент DBGrid (вкладка DataControls), у которого необходимо указать свойство DataSource, то есть указать нужный источник данных.
Для управления набором данных необходим визуальный компонент DBNavigator (вкладка DataControls), у которого также необходимо указать свойство DataSource и определить состав видимых кнопок при помощи свойства VisibleButtons.
Создание поля выбора данных:
Поле выбора данных создаётся с помощью редактора полей. Для этого в контекстном меню редактора выбирается пункт:
New Field…
Открывается одноимённое диалоговое окно, в котором указываем следующие значения:
Name – spec;
Type – String;
Size – 15;
Field Type – LookUp;
Key Fields – Kod_spec (поле, связывающее таблицы);
DataSet – TSpec (связываемый набор данных);
LookUp Keys – Kod_spec (поле соответствия);
Result Field – Nazvanie (подставляемое поле).
Задание для самостоятельной работы:
Разработать приложение с использованием ADO технологий.
Создать таблицы в MS Access для задачи.
Создать приложение в Delphi.
Использовать модуль данных для невизуальных компонентов.
Лабораторная работа №3
Тема: Разработать приложение в Delphi
Цель: Разработать приложения в Delphi, используя базы данных Paradox и MS Access.
Задания:
Разработать модуль для заполнения таблицы базы данных (обеспечить заполнение текущей записи).
Используя навигацию по записям, произвести расчет в приложении.
Оформить отчет.
Лабораторная работа №4
Тема: Создание таблиц БД навигационным способом
Цель: Создать таблицы БД навигационным способом.
Задание:
Познакомиться с методом CreateTable набора данных.
Создать таблицы для задачи навигационным способом.
Отобразить таблицы в Delphi.
Оформить отчет.
Для создания новой таблицы БД навигационным способом используется метод CreateTable. Перед вызовом данного метода требуется определить структуру таблицы (то есть описать все её поля), задать расположение БД, имя и тип таблицы, а также определить индексы при необходимости. Это осуществляется путём установки соответствующих свойств.
С помощью установки свойства DatabaseName задаётся расположение БД. Этому свойству можно задать имя заранее определённого псевдонима, либо путь к каталогу, где содержится БД.
Имя файла, содержащего таблицу БД, задаётся с помощью свойства TableName.
Тип таблицы определяет свойство TableType, которое в нашем случае имеет значение ttParadox.
Свойство FieldDefs содержит список полей таблицы. Перед вызовом метода CreateTable должно быть определено хотя бы одно поле новой таблицы. Прежде всего, содержимое свойства FieldDefs должно быть удалено с помощью метода Clear, так как в нём может содержаться информация о полях другой таблицы, с которой ранее был связан набор данных. Для добавления новых полей в список используется метод Add, где указываются имя, тип и размер поля.
Для определения индексов используется свойство IndexDefs, содержимое которого также изначально удаляется. Добавление индексов в список производится при помощи метода AddIndex.
Также необходимо использовать такие невизуальные компоненты, как Table и DataSource, чтобы отобразить данные.
Создание таблиц:
Specialnost.db
with Table1 do begin
Active := False;
DatabaseName := 'Oplata';
TableType := ttParadox;
TableName := 'Specialnost';
if not Table1.Exists then begin
with FieldDefs do begin
Clear;
with AddFieldDef do begin
Name := 'Kod_spec';
DataType := ftString;
Size:=4;
end;
with AddFieldDef do begin
Name := 'Nazvanie';
DataType := ftString;
Size := 30;
end;
with AddFieldDef do begin
Name := 'Srok_ob';
DataType := ftFloat;
end;
with AddFieldDef do begin
Name := 'Plata_b';
DataType := ftCurrency;
end;
with AddFieldDef do begin
Name := 'Plata_k';
DataType := ftCurrency;
end;
end;
with IndexDefs do begin
Clear;
with AddIndexDef do begin
Name := '';
Fields := 'Kod_spec';
Options := [ixPrimary];
end;
end;
CreateTable;
end;
end;
table1.Active:=true;
DataSource1.DataSet:=table1;
DBGrid1.DataSource:=DataSource1;
2) Dogovor.db
with Table2 do begin
Active := False;
DatabaseName := 'Oplata';
TableType := ttParadox;
TableName := 'Dogovor';
if not Table2.Exists then begin
with FieldDefs do begin
Clear;
with AddFieldDef do begin
Name := 'Nom_dogovora';
DataType := ftString;
Size:=10;
end;
with AddFieldDef do begin
Name := 'Kod_styd';
DataType := ftString;
Size := 4;
end;
with AddFieldDef do begin
Name := 'Data';
DataType := ftDate;
end;
with AddFieldDef do begin
Name := 'Symma';
DataType := ftCurrency;
end;
end;
with IndexDefs do begin
Clear;
with AddIndexDef do begin
Name := '';
Fields := 'Nom_dogovora';
Options := [ixPrimary];
end;
end;
CreateTable;
end;
end;
table2.Active:=true;
DataSource2.DataSet:=table2;
DBGrid2.DataSource:=DataSource2;
3) Gryppa.db
with Table3 do begin
Active := False;
DatabaseName := 'Oplata';
TableType := ttParadox;
TableName := 'Gryppa';
if not Table3.Exists then begin
with FieldDefs do begin
Clear;
with AddFieldDef do begin
Name := 'Nazvanie_gr';
DataType := ftString;
Size:=4;
end;
with AddFieldDef do begin
Name := 'Kyrator';
DataType := ftString;
Size := 20;
end;
with AddFieldDef do begin
Name := 'Kod_spec';
DataType := ftString;
Size := 4;
end;
end;
with IndexDefs do begin
Clear;
with AddIndexDef do begin
Name := '';
Fields := 'Nazvanie_gr';
Options := [ixPrimary];
end;
end;
CreateTable;
end;
end;
table3.Active:=true;
DataSource3.DataSet:=table3;
DBGrid3.DataSource:=DataSource3;
Stydent.db
with Table5 do begin
Active := False;
DatabaseName := 'Oplata';
TableType := ttParadox;
TableName := 'Stydent';
if not Table5.Exists then begin
with FieldDefs do begin
Clear;
with AddFieldDef do begin
Name := 'Kod_styd';
DataType := ftString;
Size := 4;
end;
with AddFieldDef do begin
Name := 'Nazvanie_gr';
DataType := ftString;
Size:=4;
end;
with AddFieldDef do begin
Name := 'FIO';
DataType := ftString;
Size := 20;
end;
with AddFieldDef do begin
Name := 'Forma_ob';
DataType := ftString;
Size := 10;
end;
with AddFieldDef do begin
Name := 'Nom_ser_pasp_st';
DataType := ftString;
Size := 15;
end;
with AddFieldDef do begin
Name := 'Nom_ser_pasp_rod';
DataType := ftString;
Size := 15;
end;
with AddFieldDef do begin
Name := 'Propiska';
DataType := ftString;
Size := 15;
end;
end;
with IndexDefs do begin
Clear;
with AddIndexDef do begin
Name := '';
Fields := 'Kod_styd';
Options := [ixPrimary];
end;
end;
CreateTable;
end;
end;
table5.Active:=true;
DataSource5.DataSet:=table5;
DBGrid5.DataSource:=DataSource5;
Plat_por.db
with Table4 do begin
Active := False;
DatabaseName := 'Oplata';
TableType := ttParadox;
TableName := 'Pl_por';
if not Table4.Exists then begin
with FieldDefs do begin
Clear;
with AddFieldDef do begin
Name := 'Nom_pl_por';
DataType := ftString;
Size := 10;
end;
with AddFieldDef do begin
Name := 'Nom_dogovora';
DataType := ftString;
Size:=10;
end;
with AddFieldDef do begin
Name := 'Data_opl';
DataType := ftDate;
end;
with AddFieldDef do begin
Name := 'Symma';
DataType := ftCurrency;
end;
end;
with IndexDefs do begin
Clear;
with AddIndexDef do begin
Name := '';
Fields := 'Nom_pl_por';
Options := [ixPrimary];
end;
end;
CreateTable;
end;
end;
table4.Active:=true;
DataSource4.DataSet:=table4;
DBGrid4.DataSource:=DataSource4;