数据库课程设计 销售员档案数据库设计.docx
《数据库课程设计 销售员档案数据库设计.docx》由会员分享,可在线阅读,更多相关《数据库课程设计 销售员档案数据库设计.docx(22页珍藏版)》请在冰豆网上搜索。
数据库课程设计销售员档案数据库设计
附件1:
学号:
00
课程设计
课程名称
数据库系统原理
题目
销售员档案数据库设计
学院
计算机科学与技术学院
专业
计算机科学与技术
班级
计算机1005班
姓名
指导教师
耿枫
2013
年
1
月
24
日
课程设计任务书
学生姓名:
专业班级:
计算机1005班
指导教师:
耿枫工作单位:
计算机学院
题目:
销售员档案数据库设计
初始条件:
销售员业绩记录;销售员联络记录;销售员服务记录;销售员催款记录;销售员投诉记录
要求完成的主要任务:
1.根据上述的初始条件,进行调查分析并设计适当的属性。
设计一个销售员档案数据库,DBMS可选MsSQLServer、Oracle、MySQL等。
2.完成课程设计说明书,其格式遵守学校今年的新规定。
主要内容包括:
需求分析,概念设计,逻辑设计,物理实现等。
3.基于该数据库,最好实现一个或多个应用程序(自己确定功能),程序设计语言(工具)任选。
这一项是选作,不作硬性要求。
时间安排:
本学期第21周:
1.消化资料、系统调查1天
2.系统分析1天
3.总体设计,实施计划2天
4.撰写报告1天
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
销售员档案数据库设计
1.需求分析及说明:
1.1需求分析和可行性分析:
需求分析的任务是调查应用领域,对应用领域中各种应用的信息要求和操作要求进行详细分析,形成需求分析说明书。
需求分析过程一般分一下几个阶段:
(1)调查组织机构的总体情况
(2)熟悉各模块情况
(3)分析用户的需求
(4)确定新系统的边界
员工档案是每个部门或公司必不可少的重要组成部分,每个部门可根据员工的档案对员工的能力进行评估,从而决定员工的升迁。
而一个完整高效的员工档案管理系统更有助于组织决策,使决策更加高效。
本课程设计正是基于这个目的进行设计的。
1.2具体说明:
根据销售员进行的活动将销售员档案数据库分为五个模块:
销售员业绩记录;销售员联络记录;销售员服务记录;销售员催款记录;销售员投诉记录
销售员业绩记录:
评价销售员的主要指标
销售员联络记录:
用于考察销售员的积极性,积极性有多大也将影响到销售员的业绩
销售员服务记录:
考察销售员的沟通能力以及是否能让顾客满意
销售员催款记录:
与联络记录一同用于考察销售员的积极性
销售员投诉记录:
考察销售员对顾客的行为是否礼貌
1.3问题域描述:
销售员每售出一批产品就增加销售员的一条业绩记录,这时候销售员要登记商品编号,商品价格,商品数量以及售出日期给系统管理员以便更改。
销售员每次联络顾客的记录也将登记入数据库,包括客户信息,联络方式,联络时间,联络地点
销售员对客户的服务记录也登记入数据库,考察客户对销售员的售前或者售后服务是否满意。
催款记录登记的信息包括:
催款金额,顾客信息,时间以及是否成功。
投诉记录:
记录销售员受到的投诉
1.5数据字典:
1.5.1数据项:
数据项是数据的最小单位,对数据相的描述包括:
数据项名、含义、别名、类型、长度、取值范围以及与其他数据项的逻辑关系。
(1)销售员信息:
编号,姓名,性别,电话号码,参加工作时间
(2)销售业绩:
销售员编号,商品名称,商品价格,商品数量,销售日期
(3)联络记录:
销售员编号,顾客姓名,联络方式,联络时间,联络地点
(4)服务记录:
销售员编号,服务顾客,客户评价,服务时间,服务类型,服务地点
(5)催款记录:
销售员编号,金额,顾客,日期,成功与否
(6)投诉记录:
销售员编号,投诉时间,原因,是否属实
1.5.2数据表:
销售员信息:
销售业绩:
联络记录:
服务记录:
催款记录:
投诉记录:
2.概念设计:
概念设计结构通常有自顶向下、自底向上、逐步扩张、混合策略4类方法。
其中最经常采用的策略是自底向上的方法。
即自顶向下的进行需求分析,然后在自底向上地设计概念结构。
自底向上设计概念结构的方法通常有可分为两步:
(1)抽象数据并设计局部视图。
(2)集成局部视图,得到全局的概念结构。
2.1数据库的实体及属性:
销售员信息:
(编号,姓名,性别,电话号码,参加工作时间)
销售业绩:
(业绩号,销售员编号,商品名称,商品价格,商品数量,销售日期)
联络记录:
(记录号,销售员编号,顾客姓名,联络方式,联络时间,联络地点)
服务记录:
(服务号,销售员编号,服务顾客,客户评价,服务时间,服务类型,服务地点)
催款记录:
(催款记录号,销售员编号,金额,顾客,日期,成功与否)
投诉记录:
(投诉记录号,销售员编号,投诉时间,原因,是否属实)
2.2系统E-R图设计:
为了把系统的数据要求清楚、准确地描述出来,系统分析员通常建立一个概念性的数据模型(E-R图)。
它描述了从用户角度看到的数据,它反映了用户的显示环境,而且与在软件中的实现方法无关。
以下便是本系统的E-R图表示:
2.2.1销售员实体图和描述:
描述:
顾客号唯一的标示一位顾客。
一个顾客号可以对应多个订单号。
2.2.2销售业绩实体图和描述:
:
2.2.3联络记录实体图和描述:
2.2.4服务记录实体图和描述:
2.2.5催款记录实体图和描述:
2.2.6投诉记录实体图和描述:
2.2.6总体的E-R图及描述:
3.逻辑设计
这个过程首先将概念结构转换为关系模型。
其次是对数据模型进行优化。
E-R图向关系模型的转换:
销售员信息:
(编号,姓名,性别,电话号码,参加工作时间)
此为销售员实体型对应的关系模型。
销售员的编号该关系模型的候选码
销售业绩:
(业绩号,销售员编号,商品名称,商品价格,商品数量,销售日期)
此为销售员销售业绩实体型对应的关系模型。
销售员销售业绩的编号该关系模型的候选码,销售员编号是该模型的外码
联络记录:
(记录号,销售员编号,顾客姓名,联络方式,联络时间,联络地点)
此为销售员联络记录实体型对应的关系模型。
销售员联络记录的编号该关系模型的候选码,销售员编号是该模型的外码
服务记录:
(服务号,销售员编号,服务顾客,客户评价,服务时间,服务类型,服务地点)
此为销售员服务记录实体型对应的关系模型。
销售员服务记录的编号该关系模型的候选码,销售员编号是该模型的外码
催款记录:
(催款记录号,销售员编号,金额,顾客,日期,成功与否)
此为销售员催款记录实体型对应的关系模型。
销售员催款记录的编号该关系模型的候选码,销售员编号是该模型的外码
投诉记录:
(投诉记录号,销售员编号,投诉时间,原因,是否属实)
此为销售员投诉记录实体型对应的关系模型。
销售员投诉记录的编号该关系模型的候选码,销售员编号是该模型的外码
4.数据库的物理设计:
数据库的物理设计通常分为两步:
(1)确定数据的物理结构。
(2)对物理结构进行评价,评价的重点是时间和空间效率。
4.1开发环境:
本课程设计开发环境:
MySQL,Ubuntu操作系统。
4.2数据库表的设计:
create_tables.sql的内容:
usearchives;
droptablegrade;
droptablecontact_record;
droptableservice;
droptablemoney;
droptablecomplaint;
droptablesalesman;
createtablesalesman
(
member_idintnotnull,
primarykey(member_id),
namevarchar(20)notnull,
sexenum('M','F')notnull,
phone_numbervarchar(20)notnull,
entered_timedatenotnull
);
createtablegrade
(
grade_idintnotnull,
primarykey(grade_id),
member_idintnotnull,
foreignkey(member_id)referencessalesman(member_id)
ondeletecascade,
product_namevarchar(40)notnull,
product_priceintnotnull,
product_amountintnotnull,
sales_timedatenotnull
);
createtablecontact_record
(
contact_record_idintnotnull,
primarykey(contact_record_id),
member_idintnotnull,
foreignkey(member_id)referencessalesman(member_id)
ondeletecascade,
cus_namevarchar(20)notnull,
wayenum('F','P','M')notnull,#F:
facetoface,P:
phone,M:
message
timedatenotnull,
locationvarchar(50)notnull
);
createtableservice
(
service_idintnotnull,
primarykey(service_id),
member_idintnotnull,
foreignkey(member_id)referencessalesman(member_id)
ondeletecascade,
cus_namevarchar(20)notnull,
cus_evaluateenum('S','A','B','C','D')notnull,
timedatenotnull,
typeenum('B','A')notnull,#B:
beforesales,A:
aftersales
locationvarchar(50)notnull
);
createtablemoney
(
money_idintnotnull,
primarykey(money_id),
member_idintnotnull,
foreignkey(member_id)referencessalesman(member_id)
ondeletecascade,
money_sumintnotnull,
customervarchar(20)notnull,
timedatenotnull,
successenum('Y','N')notnull
);
createtablecomplaint
(
complaint_idintnotnull,
primarykey(complaint_id),
member_idintnotnull,
foreignkey(member_id)referencessalesman(member_id)
ondeletecascade,
timedatenotnull,
reasonvarchar(20),
truthenum('Y','N')notnull
);
运行结果:
4.3插入数据:
salesman.sql的内容:
usearchives;
deletefromgrade;
deletefromcontact_record;
deletefromservice;
deletefrommoney;
deletefromcomplaint;
deletefromsalesman;
insertintosalesmanvalues
(1001,'John','M','','2008-09-23'),
(1002,'Johny','M','','2006-08-12'),
(1003,'Billy','M','','2010-04-25'),
(1004,'Jenny','F','','2011-07-12'),
(1005,'Missy','F','','2006-05-21');
insertintogradevalues
(5001,1001,'CprogramingBook',40,27,'2008-10-10'),
(5002,1001,'CompilerBook',110,1200,'2009-01-03'),
(5003,1001,'CollegeEnglishBook',35,132,'2009-03-12'),
(5004,1001,'IntroductiontoAlgorithms',89,100,'2009-04-03'),
(5005,1001,'MySQL',139,1000,'2009-04-12');
insertintocontact_recordvalues
(6001,1001,'MrChen','F','2008-10-10','WHUT'),
(6002,1001,'MrHu','P','2009-01-03','WHUT'),
(6003,1001,'MrLi','M','2009-03-12','WHUT'),
(6004,1001,'MrHan','F','2009-04-03','WHUT'),
(6005,1001,'MrsLiu','F','2009-04-12','WHUT');
insertintoservicevalues
(7001,1001,'MrChen','A','2008-10-10','A','WHUT'),
(7002,1001,'MrHu','B','2009-01-03','B','WHUT'),
(7003,1001,'MrLi','A','2009-03-12','A','WHUT'),
(7004,1001,'MrHan','A','2009-04-03','B','WHUT'),
(7005,1001,'MrsLiu','B','2009-04-12','B','WHUT');
insertintomoneyvalues
(8001,1001,500,'MrChen','2008-10-13','Y'),
(8002,1001,50000,'MrHU','2009-01-06','Y'),
(8003,1001,2000,'MrLi','2009-03-15','N'),
(8004,1001,5000,'MrHan','2009-04-08','Y'),
(8005,1001,10000,'MrsLiu','2009-04-15','Y');
insertintocomplaintvalues
(9001,1001,'2009-03-15','Unatural','Y'),
(9002,1001,'2009-04-15','rude','N');
运行结果:
4.4查询数据:
select.sql的内容
usearchives;
select*fromsalesman;
select*fromgrade
wheremember_id=
(selectmember_idfromsalesmanwherename='John');
selectsum(grade.product_amount*grade.product_price)
fromgradewhereYEAR(grade.sales_time)='2009'
andMONTH(grade.sales_time)='04';
selectcus_name,way,time,location
fromcontact_record
wheremember_id=1001
andYEAR(contact_record.time)='2009'
andMONTH(contact_record.time)='04';
selectcus_name,cus_evaluate,time,type,location
fromservicewheremember_id=1001;
select((
selectcount(money.success)
frommoneywheresuccess='Y'andmember_id=1001)/(
selectcount(money.success)
frommoneywheremember_id=1001))
as'success_times/total_times';
selectcount(complaint.member_id)
fromcomplaint
wheremember_id=1001andtruth='Y';
运行结果:
4.5修改数据:
update.sql的内容:
usearchives;
updatesalesmansetphone_number=wherename='John';
updatesalesmansetname='Harry'wheremember_id='1001';
updatesalesmansetsex='F'wherename='Harry';
updatesalesmansetentered_time='2008-08-23'wherename='Harry';
updategradesetproduct_name='C++Programing'wheregrade_id=5001;
updategradesetproduct_price=45wheregrade_id=5001;
updategradesetproduct_amount=47wheregrade_id=5001;
updategradesetsales_time='2009-01-13'wheregrade_id=5001;
updatecontact_recordsetcus_name='MrWhite'wherecontact_record_id=6001;
updatecontact_recordsetway='P'wherecontact_record_id=6001;
updatecontact_recordsettime='2008-10-01'wherecontact_record_id=6001;
updateservicesetcus_name='MrWhite'whereservice_id=7001;
updateservicesetcus_evaluate='A'whereservice_id=7001;
updateservicesettime='2008-10-01'whereservice_id=7001;
updateservicesettype='B'whereservice_id=7001;
updateservicesetlocation='WHU'whereservice_id=7001;
updatemoneysetmoney_sum=550wheremoney_id=8001;
updatemoneysetcustomer='MrWhite'wheremoney_id=8001;
updatemoneysettime='2008-10-10'wheremoney_id=8001;
updatemoneysetsuccess='N'wheremoney_id=8001;
updatecomplaintsettime='2009-03-25'wherecomplaint_id=9001;
updatecomplaintsetreason='rude'wherecomplaint_id=9001;
updatecomplaintsettruth='N'wherecomplaint_id=9001;
运行结果:
5.数据库的运行和维护:
数据库是运行合格后,数据库开发工作就基本完成,即可投入正式运行了。
但是,由于应用环境在不断地变化,数据库运行过程中物理存储业会不断变化,对数据库设计进行评价、调整、修改等维护工作是一个长期的任务,也是设计工作的继续和提高。
对数据库经常性的维护工作主要是由DBA完成的,它包括:
(1)数据库的转储和恢复
(2)数据库的安全性、完整性控制
(3)数据库性能的监督、分析和改造
(4)数据库的重组织和重构造
对于本数据库来说,主要完成数据库的完整性控制。
例如五个表中主码不能为空,对于特别说明的不能为空的属性也不能为空,还有前四个表中的对应关系要注意,它们就是用户自定义的完整性。
在账号管理中设计权限保证数据的安全操作。
6.心得和体会:
本次课程设计,总的来说做的还不错,不过一些细节方面没掌握好。
通过这次课程设计,我对MySQL有了进一步的了解和掌握,且更加巩固了我对数据库的理解与掌握,总的来说获益匪浅。
我觉得课程设计很能过锻炼我,在以后的课程设计中要特别认真的对待。
7.参考文献
《MySQL技术内幕》,Dubois,人民邮电出版社
本科生课程设计成绩评定表
班级:
计算机1005班姓名:
学号:
000
序号
评分项目
满分
实得分
1
学习态度认真、遵守纪律
10
2
设计分析合理性
10
3
设计方案正确性、可行性、创造性
20
4
设计结果正确性
40
5
设计报告的规范性
10
6
设计验收
10
总得分/等级
评语:
注:
最终成绩以五级分制记。
优(90-100分)、良(80-89分)、中(70-79分)、
及格(60-69分)、60分以下为不及格
指导教师签名:
年 月 日