VCD租借数据库设计实验报告.doc
数据库原理及应用实验报告数据库设计部分班级: 08384 学号: 姓名: * 实验一成绩: 实验二成绩: 实验三成绩: 实验四成绩: 实验五成绩: 实验一 需求分析(一)业务流程调查一、实验目的:掌握需求分析的步骤和业务流程调查的方法;掌握应用Powerbuilder绘制BPM模型二、学时:6H(课内4H,课外2H)三、实验软件平台:Windows 2k或Windows XP, Powerduilder9.5,Visio四、实验内容:根据该VCD连锁店的业务需求调查文字,利用PD绘制该VCD连锁店管理系统的BPM模型。五、实验结果:出售租借:归还:逾期罚款通知图:实验二 需求分析(二)数据流程调查一、实验目的:掌握需求分析的步骤和数据流程调查的方法;掌握应用VISIO绘制数据流程图(DFD),掌握数据流程图分层次的绘制方法。掌握编写数据字典的方法和步骤。二、实验学时:8H(课内6H,课外2H)三、实验软件平台:Windows 2k或Windows XP, Visio四、实验内容:1、掌握数据流程调查和分析的方法;2、利用Visio绘制分层次的数据流程图并在绘制的过程中建立标准、统一的编码;3、根据该VCD连锁店的业务需求调查文字以及第一次作业所完成的内容,利用VISIO,绘制该连锁店管理系统的DFD模型。4、编写详细正确的数据字典。五、实验步骤1、数据流程图是按照“自顶向下、逐层细化”的原则进行,在绘制整个数据流程图的过程中,一定要建立标准、统一的编码,并建立相应的数据字典。2、根据该VCD连锁店的业务需求调查文字以及第一次作业所完成的内容,利用VISIO,绘制该连锁店管理系统的DFD模型。六、实验结果:1、绘制数据流程图VCD租售数据流程图: VCD归还数据流程图:VCD赔偿数据流程图:2、编写相应的正确的数据字典(文字或表格形式均可,必须包括数据流、处理逻辑和数据存储)表3-1 数据流的描述数据流编号数据流名称简 述数据流数据流数据流组成数据流量高峰流量来源去向F1 VCD租借单顾客租借VCD的凭证E1 P1顾客姓名、租借卡卡号VCD编号F2库存清单库存货物信息清单S1P1货物名称、编号、数量、单价、到货日期F3库存充足信息判断库存中是否有货P1P2库存充足F4销售信息具体的销售信息P2S2顾客姓名、卡号、联系方式、VCD编号、数量、金额等等F5租借信息具体租借信息P2S3租借人姓名、卡号、联系方式、租借日期、归还日期等等F6库存不足信息判断库存中是否有货P1P3库存不足F7预约信息预定货物的信息P3S4预约人姓名、卡号、联系方式、VCD编号、数量F8到货信息到货清单P3P4是否到货F9 顾客归还的VCD归还的VCDE1 P5VCD编号、VCD能否播放、有无损坏F10 VCD完好信息VCD完好P5P6VCD 完好F11归还信息顾客归还的相关信息P6S5VCD编号、顾客卡号、归还日期等F12VCD损坏信息VCD损坏P5P7VCD损坏F13赔偿信息赔偿相关信息P7S6顾客姓名、卡号、联系方式、VCD编号、数量、赔偿金额等等F14 赔偿通知单索赔通知单P7P8顾客姓名、联系方式、VCD编号、数量、应赔金额、赔偿日期等F15 租借记录租借者的信息记录E1、S3 P1顾客姓名、卡号、联系方式、VCD编号、租借日期、归还日期等F16租借信息借阅相关信息S3P9顾客姓名、卡号、联系方式、VCD编号、租借日期、归还日期F17逾期者信息清单逾期者相关信息P9P10顾客姓名、卡号、联系方式F18罚款通知单索款通知P10P11顾客姓名、罚款金额、罚款数量、日期等F19罚款信息罚款相关信息P11S7顾客姓名、卡号、罚款金额、数量、日期表3-2 处理逻辑的描述处理逻辑编号租借信息简述输入的数据流处理输出的数据流处理频率P1查阅库存员工查阅是否有库存F1、F2根据顾客VCD租借单查阅F3、F6P2办理销售或租借登记销售信息或租借信息F3登记相关信息F4、F5P3办理预约登记登记顾客预约信息F6登记相关信息F7P4通知顾客告知顾客预约的货已到F8联系顾客P5检查VCD检查VCD是否完好F9检查VCD的完好度F10、F12P6办理归还登记给顾客登记归还信息F10登记相关信息F11P7办理赔偿登记给顾客登记赔偿信息F12登记相关信息F 13P8通知顾客将赔偿通知告知顾客F12联系顾客F14P9查询逾期未还的VCD查询逾期者F16通过租借信息查询F17P10通知租借人告知租借人F17联系租借人F18P11罚款登记登记顾客罚款相关信息F18登记相关信息F19表3-3 数据存储的描述数据存储数据存储简 述数据存储组成相关联的处理编号名称S1库存整个租售店的库存货物编号、数量、单价、到货日期查询、更新、删除、插入S2销售记录销售出的VCD信息及顾客、经办员工信息记录销售单号、购买人卡号、日期、VCD编号、数量、单价、经办员工号查询、更新、删除、插入S3租借记录顾客租借的相关信息记录租借单号、租借人卡号、租借及归还日期、VCD编号、数量、经办员工号查询、更新、删除、插入S4预约记录顾客预订货物信息记录预约单号、顾客卡号、VCD编号、数量、经办员工号查询、更新、删除、插入S5归还记录顾客归还VCD信息记录归还单号、租借人卡号、归还日期、VCD编号、数量、经办员工号查询、更新、删除、插入S6赔偿记录顾客赔偿信息记录赔偿单号、租借人卡号、赔偿日期、赔偿VCD编号、数量、金额、经办员工号查询、更新、删除、插入S7罚款记录顾客罚款信息记录罚款单号、租借人卡号、罚款日期、罚款金额、经办员工号查询、更新、删除、插入实验三 概念结构设计一、实验目的:掌握概念结构模型绘制的方法和步骤,掌握利用PD绘制和管理CDM的方法。二、实验学时:6H(课内3H,课外3H)三、实验软件平台: Windows 2k或Windows XP, Powerduilder9.5,Visio四、实验内容:1、掌握概念结构设计的方法;2、利用VISIO绘制E-R图3、利用PD绘制并管理CDM;4、根据该VCD连锁店的业务需求调查文字以及前两次作业所完成的内容,利用PD,设计该连锁店管理系统合理的CDM模型。五、实验结果系统E-R图系统CDM图实验四 逻辑结构设计一、实验目的:掌握概念结构模型向逻辑模型转换的规则方法;掌握在PD环境中把CDM正确转换为PDM,并对PDM进行必要的管理和修改。二、实验学时:6H(课内3H,课外3H)三、实验软件平台: Windows 2k或Windows XP, Powerduilder9.5,Visio四、实验内容:1、掌握概念结构模型向逻辑模型转换的规则方法;2、掌握在PD环境中把CDM正确转换为PDM,并对PDM进行必要的管理和修改;3、掌握利用创建PDM的四种方法;4、根据该VCD连锁店的业务需求调查文字以及前三次实验所完成的内容,利用PD,设计该连锁店管理系统合理的PDM模型。五、实验结果 实验五 数据库的物理设计与实施一、实验目的:掌握PD中利用PDM生成物理数据库的操作步骤;掌握在PD环境中把PDM正确转换为数据库文件和生成数据库文件的SQL脚本。二、实验学时:4H(课内2H,课外2H)三、实验软件平台: Windows 2k或Windows XP, Powerduilder9.5,MS SQL Server 2000或Anywhere四、实验内容:1、 掌握PD中利用PDM生成物理数据库的操作步骤;2、 掌握在PD环境中把PDM正确转换为数据库文件和生成数据库文件的SQL脚本。3、根据第四次实验所得到的PDM模型,完成该VCD连锁店管理系统数据库的物理设计,保留生成数据库的SQL脚本和数据库文件。4、掌握PD中逆向工程的方法。五、实验结果/*=*/* DBMS name: Sybase SQL Anywhere 11 */* Created on: 2010/10/25 22:21:14 */*=*/if exists(select 1 from sys.sysforeignkey where role='FK_BUY OR _BUY OR R_VCD') then alter table "buy or rent" delete foreign key "FK_BUY OR _BUY OR R_VCD"end if;if exists(select 1 from sys.sysforeignkey where role='FK_BUY OR _BUY OR R_COUSTOME') then alter table "buy or rent" delete foreign key "FK_BUY OR _BUY OR R_COUSTOME"end if;if exists(select 1 from sys.sysforeignkey where role='FK_HANDLE_HANDLE_WORKER') then alter table handle delete foreign key FK_HANDLE_HANDLE_WORKERend if;if exists(select 1 from sys.sysforeignkey where role='FK_HANDLE_HANDLE2_BUSINESS') then alter table handle delete foreign key FK_HANDLE_HANDLE2_BUSINESSend if;if exists(select 1 from sys.sysforeignkey where role='FK_HELP_HELP_COUSTOME') then alter table help delete foreign key FK_HELP_HELP_COUSTOMEend if;if exists(select 1 from sys.sysforeignkey where role='FK_HELP_HELP2_WORKER') then alter table help delete foreign key FK_HELP_HELP2_WORKERend if;if exists( select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_id and i.index_name='VCD_PK' and t.table_name='VCD') then drop index VCD.VCD_PKend if;if exists( select 1 from sys.systable where table_name='VCD' and table_type in ('BASE', 'GBL TEMP') then drop table VCDend if;if exists( select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_id and i.index_name='business_PK' and t.table_name='business') then drop index business.business_PKend if;if exists( select 1 from sys.systable where table_name='business' and table_type in ('BASE', 'GBL TEMP') then drop table businessend if;if exists( select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_id and i.index_name='buy or rent2_FK' and t.table_name='buy or rent') then drop index "buy or rent"."buy or rent2_FK"end if;if exists( select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_id and i.index_name='buy or rent_FK' and t.table_name='buy or rent') then drop index "buy or rent"."buy or rent_FK"end if;if exists( select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_id and i.index_name='buy or rent_PK' and t.table_name='buy or rent') then drop index "buy or rent"."buy or rent_PK"end if;if exists( select 1 from sys.systable where table_name='buy or rent' and table_type in ('BASE', 'GBL TEMP') then drop table "buy or rent"end if;if exists( select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_id and i.index_name='coustomer_PK' and t.table_name='coustomer') then drop index coustomer.coustomer_PKend if;if exists( select 1 from sys.systable where table_name='coustomer' and table_type in ('BASE', 'GBL TEMP') then drop table coustomerend if;if exists( select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_id and i.index_name='handle2_FK' and t.table_name='handle') then drop index handle.handle2_FKend if;if exists( select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_id and i.index_name='handle_FK' and t.table_name='handle') then drop index handle.handle_FKend if;if exists( select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_id and i.index_name='handle_PK' and t.table_name='handle') then drop index handle.handle_PKend if;if exists( select 1 from sys.systable where table_name='handle' and table_type in ('BASE', 'GBL TEMP') then drop table handleend if;if exists( select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_id and i.index_name='help2_FK' and t.table_name='help') then drop index help.help2_FKend if;if exists( select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_id and i.index_name='help_FK' and t.table_name='help') then drop index help.help_FKend if;if exists( select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_id and i.index_name='help_PK' and t.table_name='help') then drop index help.help_PKend if;if exists( select 1 from sys.systable where table_name='help' and table_type in ('BASE', 'GBL TEMP') then drop table helpend if;if exists( select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_id and i.index_name='worker_PK' and t.table_name='worker') then drop index worker.worker_PKend if;if exists( select 1 from sys.systable where table_name='worker' and table_type in ('BASE', 'GBL TEMP') then drop table workerend if;/*=*/* Table: VCD */*=*/create table VCD ( VCD_ID integer not null, univalent float null, constraint PK_VCD primary key (VCD_ID);/*=*/* Index: VCD_PK */*=*/create unique index VCD_PK on VCD (VCD_ID ASC);/*=*/* Table: business */*=*/create table business ( businessNum integer not null, businesType char(10) null, customerID integer null, quality integer null, money float null, workerID integer null, "date" date null, constraint PK_BUSINESS primary key (businessNum);/*=*/* Index: business_PK */*=*/create unique index business_PK on business (businessNum ASC);/*=*/* Table: "buy or rent" */*=*/create table "buy or rent" ( VCD_ID integer not null, customer_ID integer not null, quality integer null, "date" date null, constraint "PK_BUY OR RENT" primary key clustered (VCD_ID, customer_ID);/*=*/* Index: "buy or rent_PK" */*=*/create unique clustered index "buy or rent_PK" on "buy or rent" (VCD_ID ASC,customer_ID ASC);/*=*/* Index: "buy or rent_FK" */*=*/create index "buy or rent_FK" on "buy or rent" (VCD_ID ASC);/*=*/* Index: "buy or rent2_FK" */*=*/create index "buy or rent2_FK" on "buy or rent" (customer_ID ASC);/*=*/* Table: coustomer */*=*/create table coustomer ( customer_age integer null, customer_name char(10) not null, customer_phone integer null, customer_ID integer not null, constraint PK_COUSTOMER primary key (customer_ID);/*=*/* Index: coustomer_PK */*=*/create unique index coustomer_PK on coustomer (customer_ID ASC);/*=*/* Table: handle */*=*/create table handle ( worker_ID integer not null, businessNum integer not null, businessInfo character null, customerInfo character null, "date" date null, constraint PK_HANDLE primary key clustered (worker_ID, businessNum);/*=*/* Index: handle_PK */*=*/create unique clustered index handle_PK on handle (worker_ID ASC,businessNum ASC);/*=*/* Index: handle_FK */*=*/create index handle_FK on handle (worker_ID ASC);/*=*/* Index: handle2_FK */*=*/create index handle2_FK on handle (businessNum ASC);/*=*/* Table: help