客户关系管理系统数据库设计
优质文档系统名称:客户关系管理系统一、 系统需求分析:客户管理系统是为了便利管理客户根本信息,完成公司决策的重要手段,通过该系统,系统管理员可以通过次系统查询客户的根本信息,以及客户所购产品的信息。并可以对新老客户进展添加和删除,也可对现有用户的根本信息进展更改。从而实现公司对其客户的管理。客户可以通过该数据库查看自己的根本信息和消费状况。职员可以通过该数据库查看自己的根本状况、业绩状况和工作打算。该数据库包含5个实体,分别是客户,联系人,产品,任务打算,反应信息。通过该数据库,可以实现以下功能举例简洁查询: 查询客户的根本信息 查询公司职员的业绩状况即联系人开展的客户状况 查询公司职员的任务打算困难查询: 查询客户对某一类型产品的反应信息通过产品表和反应信息表连接实现 查询客户反应信息的受理状况插入功能:增加新客户,新产品,新联系人,新反应信息以及其相关属性修改功能:系统管理员修改客户的根本信息如积分,联系方式等,修改联系人的工作打算,反应信息的受理状况二、E-R图客户联系人反应信息产品任务打算联系人编号所购产品编号购置反应开展制定信用度姓名所属部门姓名工资客户编号联系方式联系地址积分产品类型工作打算编号产品类型质量级别实惠状况名称生产日期编号产品价格内容反应时间反应者反应编号解决状况产品编号编号客户数量打算利润打算时间实施状况职工编号消费时间任务打算编号联系人编号制定时间 n n 1 n 1 n11客户编号反应反应编号购置购置数量购置时间客户编号产品编号开展联系人编号客户编号三、关系模式系统中的实体有:客户,联系人,反应信息,任务打算,产品关系模式如下:客户客户编号,姓名,联系方式,联系地址,积分,信用度,所购产品,消费时间,联系人编号联系人联系人编号,姓名,所属部门,产品类型,任务打算编号,工资反应信息反应编号,反应人姓名,反应时间,反应内容,产品编号,解决状况任务打算任务打算编号,联系人编号,客户数量,打算利润,打算时间,实施状况产品产品编号,产品名称,生产日期,产品类型,质量级别,价格,实惠状况反应客户编号,反应编号开展联系人编号,客户编号购置客户编号,产品编号,购置时间,购置数量制定联系人编号,任务打算编号,制定时间四,物理设计客户表构造客户编号Char(10)主键姓名Char(8)Not null联系方式Char(12)积分Char(8)Check约束,在0到100内取整信用度Char(8)Check约束,在0到100内取整所购产品Char (20)Not null消费时间datetimeNot null联系地址Char(10)联系人编号Char(10)外键联系人表构造联系人编号Char(10)主键姓名Char(8)Not null所属部门Char(10)Not null产品类型Char(20)Check'电器','化装品','炊具'任务打算编号Char(10)外键工资Char(10)Not null 反应信息表构造反应编号Int主键,identity1,1反应人姓名Char(8)反应时间DatetimeNot null反应内容Char(200)Not null产品编号Char(10)Not null解决状况Char(8)Default 缺省值为“否”任务打算表构造任务打算编号Char(10)主键联系人编号Char(10)Not null客户数量Char(20)Not null打算利润Char(20)Not null打算时间DatetimeNot null实施状况Char(2)Default 缺省值为“否”产品表构造产品编号Char(10)主键产品名称Char(20)Not null产品价格Char(10)Not null产品类型Char(10)Chec约束,取'电器','化装品','炊具之一'生产日期DatetimeNot null质量级别Char(8)Check约束,取A,B ,C,D,E之一实惠状况Char(10)反应联系表构造反应编号Char(10)Not null客户编号Char(10)Not null制定联系表构造工作打算编号Char(10)Not null联系人编号Char(10)Not null制定时间datetimeNot null购置关系表构造客户编号Char(10)Not null产品编号Char(10)Not null购置时间datetimeNot null购置数量Char(20)Not null开展关系表构造联系人编号Char(10)Not null客户编号Char(10)Not null五,系统实现1. 数据库及其根本表的建立数据库的建立:create database CustomerMSon(name='客户关系管理系统','d:DAI客户关系管理系统.mdf',size=10mb,maxsize=20mb,)log on(name='客户关系管理系统','d:DAI客户关系管理系统.ldf',size=10mb,maxsize=20mb,)建立根本表:use CustomerMScreate table 任务打算(任务打算编号 char(10) primary key,联系人编号 char(10) not null,客户数量 char(20) not null,打算利润 char(20) not null,打算时间 datetime not null,实施状况 char(2) default('否')create table 联系人(联系人编号 char(10) primary key,姓名 char(8) not null,所属部门 char(10) not null,产品类型 char(20) check(产品类型 in('电器','化装品','炊具'),任务打算编号 char(10) references 任务打算(任务打算编号),工资 char(10) not null )create table 客户(客户编号 char(10) PRIMARY KEY,姓名 char(8) not null,联系方式 char(12),积分 char(8) check(积分 between '0 'and '100'),信用度 char(8) check(信用度 between 0 and 100),所购产品 char(20) not null,消费时间 datetime not null,联系地址 char(10),联系人编号 char(10) references 联系人(联系人编号)create table 反应信息(反应编号 int primary key identity(1,1),反应人姓名 char(8),反应时间 datetime not null,反应内容 char(200) not null,产品编号 char(8) not null,解决状况 char(8) default('否')create table 产品(产品编号 char(10) primary key,产品名称 char(20) not null,产品价格 char(10) not null,产品类型 char(10) check(产品类型 in('电器','化装品','炊具'),生产日期 datetime not null,质量级别 char(8) check(质量级别 in('A','B','C','D','E'),实惠状况 char(10)create table 反应(反应编号 int identity(1,1),客户编号 char(10) not null)create table 制定(工作打算编号 char(10) not null,联系人编号 char(10) not null,制定时间 datetime not null)create table 购置(客户编号 char(10) not null,产品编号 char(10) not null,购置时间 datetime not null,购置数量 char(20) not null)create table 开展(联系人编号 char(10) not null,客户编号 char(10) not null)2、创立视图1.客户视图客户编号,姓名,联系方式,联系地址,积分,信用度,所购产品,消费时间,联系人姓名,产品名称,生产日期,产品类型,质量级别,价格, 解决状况反应内容代码如下:Create view 客户视图AsSelect 客户.客户编号,客户.姓名,客户.联系方式,客户.积分,客户.信用度,客户.所购产品,客户.消费时间,联系人.姓名 as "联系人姓名",产品.产品名称,产品.生产日期,产品.产品类型,产品.质量级别,产品.产品价格,反应信息.解决状况, 反应信息.反应内容From 客户 join 产品 On 客户.所购产品=产品.产品名称Join 联系人 On 客户.联系人编号=联系人.联系人编号Join 反应信息 on 客户.姓名=反应信息.反应人姓名2. 职工视图联系人编号,姓名,所属部门,产品类型,任务打算编号,工资,姓名,联系方式,联系地址,任务打算编号,打算利润,打算时间,实施状况代码如下:Create view 职工视图AsSelect 联系人.联系人编号,联系人.姓名,联系人.所属部门,联系人.产品类型,联系人.工资,客户.姓名 as "客户姓名",客户.联系方式,客户.联系地址,任务打算.任务打算编号,任务打算.打算利润,任务打算.打算时间,任务打算.实施状况From 联系人 join 客户 on 联系人.联系人编号=客户.联系人编号Join 任务打算 on 联系人. 任务打算编号=任务打算.任务打算编号3、创立索引客户在客户表中客户编号列建立索引Create index 客户 on 客户(客户编号)产品在产品表上产品编号列建立索引Create index 产品 on 产品(产品编号)4、存储过程的创立简洁查询:1 查询客户的根本信息Create procedure Scustomer name char(8)AsSelect *from 客户Where 客户.姓名=name2查询公司职员的业绩状况即联系人开展的客户状况Create procedure workerperformance workercode char(10)AsSelect "total"=count(客户.客户编号 )From 客户 join 联系人 on 客户.联系人编号=联系人.联系人编号Where 联系人.联系人编号=workercode3查询公司职员的任务打算Create procedure 查询任务打算 work char(8)AsSelect *from 任务打算Where 任务打算.联系人编号=work困难查询:1查询客户对某一类型产品的反应信息通过产品表和反应信息表连接实现Create procedure 查询反应信息 productcode char(8)AsSelect 产品.产品类型,反应信息.反应内容From 产品 Join 反应信息 on 产品.产品编号=反应信息.产品编号Where 产品.产品类型=productcode2查询客户反应信息的受理状况Create procedure 反应信息受理 customercode char(8) ,customername char(20)AsSelect 客户.姓名,客户.客户编号,反应信息.解决状况From 客户 Join 反应信息 on 客户.姓名=反应信息.反应人姓名Where 客户.客户编号=customercode and 客户.姓名=customername插入功能:增加新客户,新产品,新联系人,新反应信息以及其相关属性增加新用户:Create procedure insertcustomer 客户编号 char(10),姓名 char(20),联系方式 char(20),联系地址 char(20),积分 char(10),信用度 char(10),所购产品 char(20),消费时间 datetime,联系人编号 char(10)AsInsert into 客户 values(客户编号,姓名,联系方式,联系地址,积分,信用度,所购产品,消费时间,联系人编号) 修改功能:系统管理员修改客户的根本信息如积分,联系方式等,修改联系人的工作打算,反应信息的受理状况修改客户的根本信息例:给特定客户增加积分Create procedure addmarks mark char(10),customercode char(10)AsUpdate 客户set 客户.积分=客户.积分+markWhere(客户.客户编号=customercode)5.创立触发器客户的信用度取在0到100之间,当对信用度进展更新操作时,执行触发器Create trigger creditOn 客户For updateAsDeclare total intSelect total=信用度From 客户If(total>100)BeginPrint '信用度不能超过100'Rollback transactionEndReturn 完成日期: 年 月 日