1.需求分析
我们都有许多的好友,要把他们的各项信息都记录清楚可不是一件简单的事情,所以我决定设计一个个人简单通讯录数据库,用来存储好友各类信息。
实际中,各模块包涵的数据结构如下:
主程序,在可视化的界面对各个模块的调度,在下拉菜单中激活各个子窗口
添加联系人,通过程序,向数据库中添加联系人的基本信息,姓名,联系电话,地址等。
删除联系人,通过程序,从数据库中删除联系人的基本信息,姓名,联系电话,地址等。
修改信息,通过程序,操作数据库,修改联系人的基本信息,姓名,联系电话,地址等。
查询联系人,通过程序,从数据库中查找联系人的基本信息,姓名,联系电话,地址等。
2. 数据库概念设计
在现实世界中,事物内部以及事物之间是有联系的。实体内部的联系通常是指组成实体的各属性之间的联系,实体之间的联系通常是指不同实体型的实体集之间的联系。
两个实体型之间的联系可以分为3种。
1. 一对一联系(1:1)
2. 一对多联系(1:n)
3. 多对多联系(m:n)
具体在这个数据库中,因为一个人的各类信息都是确定的,一个人的基本信息与他的学校信息,家庭信息,联系方式信息之间都是一一对应的关系,一个人只能有一个姓名,一个编号,一个学号,一个性别,一个年龄,一个年级等。所以实体型之间联系方式应该为一对一联系(1:1)。
本设计根据上面的设计规划出的实体,各个实体的E-R图及其关系描述如下:
局部E-R图如图2.1、2.2、2.3所示。
全局E-R图如图2.4所示
3.数据库逻辑设计
基本信息表Person用来保存联系人姓名、编号、性别、年龄。
结构如表3.1所示
属性名称 |
数据结构 |
说明 |
约束 |
name |
Varchar(20) |
联系人姓名 |
不可重复 |
cno |
Int |
联系人编号 |
主码 |
sex |
Char(2) |
联系人性别 |
男或者女 |
age |
Int |
联系人年龄 |
无 |
表3.1 基本信息表Person结构表
学校信息表School用来保存编号、宿舍、学号、专业、年级。
结构如表3.2所示
属性名称 |
数据结构 |
说明 |
约束 |
cno |
Int |
联系人编号 |
主码引用person外码 |
sno |
Varchar(20) |
联系人学号 |
Not null |
sd |
Varchar(20) |
联系人宿舍 |
无 |
major |
Varchar(20) |
联系人专业 |
无 |
grade |
Varchar(10) |
联系人年级 |
无 |
表3.2 学校信息表School结构表
家庭信息表Home用来保存编号、省份、详细住址、家庭电话。
结构如表3.3所示
属性名称 |
数据结构 |
说明 |
约束 |
cno |
Int |
联系人编号 |
主码引用person外码 |
province |
Varchar(10) |
联系人省份 |
无 |
address |
Varchar(40) |
联系人详细地址 |
无 |
tele |
Varchar(12) |
联系人家庭电话 |
无 |
表3.3 家庭信息表Home结构表
联系方式表Information用来保存编号、电话号码、QQ、微信、E-mail。
结构如表3.4所示
属性名称 |
数据结构 |
说明 |
约束 |
cno |
Int |
联系人编号 |
主码引用person外码 |
pnum |
Char(11) |
联系人电话号码 |
无 |
|
Varchar(10) |
联系人QQ |
无 |
wx |
Varchar(20) |
联系人微信 |
无 |
|
Varchar(20) |
联系人E-mail |
无 |
表3.4 联系方式表Information结构表
4.创建数据库
/*创建基本信息表*/
Create table person(
name varchar (20)NULL unique,
cno int primary key,
age int null,
sex char (2) null,
check(sex in ('男','女')),
)
/*创建学校信息表*/
CREATE TABLE school(
cno int not null,
sno varchar (20) NOT NULL primary key,
major varchar (20) NULL,
grade varchar (6) NULL,
sd varchar (20) NULL,
foreign key(cno) references person(cno))
/*创建家庭信息表*/
CREATE TABLE home(
cno int not null primary key,
province varchar (20) NULL,
address varchar (30) NULL,
tele varchar(12) NULL,
foreign key(cno) references person(cno)
)
/*创建联系方式表*/
create table Information(
cno int not null primary key,
pnum char(11) null,
QQ varchar (10) NULL,
wx varchar(20) null,
email varchar (20) NULL,
foreign key(cno) references person(cno)
)
创建结果如图4所示
图4.1 创建数据库
5.客户端设计
注:课程设计作业,方便以后需要时查看。