校园小商品交易系统设计数据库原理.docx
《校园小商品交易系统设计数据库原理.docx》由会员分享,可在线阅读,更多相关《校园小商品交易系统设计数据库原理.docx(19页珍藏版)》请在冰豆网上搜索。
校园小商品交易系统设计数据库原理
课程设计报告
院(系):
电气与信息工程学院专业班级:
计科
学生:
学号:
设计地点(单位)______第一实验楼___________
设计题目:
___校园小商品交易系统设计__________________
完成日期:
2013年6月28日
指导教师评语:
____________________________________
______________________________________________________________________________________________________________________________________________________
成绩(五级记分制):
________________
指导教师(签字):
________________
科技学院
课程设计任务书
设计题目:
校园小商品交易系统设计
学生
课程名称
数据库原理课程设计
专业班级
计科2011-01,计科2011-02
地点
起止时间
2013.6.24-2013.6.28
设计容及要求
容:
学生根据本课程设计指导书中的题目,进行设计。
(1)用户管理:
包含三类用户:
管理员、商品发布者、普通用户、访客。
(2)向管理员提供以下功能:
自身密码修改,其他用户添加删除,用户信息修改、统计。
商品信息添加、修改、删除、查找、统计。
(3)向商品发布者提供以下功能:
注册、登陆、注销、自身密码修改、自身信息修改。
商品信息发布,自身商品信息统计。
查找浏览其他商品。
(4)向一般用户提供以下功能:
商品浏览、查找、获知商家联系方式,定购商品。
(5)向访客提供以下功能:
商品浏览、查找、获知商家联系方式。
要求:
按照数据库系统开发步骤进行数据库概念结构设计、逻辑结构设计、物理结构设计,使学生掌握数据库应用软件的开发流程,SQL语句的使用和存储过程的使用。
设计
参数
至少5个表结构;5个存储过程;5个触发器;5个视图、2处使用事务处理、3处使用游标过程
报告格式规
进度
要求
19.1讲课阅读分析任务书制订设计计划
19.2-3需求分析概念结构设计
19.4-5概念结构设计准备文挡
20.1-3逻辑结构设计物理结构设计
20.4-5写文挡答辩交设计报告书
参考资料
1.雷亮等《数据库原理课程设计》指导书
2.王珊、萨师煊.《数据库系统概述》(第四版).:
高等教育.2006。
3.C.J.Date著.孟小峰、王珊等译.《数据库系统导论》(第8版).:
机械工业.2007。
4.根才等.数据库课程设计..大学.2007
其它
说明
1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。
2.若填写容较多可另纸附后。
3.一题多名学生共用的,在设计容、参数、要求等方面应有所区别。
教研室主任:
指导教师:
2013年06月15日
摘要
在校园里,对小商品的购买交易越来越多。
本课程设计就是模仿网购交易模式而编写的简单的校园小商品交易系统。
包含三类用户:
管理员、商品发布者、普通用户,为商家和网民搭建一个购售平台,电子商务不仅改变了企业营销方式,而且推动企业对管理理念、决策方式、业务过程等系列问题的战略性思考和变革,最为重要的是,电子商务支持并形成战略性伙伴关系和虚拟企业。
允许用户和访客订购商品以及商品发布者根据交易情况发布商品,同时管理员可以对商品以及各用户进行管理统计。
网上购物已经进入人们生活的方方面面,为了适应社会的发展,商品交易系统是很有必要的。
校园小商品交易系统主要分为一般用户订购商品、发布者发布商品以及管理员对用户以及商品的管理统计,本系统采用SQLServer2000作为数据库。
在实现数据库部分功能时按照要求创建了触发器、视图以及存储过程。
关键词:
校园小商品交易系统SQLServer2000触发器视图存储过程
摘要I
1需求分析1
1.1系统目标设计1
1.2系统功能分析1
1.3功能模块分析2
1.4系统全局数据流图3
1.5数据字典3
2概念结构设计7
2.1构成系统的实体型7
2.2小商品管理系统E-R图7
3逻辑结构设计9
3.1逻辑结构简介9
3.2关系模型9
4物理模型设计11
4.1定义数据库11
4.2创建表11
4.3创建存储过程14
4.4创建触发器17
总结19
致20
参考文献21
1需求分析
1.1系统目标设计
校园小商品交易系统,实施网上购商品和商家发布商品,为商家和购物者搭建了一个很好的平台。
1.2系统功能分析
(1)用户管理:
包含三类用户:
管理员、商品发布者、普通用户、访客。
(2)向管理员提供以下功能:
自身密码修改,其他用户添加删除,用户信息修改、统计。
商品信息添加、修改、删除、查找、统计。
(3)向商品发布者提供以下功能:
注册、登陆、注销、自身密码修改、自身信息修改。
商品信息发布,自身商品信息统计。
查找浏览其他商品。
(4)向一般用户提供以下功能:
商品浏览、查找、获知商家联系方式,定购商品。
(5)向访客提供以下功能:
商品浏览、查找、获知商家联系方式。
1.3功能模块分析
根据系统功能的基本要求,可对整个系统划分为几个模块
图1.3.1功能模块分析
1.4系统全局数据流图
系统的全局数据流图,也称第一层数据流图,是从整体上描述系统的数据流,反映系统数据的整体流向,给设计者、开发者和用户一个总体描述。
图1.2数据流图
1.5数据字典
表1.1管理员基本信息表
Name
DataType
账户
Varchar(10)
管理员密码
Varchar(20)
表1.2一般用户基本信息表
Name
DataType
用户ID
Varchar(20)
用户名
Varchar(30)
用户密码
Varchar(20)
表1.3商品发布者基本信息表
Name
DataType
商家ID
Varchar(20)
商家名
Varchar(30)
Varchar(11)
表1.4商品的基本信息表
Name
DataType
商品编号
Varchar(20)
商品名
Varchar(50)
生产商
Varchar(30)
商品价格
Varchar(10)
库存量
integer
表1.5商品信息发布表
Name
DataType
商品编号
Varchar(10)
产品名
Varchar(50)
商家ID
Varchar(20)
商品数量
integer
价格
Varchar(100)
表1.6商品订单表
Name
DataType
订单编号
Varchar(10)
用户ID
Varchar(20)
订单金额
Varchar(100)
订单数量
integer
商品编号
Varchar(10)
2概念结构设计
2.1构成系统的实体型
由校园小商品交易系统的数据流图和数据字典,抽取出系统的个6主要实体,包括:
管理员基本信息表、一般用户基本信息表、商品发布者基本信息表、商品的基本信息表、商品订单基本信息表、商品发布表。
管理员实体型属性:
账户管理员密码
一般用户实体型属性:
用户ID用户名用户密码
商品发布者实体型属性:
商家ID商家名
商品信息实体型属性:
商品编号商品名生产商商品价格库存量
订单实体型属性:
订单编号商品编号用户ID订单金额订单数量
商品信息发布实体型属性:
商品编号产品名商家ID商品数量价格
2.2工资管理系统E-R图
图2.1工资管理系统E-R图
3逻辑结构设计
3.1逻辑结构简介
逻辑结构设计就是把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。
设计逻辑结构一般分为3步进行:
(1)将概念结构转换为一般的关系、网状、层次模型;
(2)将转换来的关系、网状、层次模型向特定DBMS支持下的数据模型转换;
(3)对数据模型进行优化。
3.2关系模型
将E-R图转换为关系模型实际上就是要奖实体型、实体的属性和实体型之间的联系转换为关系模式,这种转换一般遵循如下原则:
一个实体型转换为一个关系模式,一个多对多的关系可以转化为一个关系模式,而一对多的关系可以融合在其他的相关的关系模式中。
例如:
(1)商家与商品信息发布之间是一对多的关系,所以将商品用户和商品信息发布以及属于关系设计成以下关系模式:
商品发布者实体型属性:
商家ID商家名
商品信息发布实体型属性:
商品编号产品名商家ID商品数量价格
4物理模型设计
数据库物理设计是将逻辑设计影射到存储介质上,利用可用的硬件和软件功能尽可能快地对数据进行物理访问和维护。
4.1定义数据库
SQLServer2000数据库文件分为3中类型:
主数据文件、次数据文件和日志文件。
通过SQL语言进行数据库创建,创建数据库的语句如下:
createdatabasexiangsuhong
4.2创建表
---------管理员基本信息表
createtable管理员
(
账号varchar(20)primarykey,
管理员密码varchar(20)
);
---------一般用户基本信息
createtable用户
(
用户IDvarchar(20)primarykey,
用户名varchar(30),
用户密码varchar(20)
);
----------商品发布者基本信息
createtable商家
(
商家IDvarchar(20)primarykey,
商家名varchar(30),
varchar(11)
);
------------商品的基本信息
createtable商品
(
商品编号varchar(10)primarykey,
商品名varchar(30),
生产商varchar(30),
商品价格varchar(100),
库存量integer
);
------------商品订单基本信息
createtable订单
(
订单编号varchar(10),
商品编号varchar(10),
用户IDvarchar(20),
订单金额varchar(100),
订单数量integer,
primarykey(商品编号,用户ID)
);
------------商品发布基本信息
createtable发布
(
商品编号varchar(10),
产品varchar(30),
商家IDvarchar(20),
商品数量integer,
价格varchar(100)
primarykey(商品编号,商家ID)
);
4.3创建存储过程
在奖惩记录表中创建更新奖惩的存储过程:
USE[salary]
GO
CREATEPROCEDURE[update_奖惩记录表_1]
(Record_ID_1[bigint],
Record_ID_2[bigint],
Worker_ID_3[varchar](15),
Worker_Name_4[varchar](8),
Record_date_5[datetime],
Record_type_6[varchar]
(2),
Record_content_7[varchar](30),
Record_reason_8[varchar](30),
Allow_unit_9[varchar](20))
ASUPDATE[salary].[dbo].[奖惩记录表]
SET[Record_ID]=Record_ID_2,
[Worker_ID]=Worker_ID_3,
[Worker_Name]=Worker_Name_4,
[Record_date]=Record_date_5,
[Record_type]=Record_type_6,
[Record_content]=Record_content_7,
[Record_reason]=Record_reason_8,
[Allow_unit]=Allow_unit_9
WHERE
([Record_ID]=Record_ID_1)
在员工基本信息表上创建一个插入员工信息的存储过程:
USE[salary]
GO
CREATEPROCEDURE[insert_员工基本信息表_2]
(Worker_ID_1[varchar](15),
Archives_ID_2[varchar](10),
Worker_Name_3[varchar](8),
Department_Name_4[varchar](10),
Sex_5[varchar]
(2),
Birthday_6[datetime],
Native_Place_7[varchar](25),
School_Age_8[varchar](4),
Major_9[varchar](15),
Graduate_Sch_10[varchar](10),
Come_Time_11[datetime],
Link_Phone_12[varchar](11),
Address_13[varchar](20),
Remark_14[varchar](200))
ASINSERTINTO[salary].[dbo].[员工基本信息表]
([Worker_ID],
[Archives_ID],
[Worker_Name],
[Department_Name],
[Sex],
[Birthday],
[Native_Place],
[School_Age],
[Major],
[Graduate_Sch],
[Come_Time],
[Link_Phone],
[Address],
[Remark])
VALUES
(Worker_ID_1,
Archives_ID_2,
Worker_Name_3,
Department_Name_4,
Sex_5,
Birthday_6,
Native_Place_7,
School_Age_8,
Major_9,
Graduate_Sch_10,
Come_Time_11,
Link_Phone_12,
Address_13,
Remark_14)
在用户账号表上建立一个删除用户账号的存储过程:
USE[salary]
GO
CREATEPROCEDURE[delete_用户账号表_1]
(User_Name_1[varchar])
ASDELETE[salary].[dbo].[用户账号表]
WHERE
([User_Name]=User_Name_1)
4.4创建触发器
定义一个BEFORE行级的触发器,为工资信息表Wage_info定义完整性规则“总经理的基本工资不得低于6000元,如果低于6000元,刚自动改为6000元”。
CREATETRIGGERInsert_orUpdate_Wage
BEFOREINSERTORUPDATEONWage_info
FOREACHROW
ASBEGIN
IF(new.Duty='总经理')AND(new.Base_Wage<6000))
THENnew.Base_Wage=6000;
ENDIF;
END;
定义一个AFTER行级触发器,当用户账号表User_table的用户发生变化后就自动在用户变化表User_change中增加一条相应的记录。
CREATETABLEUser_change
(User_Namevarchar(30)PRIMARYKEY,
User_pwdvarchar(30),
Power_levelvarchar(8),
);
CREATETRIGGERInsert_User
AFTERINSERTONUser_table
FOREACHROW
ASBEGIN
INSERTINTOUser_change
VALUES(new.User_Name,new.User_pwd,new.Power_level)
END;
CREATETRIGGERUpdate_User
AFTERUPDATEONUser_table
FOREACHROW
ASBEGIN
IF(new.User<>old.User)THENINSERTINTOUser_change
VALUES(new.User_Name,new.User_pwd,new.Power_level)
ENDIF;
END;
总结
在这两周的课程设计中我学到了许多书本之外的东西,动手能力得到了提高,对数据库系统的设计流程有了进一步的了解。
当然在本次课程设计中也遇到了许多的困难,比如SQLSever200和PowerDesigner之间的联合运用,数据流图的绘制还有就是对工资管理系统的需求分析不熟悉等。
希望在以后的学习中能够对数据库系统的设计更加熟悉。
致
首先我要感学校给了我们两周宝贵的学习时间,经过这两周的课程设计,使我对数据库系统概论这门学科有了更深一步的认识,也不在像最初接触数据库那么迷茫了,通过近两周的课程设计,使我对这学期学的知识有了全面的认识。
由于以前大部分时间都在学习理论的知识,所以对项目不是很了解。
而学校提供的这次课程设计机会使我收获颇多,从中也发现了许多不足,让我找到了以后学习的方向。
在这次程序设计过程中,也出现了不少的问题,但在老师和同学的耐心帮助下,问题都得到了解决,正是有了你们的帮助,我才能顺利地完成学籍管理系统的设计。
在此,我感帮助过我的所有同学,并向帮助过我的所有老师说一声:
“”。
参考文献
[1]建伶,林怀忠.数据库原理与应用.:
高等教育2006.5
[2]梁方明.SQLServer2000.:
希望电子2002.7
[3]王珊,萨师煊.数据库系统概论(第四版).:
高等教育2006.5
[4]树有.数据库应用系统开发与实例.:
人民邮电2005.9
[5]孟彩霞.数据库系统原理与应用(本科).:
人民邮电2008.3
[6]宏才.数据库原理及设计.:
清华大学2004.4