当前位置:文档之家› 客户资源管理系统数据库设计

客户资源管理系统数据库设计

客户资源管理系统数据库设计
客户资源管理系统数据库设计

客户资源管理系统数据库

设计

所属课程名称

数据

库原理与应用

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')

相关主题
文本预览
相关文档 最新文档