数 据库课程设计是在学生系统的学习了数据库原理课程后,按照关系型数据库的基本原理,综合运用所学的知识,以小组为单位,设计开发一个小型的管理信息系统 (MIS)。通过对一个实际问题的分析、设计与实现,将原理与应用相结合,使学生学会如何把书本上学到的知识用于解决实际问题,培养学生的动手能力;另一 方面,使学生能深入理解和灵活掌握教学内容。
总体设计要求:
四到五人为一个小组,小组成员既要有相互合作的精神,又要分工明确。每个学生都必须充分了解整个设计的全过程。
通讯录
1、功能需求:
1)网络版,用户登录,合法使用,非法拒绝。
2)合法用户(以下简称:用户)可以添加通讯录成员。
3)用户点击不同的组,显示该用户相对应的成员通讯方式。
4)用户点击一个成员,将会得到他响应的各种通讯方式。
2、数据分析:
1)有管理员,进行数据维护
2)通讯录用户有多个人。每个用户因与通讯录成员关系不同,所以对同一个成员可能有不同的分组方式。
3)通讯录成员可以分组,每个组包含多成员,一个成员可以属于多个组。
4)通讯录成员都有通讯方式,其中每个成员可以有多种通讯方式,一个通信数据可能属于多个成员
ER图:
关系模式:
用户表(用户编号,用户名,密码,等级)
成员表(成员编号,姓名,性别,出生日期)
分组方式表(分组编号,分组方式)
分组表(用户编号,成员编号,分组编号)
联系方式表(联系方式编号,联系方式)
通讯录表(成员编号,联系方式编号,数据)
MS SQL Server2000 实现:
- /*---------创建数据库-------------*/
- create database txl
- go
- use txl
- go
- /*-----------用户表---------------*/
- create table users
- (Uid int identity(1,1) primary key,
- Uname char(16) unique not null,
- Upassword char(16) not null,
- Ulevel int check(Ulevel in(1,2,3)) default 1
- )
- /*-----------成员表---------------*/
- create table membership
- (Mid int identity(1,1) primary key,
- Mname char(16) unique not null,
- Msex char(2) check(Msex='男' or Msex='女'),
- Mbirthday datetime
- )
- /*-----------分组方式表---------------*/
- create table PacketMode
- (Pid int identity(1,1) primary key,
- Pname char(16) unique not null
- )
- go
- /*-----------分组表---------------*/
- create table Relations
- (
- Uid int references users(Uid),
- Mid int references membership(Mid),
- Pid int references PacketMode(Pid),
- primary key (Uid,Mid,Pid)
- )
- /*-----------联系方式表---------------*/
- create table Contact
- (
- Cid int identity(1,1) primary key,
- Cname char(16) unique not null
- )
- /*-----------通讯录表---------------*/
- create table AddressBook
- (
- Mid int references membership(Mid),
- Cid int references Contact(Cid),
- ADate char(60) not null,
- primary key (Mid,Cid)
- )
录入数据库数据
- /*-----插入用户------------------------------*/
- insert into users(uname,upassword,ulevel)
- values('cnlht','123456',1)
- /*-----插入成员------------------------------*/
- insert into membership(Mname,Msex)
- values('梁宏涛','男')
- insert into membership(Mname,Msex)
- values('王海章','男')
- insert into membership(Mname,Msex)
- values('梁宏伟','男')
- insert into membership(Mname,Msex)
- values('王怡强','男')
- /*-----插入分组方式--------------------------*/
- insert into PacketMode(Pname)
- values('本人')
- insert into PacketMode(Pname)
- values('亲人')
- insert into PacketMode(Pname)
- values('朋友')
- insert into PacketMode(Pname)
- values('同学')
- insert into PacketMode(Pname)
- values('同事')
- /*-----插入联系方式--------------------------*/
- insert into contact(cname)
- values('手机')
- insert into contact(cname)
- values('E-Mail')
- insert into contact(cname)
- values('QQ')
- insert into contact(cname)
- values('家庭住址')
- insert into contact(cname)
- values('邮政编码')
- insert into contact(cname)
- values('办公电话')
- insert into contact(cname)
- values('工作单位地址')
- insert into contact(cname)
- values('工作单位邮编')
- /*-----插入用户-成员关系---------------------*/
- insert into relations
- values(1,1,1)
- insert into relations
- values(1,2,5)
- insert into relations
- values(1,3,2)
- insert into relations
- values(1,4,4)
- /*-----插入成员-联系方式(通讯录)------------*/
- insert into AddressBook
- values(1,1,'1358920xxxx')