Лабораторная работа: Отчет по управлению базами данных Телефонный справочник
|
Название: Отчет по управлению базами данных Телефонный справочник Раздел: Рефераты по информатике Тип: лабораторная работа | |||||||||||||||||||||||||||||||||||||||||||||||||||
Московский Авиационный Институт (Государственный Технический Университет) Кафедра 308 Отчёт по лабораторной работе “Телефонный справочник” (клиент-серверная архитектура) Выполнили Жукова А.М. Белезекова А.Т. гр. 03-217 Преподаватель Склеймин Ю.Б. Москва 2010 Постановка задачи. Разработать программу , реализующую работу телефонного справочника. Для разработки использовать SybaseSQLAnywhere 5.5 в качестве серверной части и MSVisualFoxPro 5.0 в качестве клиентской части. Добавить функции добавления, удаления, редактирования и поиска записей. Описание задачи.Необходимо реализовать телефонный справочник с использованием архитектуры «клиент-сервер». Каждая из составляющих эту архитектуру элементов играет свою роль: сервер владеет и распоряжается информационными ресурсами системы, клиент имеет возможность воспользоваться ими. Сервер базы данных представляет собой мультипользовательскую версию СУБД, параллельно обрабатывающую запросы, поступившие со всех рабочих станций. В его задачу входит реализация логики обработки транзакций с применением необходимой техники синхронизации - поддержки протоколов блокирования ресурсов, обеспечение, предотвращение и/или устранения тупиковых ситуаций. В ответ на пользовательский запрос рабочая станция получит не «сырье» для последующей обработки, а готовые результаты. Программное обеспечение рабочей станции при такой архитектуре играет роль только внешнего интерфейса (Front - end) централизованной системы управления данными. Это позволяет существенно уменьшить сетевой трафик, сократить время на ожидание блокированных ресурсов данных в мультипользовательском режиме, разгрузить рабочие станции и при достаточно мощной центральной машине использовать для них более дешевое оборудование. Для современных СУБД архитектура «клиент-сервер» стала фактически стандартом. При создании таблиц и связей между ними, следуя только немногим формализованным правилам, можно обеспечить простоту манипулирования данными. Его методика получила наименование нормализации данных . Мощь реляционных баз данных, таких как SybaseSQLAnywhere, опирается на их способность бы- стро найти и связать данные из разных таблиц при помощи запросов, форм и отчетов. Для этого каждая таблица должна содержать одно или несколько полей, однозначно определяющих каждую запись в таблице. Такие поля называют первичным ключом таблицы . Если для таблицы определен первичный ключ, то SybaseSQLAnywhere предотвращает дублирование значений полей. Завершающим этапом нормализации таблицы будет будет установка связей между таблицами и правил удаления, добавления и обновления записей в родительских и сводной таблицах. Получение, изменение, удаление данных на сервере из клиентской части производится с помощью SQL-запросов на сервер. Структура сервера.Родительские таблицы: FAM
NAM
OTC
STR
Дочерняя (сводная) таблица: BOOK
Основная программа В основной программе происходит соединение с сервером, объявление глобальной переменной sql - идентификатора соединения, создание локальных копий родительских таблиц для отображения их содержимого в элементах ComboBox, и открытие главной формы. Set date to german Set century on set multilocks on set talk off set delete off SET SYSMENU TO SET SYSMENU AUTOMATIC PUBLIC E1,t1,bg_visible_fl,nam_b PUBLIC New_Flag,start_id,end_id,Upd_flg,rnd_Time e1=SQLCONNECT("217b","dba", "sql") IF e1>0 b1=SQLEXEC(e1,"select * from dba.fam", "fam") b1=SQLEXEC(e1,"select * from dba.nam", "nam") b1=SQLEXEC(e1,"select * from dba.otc", "otc") b1=SQLEXEC(e1,"select * from dba.street", "street") ELSE MESSAGEBOX('Ошибка соединения с базой данных!',48,'Ошибка входа в систему') ENDIF bg_visible_fl=.F. do form main DO MNU_BR.PRG read events close data all rez=SQLDISCONNECT(e1) return FUNCTION Empty_m PARAMETERS n_arg IF n_arg=0 OR n_arg=1 return .T. ELSE return .F. Endif PROCEDURE n_itm_prc PARAMETERS n_bar DO CASE CASE n_bar=1 DO FORM ed_fam CASE n_bar=2 DO FORM ed_nam CASE n_bar=3 DO FORM ed_otc CASE n_bar=4 DO FORM ed_str ENDCASE return use test_lb in 0 use nam in 0 use fam in 0 use street in 0 select test_lb select test_lb.uniq_id,fam.f_val as family, nam.nam_val as nam, street.s_val as street ; from test_lb, fam, nam, street; where nam.n_num=test_lb.name_ AND; fam.f_num=test_lb.fam AND; street.s_num=test_lb.street ; INTO table test Родительские формы (изменение списков фамилий, имён, отчеств, улиц) Работа данных форм показана на примере формы редактирования списка имён.
Код кнопки Добавить Dimension w_arr(2) b1=SQLEXEC(e1, "Select Max(f_num) as st_1 from fam","wrk") w_arr(1)=wrk.st_1+1 w_arr(2)='' INSERT INTO fam FROM ARRAY w_arr b1=SQLEXEC(e1,"INSERT INTO fam values(?w_arr(1),?w_arr(2))") Thisform.grid1.setfocus() Thisform.refresh Для сохранения данных в новом поле в параметре Grid1.Column2.Header1.Text1 в Validпишем: IF Upd_flg w_s="update fam set f_val='"+alltrim(fam.f_val)+"'"+ " where f_num="+ALLTRIM(STR(fam.f_num)) MESSAGEBOX(w_s) r1=SQLEXEC(e1,w_s) Upd_flg=.f. Endif Предварительно в InteractiveChangeнадо прописать: Upd_flg=.t. Код кнопки Удалить select fam MESSAGEBOX(STR(f_num)) wsp=f_num b1=SQLEXEC(e1,"delete from fam where f_num=?wsp") Thisform.refresh() b1=SQLEXEC(e1,"select * from dba.fam", "fam") thisform.grid1.ColumnCount=2 thisform.grid1.recordsource='fam' thisform.grid1.recordsourcetype=1 thisform.grid1.column1.header1.caption='Код' thisform.grid1.column2.header1.caption='Фамилия' thisform.grid1.column1.width=49 thisform.grid1.column2.width=230 thisform.Refresh() Код кнопки Выход Thisform.release Главная сводная таблица Синхронизация данных в таблице на клиентской форме и на сервере производится путём обработки события InteractiveChange() объектов Text в столбцах и строках объекта Grid: |

