客户资源管理系统数据库
设计
所属课程名称
数据
库原理与应用
班
级
07 计算机软件工程方向
团 队 成 员
张灵惠
吴欢斌
成
绩
提交时间:2009
年 12 月 25 日
(一)、客户资源管理系统需求分析
1、调查了解学籍管理系统的初步需求
企业的发展离不开客户对企业的认知度、美誉度、忠诚度,为了提高客户满意度必须对客户资源进行科学有效的管理。客户资源管理系统对客户信息(包括潜在的和已有的客户)进行有效管理和应用,并通过适当的步骤来构建和维护有价值的客户关系。
3、根据系统的初步需求,分析设计顶层数据流图
(1)、1层数据流图如下图所示:
客户信息管理
(2)、2 层数据流图如下图所示:
0 客户资源管理 代码
客户资料
市场活动信息
员工基本信息
客户服务记录 日程提醒信息
员工
管理人员
客服信息
客服管理 市场活动信息
4、制定整理数据字典
(1)、分析数据流图,确定数据流的描述
在客户管理数据流图中,包含“客户资料”、“变更客户资料要求”、“删除客户资
料要求”、“新增的客户信息”、“修改后的客户资料”等数据流。 ◆
数据流卡
编号:F1 名称:客户资料 来源:客户信息 去向:客户信息显示
数据结构:客户编号、客户名称、客户等级、客户状态 说明:某公司的全部客户资料
5 日程管理
3 市场活动管理
4 客服管理
2 客户管理
客户资料
员工
市场活动信息
客户服务记录
客服信息实体
日程提醒
1
系统管理
管理人员
员工信息 代码
客户资料
日程提醒信息
(2)、分析数据流图,确定数据存储的描述
在客户管理数据流图中,包含“客户资料”等数据存储,描述其数据存储。
①数据存储:客户资料
说明:保存各个客户的资料信息
流入数据流:新增的客户资料、修改后的客户资料
流出数据流:客户资料显示
组成:客户编号、客户姓名、客户等级
存取方式:随机存取
(3)、分析数据流图,确定数据项的描述
◆数据项的定义:
数据项编号:I01-01
数据项名称:客户编号
别名:客户编码
简述:客户的顺序代号
类型:数字
数据项编号:I01-02
数据项名称:客户姓名
别名:客户名称
简述:客户的称呼
类型:文本
数据项编号:I01-03
数据项名称:所属行业
别名:
简述:客户的行业
类型:文本
数据项编号:I01-04
数据项名称:所在地区
别名:
简述:客户的居住地
类型:文本
数据项编号:I01-05
数据项名称:电话号码
别名:
简述:客户的电话号码
类型:数字
数据项编号:I01-09
数据项名称:客户等级
别名:
简述:客户的重要性
类型:文本
(4)、分析数据流图,确定处理过程的描述
在客户管理数据流图中,包含“客户信息查询”、“增加客户信息”、“修改客户信息”、“删除客户信息”、等处理过程,描述它们的处理流程。
①处理过程:增加客户信息查询
说输输明:录入一个客户的资料信息入:客户编号、姓名
出:客户基本信息
处理:在“客户信息”数据存储中增加一个客户的基本信息②处理过程:修改客户信息
说输输处明:录入一个客户的基本信息
入:客户编号、姓名
出:客户基本信息
理:在“客户基本信息”数据存储中修改一个客户的考试成绩
③处理过程:客户信息查询
说输输处
明:输入要查询的客户信息条件入:管理人员
出:客户信息显示
理:输出某个客户的信息
④处理过程:删除客户信息
说输输处
明:删除某个客户的信息
入:客户编号、姓名
出:
理:在“客户信息”数据存储中少了一个客户的信息
二、客户信息管理概念结构设计
①在客户资料管理中抽象实体,实体的码用下划线标出
★客户实体的属性为:{ 客户编号、姓名、所属行业、电话、法人、经营范围、所在地区、客户等级、客户状态、传真 }
★管理员实体的属性为:{管理员编号、管理员姓名、密码}
★员工实体的属性为:{ 员工编号、部门编号、员工名称、密码}
★部门实体的属性为:{部门编号、部门名称}
★客服信息实体的属性为:{服务编号、客户名称、联系人、受理方式、处理状态、处理部门编号、服务内容、处理日期、客户满意程度、客户反馈信息}
★市场活动信息实体的属性为:{活动编号、活动主题、负责员工编号、客户编号、部门编号、联系时间、活动时间、活动类型、活动方式、活动内容}
(3)、确定实体间的关系,设计E-R 图
为了简化设计,使用以下约束:
★一个管理员只管理一个部门,一个管理员可以管理多个多个员工
★一个客户只受一个员工服务,一个员工可以服务多个客户
★一个员工只能属于一个部门,一个部门可以有多个员工
①在客户管理局部应用
根据客户管理中的客户管理的局部应用,确定各实体间的联系
★一个客户必须被一个员工服务,而一个员工可以为多个客户服务,因此客户与员工的所在联系为n:1联系;
★一个员工必须隶属于一个部门,一个部门包含多个员工,因此部门与员工的隶属联系是1:n联系;
★根据约定一个部门只有一个管理人员,一个管理人员只担任一个部门的经理,因此部门与经理的管理联系时1:1 联系
(4)、合并分E-R 图,解决冲突,消除冗余,设计基本E-R 图,如下图所示:
(三)逻辑设计和物理设计(6)、使用PowerDesigner设计CDM
由CDM生成PDM:
(四)数据库实施各个表如下图所示:
◆员工表:
alter table csinfo
drop constraint FK_CSINFO_DISPOSE_WORKER go
alter table marketactive
drop constraint FK_MARKETAC_WORK_WORKER go
alter table server
drop constraint FK_SERVER_SERVER_WORKER go
alter table worker
drop constraint FK_WORKER_MANAGE_MANAGER go
alter table worker
drop constraint FK_WORKER_SUBJIECTI_DEPARMEN
go
if exists(select1
from sysindexes
where id = object_id('worker')
and name = 'manage_FK'
and indid>0
and indid<255)
drop index worker.manage_FK
go
if exists(select1
from sysindexes
where id = object_id('worker')
and name = 'subjiection_FK'
and indid>0
and indid<255)
drop index worker.subjiection_FK
go
if exists(select1
from sysobjects
where id= object_id('worker')
and type='U')
drop table worker
go
/*==============================================================*/ /* Table:worker*/ /*==============================================================*/ create table worker (
workerid bigint not null,
managerid int null,
deparmentid int null,
wname varchar(30) not null,
workerpw varchar(50) not null,
constraint PK_WORKER primary key nonclustered(workerid)
)
go
/*==============================================================*/
/* Index: manage_FK*/
/*==============================================================*/ create index manage_FK on worker (
managerid ASC
)
go
/*==============================================================*/
/* Index: subjiection_FK*/
/*==============================================================*/ create index subjiection_FK on worker (
deparmentid ASC
)
go
alter table worker
add constraint FK_WORKER_MANAGE_MANAGER foreign key(managerid) references manager(managerid)
go
alter table worker
add constraint FK_WORKER_SUBJIECTI_DEPARMEN foreign key (deparmentid) references deparment (deparmentid)
go
◆客户表:
alter table csinfo
drop constraint FK_CSINFO_TAKE_COMPANY
go
alter table server
drop constraint FK_SERVER_SERVER2_COMPANY
go
alter table takepartin
drop constraint FK_TAKEPART_TAKEPARTI_COMPANY
go
if exists(select1
from sysobjects
where id= object_id('company')
and type='U')
drop table company
go
/*==============================================================*/ /* Table:company*/ /*==============================================================*/ create table company (
companyid int not null,
companyname varchar(50) not null,
vocation varchar(50) null,
address varchar(50) null,
companytel varchar(50) null,
companyleader varchar(50) null,
level char(8) null,
companystate varchar(30) null,
constraint PK_COMPANY primary key nonclustered (companyid)
)
Go
◆服务表:
alter table server
drop constraint FK_SERVER_SERVER_WORKER
go
alter table server
drop constraint FK_SERVER_SERVER2_COMPANY
go
if exists(select1
from sysindexes
where id = object_id('server')
and name = 'server2_FK'
and indid>0
and indid<255)
drop index server.server2_FK
go
if exists(select1
from sysindexes
where id = object_id('server')
and name = 'server_FK'
and indid>0
and indid<255)
drop index server.server_FK
go
if exists(select1
from sysobjects
where id= object_id('server')
and type='U')
drop table server
go
/*==============================================================*/ /* Table:server */
/*==============================================================*/ create table server (
workerid bigint not null,
companyid int not null,
serverpingjia varchar(50) not null,
constraint PK_SERVER primary key (workerid,companyid)
)
go
/*==============================================================*/ /* Index: server_FK*/
/*==============================================================*/ create index server_FK on server (
workerid ASC
)
go
/*==============================================================*/
/* Index: server2_FK*/
/*==============================================================*/ create index server2_FK on server (
companyid ASC
)
go
alter table server
add constraint FK_SERVER_SERVER_WORKER foreign key(workerid) references worker(workerid)
go
alter table server
add constraint FK_SERVER_SERVER2_COMPANY foreign key(companyid) references company(companyid)
go
◆参与表:
alter table takepartin
drop constraint FK_TAKEPART_TAKEPARTI_MARKETAC go
alter table takepartin
drop constraint FK_TAKEPART_TAKEPARTI_COMPANY go
if exists(select1
from sysindexes
where id = object_id('takepartin')
and name = 'takepartin2_FK'
and indid>0
and indid<255)
drop index takepartin.takepartin2_FK
go
if exists(select1
from sysindexes
where id = object_id('takepartin')
and name = 'takepartin_FK'
and indid>0
and indid<255)
drop index takepartin.takepartin_FK
go
if exists(select1
from sysobjects
where id= object_id('takepartin')