通讯录管理系统数据库设计与实现1 需求简介(赵河南)1.1功能概述1.2数据要求功能中涉及的数据项说明。
1.用分组基本信息(Admin):包括分组号、分组名;2.用户基本信息(Dormitory):包括账号、密码、昵称、个性签名,这样可以方便分清用户记录的联系人;3.联系人基本信息(linkman):包括姓名、性别、关系、手机号、座机号、QQ、E-mail、生日、工作单位、地址、所属用户、所属分组;1.3数据字典数据项列表数据项编号数据项名数据项含义与其它数据项的关系存储结构别名TXL-1G_number分组号CHAR(10)TXL-2G_name分组名CHAR(20)TXL-3ID所属用户等同于账号ID CHAR(10)TXL-4ID账号CHAR(10)TXL-5Nickname昵称CHAR(20)TXL-6Password密码CHAR(20)TXL-7Qianming签名CHAR(50)TXL-8L_number联系人号CHAR(100)TXL-9Name姓名CHAR(20)TXL-10Sex性别CHAR(2)TXL-11Concern关系CHAR(10)TXL-12Phone手机号CHAR(11)TXL-13Landline座机号CHAR(10)TXL-14QQ QQ号CHAR(10)TXL-15Email E-mail CHAR(20)TXL-16Work工作单位CHAR(30)TXL-17Address地址CHAR(30)TXL-18Birthday生日Date数据结构列表数据结构编号数据结构名数据结构含义组成DS-1Grouping分组G_number,G_name,ID,DS-2Worker用户ID,Nickname,Password,QianmingDS-3Linkman联系人L_number,Name,Sex,Concern,Phone,Landline,QQ,Email,Work,Address,Birthday,ID,G_number数据结构编号数据结构名数据结构含义组成DS-4Own拥有ID,G_number,Name2概念结构设计(刘江涛)ER图(如果系统没有那么复杂,可以不需要画局部ER图)属性请在ER图后单独说明。
3逻辑结构设计(陈佳奇)3.1将E-R图转换为关系模型关系模型图中实体所具有的属性为:User(ID,Nickname,Password,Qianming);Grouping(Group_number,,ID Group_name)Linkman(Name,Sex,Concern,QQ,Phone,Landline,Email,Work,Address,Birthday,);Own(ID,G_number,L_number)3.2 数据库模式设计(袁向阳)1.用户表信息表:Worker属性名数据类型含义是否是主属性或外键完整性ID Char(10)账号PKNickname Char(20)昵称NOT NULL Password Char(20)密码NOT NULL Qianming Char(50)个性签名2.联系人信息表:Linkman属性名数据类型含义是否是主属性或外键完整性L_number Char(10)联系人号PKName Char(20)姓名Sex Char(2)性别Concern Char(20)关系Phone Char(11)手机号Landline Char(10)座机号QQ Char(10)QQ号Email Char(20)E-mailWork Char(30)工作单位Address Char(30)地址Birthday Date生日3.分组信息表:Grouping属性名数据类型含义是否是主属性或外键完整性G_number Char(10)分组号PKG_name Char(10)分组名NOT NULL4.拥有信息表:Own属性名数据类型含义是否是主属性或外键完整性G_number Char(10)分组号PKID Char(10)用户ID PkL_number Char(100)联系人号Pk3.3 用户子模式设计(袁向阳)(可选)编号用户子模式(View)作用(共性:提供数据保密和安全保护机制)/或:子模式结构001用户分组显示显示每个分组的联系人002联系人查询快速查找的联系人003用户账号管理修改昵称、密码、个性签名004联系人的修改修改联系人信息005联系人的删除删除联系人信息006联系人的添加添加新的联系人007分组的创建创建分组008分组的修改修改分组009分组的删除删除分组4 物理结构设计(侯琦瑞)4.1 存储结构随着用户的增多,系统数据也会越来越多,所以要两个比较大的盘驱分别建立一个主数据文件和一个日志文件就可以了。
4.2 索引由于基本表Worker,linkman,Grouping的主码Name,ID,G_number经常在查询条件和连接操作的连接条件中出现,且它们的值唯一,考虑在两个属性上建立唯一性索引;5实施(李玉舟)5.1 建立数据库create database TXLon(name=TXL,filename='D:\通讯录数据库\TXL.mdf',size=100MB,maxsize=UNLIMITED,filegrowth=50MB)log on(name=XSGL_log,filename='E:\通讯录数据库\TXL_log.ldf', size=3,maxsize=50MB,filegrowth=2MB)5.2建立基本表SQL语句或者图形界面截图。
--(1)创建用户表Workercreate table Worker(ID char(10)primary key,Nickname char(20)not null,Password char(20)not null,Qianming char(50));--(2)创建分组Groupingcreate table Grouping(G_number char(10)primary key,G_Name char(20)not null);--(3)创建联系人表Linkmancreate table Linkman(Name char(20)primary key,Sex char(2)check(Sex='男'or Sex='女')DEFAULT null, Concern char(10)DEFAULT null,Phone char(11)DEFAULT null,Landline char(10)DEFAULT null,QQ char(11)DEFAULT null,E_mail char(30)DEFAULT null,Work char(20)DEFAULT null,Address char(30)DEFAULT null,Birthday date DEFAULT null);--(4)创建拥有表Owncreate table Own(ID char(10),G_number char(10),Name char(20),primary key(ID,G_number,Name),FOREIGN KEY (ID)REFERENCES Worker(ID),FOREIGN KEY (G_number)REFERENCES Grouping(G_number), FOREIGN KEY (Name)REFERENCES Linkman(Name));5.3建立视图6功能实现(查孟博)6.1注册用户Insert into Worker(ID,Nickname,password,Qianming) Values('00000','用户1','00000','我的联系人我做主!');6.2管理用户(修改昵称、密码、个性签名)Update WorkerSet Nickname='超级用户',Password='11111',Qianming='常联系'Where ID='00000';6.3创建分组Insert into Grouping(G_number,G_name)Values('0000000000','firends');Insert into Grouping(G_number,G_name)Values('0000000001','family');6.4修改分组名update Groupingset G_name='my firends' where G_number='0000000000';6.5删除分组delete from Groupingwhere G_number='0000000001';6.5添加联系人功能(功能)Insert intoLinkman(L_number,Name,Sex,Concern,QQ,Phone,Landline,E_mail,Work,Address,Birthday) Values('0000000001','刘江涛','男',null,'1234567891','12345678901',null,null,null,null,null);Insert intoLinkman(L_number,Name,Sex,Concern,QQ,Phone,Landline,E_mail,Work,Address,Birthday) Values('0000000002','查孟博','男',null,'1234567892','12345678902',null,null,null,null,null);Insert intoLinkman(L_number,Name,Sex,Concern,QQ,Phone,Landline,E_mail,Work,Address,Birthday) Values('0000000003','赵河南','男',null,'1234567893','12345678903',null,null,null,null,null);Insert intoLinkman(L_number,Name,Sex,Concern,QQ,Phone,Landline,E_mail,Work,Address,Birthday) Values('0000000004','侯琦瑞','男',null,'1234567894','12345678904',null,null,null,null,null);Insert intoLinkman(L_number,Name,Sex,Concern,QQ,Phone,Landline,E_mail,Work,Address,Birthday) Values('0000000005','袁向阳','男',null,'1234567895','12345678905',null,null,null,null,null);Insert intoLinkman(L_number,Name,Sex,Concern,QQ,Phone,Landline,E_mail,Work,Address,Birthday) Values('0000000006','李玉舟','男',null,'1234567896','12345678906',null,null,null,null,null);Insert intoLinkman(L_number,Name,Sex,Concern,QQ,Phone,Landline,E_mail,Work,Address,Birthday) Values('0000000007','陈佳奇','男',null,'1234567897','12345678907',null,null,null,null,null);6.6联系人归属Insert into Own(ID,G_number,L_number) values('00000','0000000000','0000000001'); Insert into Own(ID,G_number,L_number) values('00000','0000000000','0000000002'); Insert into Own(ID,G_number,L_number) values('00000','0000000000','0000000003'); Insert into Own(ID,G_number,L_number) values('00000','0000000000','0000000004'); Insert into Own(ID,G_number,L_number) values('00000','0000000000','0000000005'); Insert into Own(ID,G_number,L_number) values('00000','0000000000','0000000006'); Insert into Own(ID,G_number,L_number) values('00000','0000000000','0000000007');6.7修改联系人功能update Linkmanset Name='侯启瑞'where L_number='0000000004';6.8删除联系人功能delete from Ownwhere L_number='0000000004';delete from Linkmanwhere L_number='0000000004';6.9关键字查询联系人功能select*from Linkmanwhere L_number='0000000001';6.10条件查询联系人功能select ,Phonefrom Linkman L,Own,Grouping Gwhere L.L_number=Own.L_number and Own.G_number=G.G_number and G_name='my firends';(注:范文素材和资料部分来自网络,供参考。