通讯录信息管理系统数据库设计.docx
《通讯录信息管理系统数据库设计.docx》由会员分享,可在线阅读,更多相关《通讯录信息管理系统数据库设计.docx(39页珍藏版)》请在冰豆网上搜索。
通讯录信息管理系统数据库设计
通讯录信息管理系统数据库设计
郑州工业应用技术学院
课程设计报告
题目:
通讯录信息管理系统数据库设计
姓名:
院(系):
信息工程学院
专业班级:
12级计算机科学与技术
学号:
指导教师:
成绩:
时间:
2015年9月8日至2015年9月18日
摘要
随着计算机技术的不断发展,网络数据库技术在社会生活中日益重要起来,Web开发作为一种比较流行的技术也开始得到了很多人的支持和喜爱。
在现代社会中,数据库在网络技术中已经成为了不可分割的重要组成部分。
在网络技术的日趋发展中,也带动了一系列的新鲜事物出现。
通讯录信息管理系统就是在这一社会背景下出现的。
本系统使用了MySQL数据库技术、JSP技术、Java语言、MyEclipse开发工具,以及Tomcat服务器等进行了系统的实现。
本系统具有快速存储联系人大量信息、多条件检索联系人信息、修改个人资料、添加删除联系人等功能。
另外,本系统是利用数据库技术在网络上建立的,在网络越来越便利的,我们可以随时随地的在线查找、更新通讯录,同时也可以降低通讯录在移动设备端丢失的概率。
关键词:
通讯录信息管理系统;MySQL;数据库
1概述
1.1系统背景分析
随着改革开发的进一步深入,科学技术的发展越来越开,也逐渐改变着人们的日常生活。
固定电话与手机已经替代了曾经的邮件,人与人之间的联系也愈加频繁和紧密,电话中的信息也涉及到了生活中的方方面面。
移动通信逐渐成为通信领域的主流。
在这种环境下,人们可以在任何地方、任何时间享受自由通信,通话质量几乎不受电磁波等外界环境的影响,而高效便捷的通讯录是保持良好通信的基础。
传统的通讯录是把联系人信息写到纸质材料上,这种通讯录携带不方便,而且修改、查询都会增加时间成本。
还有一种是名片夹通讯录,这种通讯录也有较多的缺点。
名片夹容量有限,不宜批量、长时间保存。
现在比较流行的通讯录是我们的手机电话簿。
手机容量较大,而且可以长时间保存。
但是手机存储界面单一,存储单元的信息也较少。
一旦手机丢失或损坏,通讯录也就无法找回。
因此,开发一个免费的、功能丰富的基于网络存储的通讯录管理系统是非常必要的。
1.2设计的目的和意义
现在社会网络随处可见。
我们可以利用数据库技术在网络上建立一个WEB服务系统。
这种系统能够固定存储在网络服务器上,专门用于记录用户联系人的信息。
随着网络的普及和服务需求的增长,现如今的移动设备功能也是越来越多,而且大部分都支持互联网的接入,这样我们便可以随时随地的在线查找、更新通讯录,并且在此基础上还可以在IOS、Android等系统上开发移动客户端。
移动设备上的客户端与网页上更新存储相比,不仅可以提高信息检索的速度,而且没有网络复杂环境的影响。
此外客户端还会定期更新信息,保持手机和网络信息的同步。
1.3国内外通讯录发展现状
1.3.1国内通讯录发展现状
国内的有社交短信的Kik、QQ通讯录、360通讯录等。
移动通讯录是一种利用移动互联网来实现通讯录信息同步更新和备份的服务。
这种通讯录有:
友录通讯录、火种通讯录等。
基于手机和网站的同步通讯录有人人同步免费版、QQ手机同步。
总的来看,这些通讯录功能丰富,多智能化。
有的还有通讯、留言等功能,为个人通讯提供了方便。
1.3.2国外通讯录发展现状
国外的网络通信技术发展的较为成熟,目前各类产品的发展、通讯方式的丰富使得通讯录产品以不同的方式涌现出来,有基于手机的、有基于个人电脑的、有无线方式接入的、有WEB方式接入的等等。
例如目前主流的通讯录应用主要有移动PIM,PIM业务是指客户将移动终端或其他客户端中的信息以无线或有线方式与网络服务器保持一致,并能用多种终端、多种接入手段来管理个人信息的业务。
PIM业务为用户提供了统一、便捷查询通讯录、安排等个人信息的服务,使用户可以使用移动终端、计算机、PDA、网络服务器设备,通过互联网、移动网络方式来管理或同步通讯录、日程安排、事件提醒、子邮件、铃声图片、资料文档等个人信息。
1.4系统设计思想
对于典型的数据库管理系统,尤其是通讯录这样的存储信息特别大的网络管理系统,必须要满足使数据库方便、操作数据灵活等要求。
本系统在设计时应满足以下几个目标:
(1)采用良好的人机交互界面设计模式,界面个性、友好,信息查询灵活、方便,数据存储准确、安全可靠;
(2)快速存储联系人的大量信息;
(3)用户可以多条件进行信息检索;
(4)用户登录后台系统后可以修改自己的基本资料;
(5)实现添加、删除联系人类别的功能;
(6)实现联系人类别排行功能,以方便用户了解联系人信息;
(7)对输入的数据,系统进行严格的数据检验,并有合理的信息提示,尽可能排除人为错误。
1.5课程设计结构
本课程设计内容包括:
概述、需求分析、概念结构设计、数据库逻辑结构设计、物理结构设计、数据库的实现以及应用系统的实现等等。
着重描述了通讯录的组成与结构以及数据库的设计,阐述了系统的设计方案、实现方法以及所采用的开发工具和相关技术,另外,重点剖析了部分环节的开发过程。
2系统需求分析
系统关键技术确定后,需要对项目的功能需求进行详细的需求分析,清楚地了解到该项目所包含的功能。
需求分析报告是对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么数据,估计软件风险和评估项目代价,是软件生存周期中的最关键的一步,也是最困难的一步,是建立在软件开发的基础上。
2.1系统功能需求分析
2.1.1总体功能需求分析
经过对各种通讯录系统的考察、分析,要求本系统具有以下功能:
(1)统一友好的操作界面,保证系统的易用性,方便用户的操作;
(2)具备联系人信息的显示功能,方便用户及时查看联系人信息;
(3)联系人信息管理功能,用户可以添加、删除联系人信息;
(4)个性化的联系人分组,方便用户分类检索联系人信息;
(5)全面的后台管理功能,以方便管理员对用户信息进行管理。
系统总体功能结构图如图2.1。
图2.1系统管理功能结构图
2.1.2系统前台功能需求
(1)首页信息
显示开发的信息,包括:
系统开发开发环境、主要采用的技术、系统开发时间
(2)分组信息
可以查看在当前数据库通讯录系统中的总的分组情况。
(3)联系人信息
可以查看当前权限下通讯录中所有的联系人的全部信息,并且可以按照不同的条件(比如姓名、出生日期等),对联系人进行查找,并且可以查看联系人的具体信息(包括个人照片等)。
(4)后台登录
可以点击后台登录,对当前用户权限下的通讯录进行后台管理。
2.1.3系统后台功能需求
(1)分组信息管理
包括添加分组信息和分组信息管理两个模块,可以添加分组和对已经建立的分组进行编辑和删除。
(2)联系人信息管理
包括添加联系人和联系人信息管理两个模块,可以新增加联系人和对已经记录的联系人信息进行编辑和删除。
(3)系统管理
包括修改密码和退出系统两个模块,可以完成对系统的密码进行修改和退出本系统两个操作。
2.1.4数据流图
(1)对于本系统的前台页面数据流图如图2.2所示。
图2.2前台页面数据流图
(2)对于本系统的后台登录的数据流图如图2.3所示。
图2.3后台登录的系统流图
2.2数据需求分析
2.2.1数据分析
对于本系统的数据库的需求而言,由于其主要是用于信息的存储、更新和查询等。
因此,需要分析该系统功能所隐含的对数据应用的需求,从而确定数据库的结构。
(1)对用户信息建立数据表,其中的数据项包括登录账号、登录密码等。
(2)对分组信息建立数据表,其中的数据项包括分组编号、分组名等。
(3)对联系人信息建立数据表,其中的数据项包括所在分组、姓名、性别、出生年月、身份证号、邮编、家庭电话、手机号、qq、邮箱地址、职业、公司名称、地址、个人照片、备注信息等。
3数据库概念结构设计
数据库概念设计是整个数据库设计的关键。
根据用户需求设计数据库的概念,数据模型。
我们首先要将现实世界中的客观对象首先抽象为不依赖任何具体机器的信息结构,这种信息结构不是DBMS支持的数据模型,而是概念级别的模型。
然后再把概念模型转换为具体机器上DBMS支持的数据模型。
概念模型是对现实世界的抽象和概括。
它真实,充分地反映了现实世界中的事物和事物之间的联系,能满足用户对数据的处理要求。
由于其简洁、明晰、独立于机器,很容易理解,因此可以用概念模型和不熟悉计算机的用户交换意见,使用户能积极参与数据库的设计工作。
概念模型易于变动,还很容易向各种数据模型转换。
(1)管理员实体-属性图。
图3.1管理员实体-属性图
(2)用户实体-属性图。
图3.2用户实体-属性图
(3)分组实体-属性图。
图3.3分组实体-属性图
(4)联系人实体-属性图。
图3.4联系人实体-属性图
(5)数据库总体设计详细E-R图
图3.5数据库总体设计详细实体-关系图
4数据库逻辑结构设计
4.1把E-R图转化为关系模式
根据第三章概念结构设计得出的E-R图,我们可以得出系统中涉及的主要实体有四个,其结构如下:
(1)管理员(用户名,密码,权限)
(2)用户(用户名,密码,权限)
(3)分组(分组号,分组名,所属权限)
(4)联系人(联系人ID,所属分组,姓名,性别,生日,身份证号码,邮编,家庭电话,移动电话,QQ,电子邮件,职业,公司名称,住址,照片,备注,所属权限)
4.2实体间的联系
数据库通讯录信息管理系统实体之间有6个联系,其关系如下:
(1)管理员与用户的关系是1:
N的关系;
(2)管理员与分组的关系是1:
N的关系;
(3)管理员与联系人的关系是1:
N的关系;
(4)用户与分组的关系是1:
N的关系;
(5)用户与联系人的关系是1:
N的关系;
(6)分组与联系人的关系是1:
N的关系。
4.3关系规范化
(1)确定数据依赖;
(2)对于各关系模式间的数据依赖进行极小化处理,消除冗余关系;
(3)按照数据依赖与规范化理论对关系模式逐一进行分析;
(4)按照范式优化每一关系模式,对关系模式的进一步分解或合并;
(5)最终规范到3NF范式为:
<1>用户表(用户名,密码,权限)
<2>分组表(分组号,分组名,所属权限)
<3>联系人信息表(联系人ID,所属分组,姓名,性别,生日,身份证号码,邮编,家庭电话,移动电话,QQ,电子邮件,职业,公司名称,住址,照片,备注,所属权限)
5物理结构设计
5.1表结构的设计
(1)管理员和用户表结构设计。
表5.1管理员表结构设计
中文名
字段名
数据类型
显示宽度
是否为空
是否主键
约束条件
默认值
用户名
username
varchar
20
否
是
不允许为空
无
登录密码
password
varchar
20
否
否
默认约束
888888
权限
copyright
int
10
否
否
不允许为空
无
(2)用户表结构设计
表5.2用户表结构设计
中文名
字段名
数据类型
显示宽度
是否为空
是否主键
约束条件
默认值
用户名
username
varchar
20
否
是
不允许为空
无
登录密码
password
varchar
20
否
否
默认约束
888888
权限
copyright
int
10
否
否
不允许为空
无
(3)分组表结构设计
表5.3分组表结构设计
中文名
字段名
数据类型
显示宽度
是否为空
是否主键
约束条件
默认值
分组号
groupClassId
int
11
否
是
不允许为空
无
分组名
groupClassName
varchar
20
是
否
允许为空
无
所属权限
groupCopyRight
int
11
否
否
不允许为空
无
(4)联系人表结构设计
表5.4联系人表结构设计
中文名
字段名
数据类型
显示宽度
是否为空
是否主键
约束条件
默认值
联系人id
memberId
int
11
否
是
不允许为空
无
所属分组
groupObj
int
11
是
否
外键约束
无
姓名
name
varchar
20
是
否
允许为空
无
性别
sex
varchar
2
是
否
默认约束
男
出生年月
birthDate
date
10
是
否
允许为空
无
身份证号
cardNumber
varchar
30
是
否
允许为空
无
邮编
postcode
varchar
20
是
否
检查约束
无
家庭电话
homeTelephone
varchar
20
是
否
允许为空
无
移动电话
mobilePhone
varchar
20
是
否
检查约束
无
QQ
qq
varchar
20
是
否
允许为空
无
续表5.4联系人表结构设计
电子邮件
email
varchar
40
是
否
检查约束
无
职业
zhiye
varchar
20
是
否
允许为空
无
公司名称
gongsimingcheng
varchar
20
是
否
允许为空
无
住址
address
varchar
100
是
否
允许为空
无
照片
photo
varchar
50
是
否
允许为空
无
注释
memo
varchar
200
是
否
允许为空
无
所属权限
copyright
int
11
否
否
不允许为空
无
5.2视图的设计
(1)GroupClass视图
作用:
方便查对分组进行操作。
(2)MemberInfo视图
作用:
方便对联系人的信息进行操作。
6数据库的实现
6.1创建数据库
--创建数据库addressinfodb
usemaster
go
ifexists(select*fromsysdatabaseswherename=addressinfodb)
dropdatabaseaddressinfodb
Execxp_cmdshell'mkdirD:
\project'
createdatabaseaddressinfodb
useaddressinfodb
go
6.2创建表和主键约束
(1)创建用户表及管理员表
DROPTABLEIFEXISTS'admin';
CREATETABLE'admin'(
'username'varchar(20)NOTNULL,
'password'varchar(20)DEFAULTNULL,
'copyright'int(10)NOTNULL,
PRIMARYKEY('username')
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
(2)创建分组表
DROPTABLEIFEXISTS't_groupclass';
CREATETABLE't_groupclass'(
'groupClassId'int(11)NOTNULLAUTO_INCREMENT,
'groupClassName'varchar(20)DEFAULTNULL,
'groupCopyRight'int(11)NOTNULL,
PRIMARYKEY('groupClassId')
)ENGINE=InnoDBAUTO_INCREMENT=4DEFAULTCHARSET=utf8;
(3)创建联系人表
DROPTABLEIFEXISTS't_memberinfo';
CREATETABLE't_memberinfo'(
'memberId'int(11)NOTNULLAUTO_INCREMENT,
'groupObj'int(11)DEFAULTNULL,
'name'varchar(20)DEFAULTNULL,
'sex'varchar
(2)DEFAULTNULL,
'birthDate'varchar(10)DEFAULTNULL,
'cardNumber'varchar(30)DEFAULTNULL,
'postcode'varchar(20)DEFAULTNULL,
'homeTelephone'varchar(20)DEFAULTNULL,
'mobilePhone'varchar(20)DEFAULTNULL,
'qq'varchar(20)DEFAULTNULL,
'email'varchar(40)DEFAULTNULL,
'zhiye'varchar(20)DEFAULTNULL,
'gongsimingcheng'varchar(20)DEFAULTNULL,
'address'varchar(100)DEFAULTNULL,
'photo'varchar(50)DEFAULTNULL,
'memo'varchar(200)DEFAULTNULL,
'copyright'int(11)NOTNULL,
PRIMARYKEY('memberId'),
KEY'FKE439A73350F5638A'('groupObj'),
CONSTRAINT'FKE439A73350F5638A'FOREIGNKEY('groupObj')REFERENCES't_groupclass'('groupClassId')
)ENGINE=InnoDBAUTO_INCREMENT=4DEFAULTCHARSET=utf8;
6.3创建约束
(1)用户表的默认约束
altertabledbo.admin
addconstraintDF_password
default('888888')forpassword
(2)创建联系人表的外键约束
altertabledbo.t_memberinfo
addconstraintFK_groupObj
foreignkey(groupObj)
referencesdbo.t_groupclass('groupClassId')
(3)创建联系人表的检查约束
altertabledbo.t_memberinfo
addconstraintCK_postcode
check(len(postcode)=6)
(4)创建联系人表的检查约束
altertabledbo.t_memberinfo
addconstraintCK_email
check(emaillike'%@%')
(5)创建联系人表的默认约束
altertabledbo.t_memberinfo
addconstraintDF_sex
default('男')forsex
(6)创建联系人表的检查约束
altertabledbo.t_memberinfo
addconstraintCK_mobilePhone
check(len(mobilePhone)=11)
6.4输入数据
(1)向用户表中插入数据
INSERTINTO'admin'VALUES('a','aaaaaa','1');
INSERTINTO'admin'VALUES('b','bbbbbb','2');
INSERTINTO'admin'VALUES('c','cccccc','3');
INSERTINTO'admin'VALUES('d','dddddd','4');
(2)向分组表中插入数据
INSERTINTO't_groupclass'VALUES('1','家人','2');
INSERTINTO't_groupclass'VALUES('2','朋友','2');
INSERTINTO't_groupclass'VALUES('3','同学','3');
(3)向联系人表中插入数据
INSERTINTO't_memberinfo'VALUES('1','2','小芳','女','1992-06-09','5091942','610059','','','51304122','','淘宝店主','小芳服装店','四川成都二仙桥','upload/a6508b9b-cd71-4e7f-9600-89c78538f2f4.jpg','测试','2');
INSERTINTO't_memberinfo'VALUES('2','1','小王','男','2004-06-30','4101110','348899','7666646','','5555555','','学生','学校','农村','upload/e40b0640-c1fe-44cb-9971-c1639caee77f.jpg','fifj','2');
INSERTINTO't_memberinfo'VALUES('3','3','小张','男','2005-09-15','4193262','473943','5739583','','434793194','','服务员','餐厅','小吃街',null,'。
。
','3');
6.5创建索引
(1)创建联系人表的索引
createindexFKE439A73350F5638A
ont_memberinfo(groupObj);
6.6创建视图
(1)创建GroupClass视图
createviewGroupClass
as
select*
fromt_groupclassg,admina
whereg.groupCopyRight=a.Copyright
(2)创建MemberInfo视图
createviewMemberInfo
as
select*
fromt_memberinfom,admina
wherem.copyright=a.Copyright
7应用系统的实现
7.1功能的实现
(1)登录界面
进入系统登录界面,如图7.1所示。
图7.1登录界面
/*跳转到登陆界面*/
publicStringview(){
return"login_view";
}
/*验证用户登录*/
publicStringCheckLogin(){
AdminDAOadminDAO=new