通讯录管理系统数据库设计与实现1 需求简介()1.1功能概述1.2数据要求功能中涉及的数据项说明。
1.用分组基本信息(Admin):包括分组号、分组名;2.用户基本信息(Dormitory):包括账号、密码、昵称、个性签名,这样可以方便分清用户记录的联系人;3.联系人基本信息(linkman):包括、性别、关系、手机号、座机号、QQ、E-mail、生日、工作单位、地址、所属用户、所属分组;1.3数据字典数据项列表数据项编号数据项名数据项含义与其它数据项的关系存储结构别名TXL-1 G_number 分组号CHAR(10)TXL-2 G_name 分组名CHAR(20)TXL-3 ID 所属用户等同于账号ID CHAR(10)TXL-4 ID 账号CHAR(10)TXL-5 Nickname 昵称CHAR(20)TXL-6 Password 密码CHAR(20)TXL-7 Qianming 签名CHAR(50)TXL-8 L_number 联系人号CHAR(100)TXL-9 Name CHAR(20)TXL-10 Sex 性别CHAR(2)TXL-11 Concern 关系CHAR(10)TXL-12 Phone 手机号CHAR(11)TXL-13 Landline 座机号CHAR(10)TXL-14 QQ QQ号CHAR(10)TXL-15 Email E-mail CHAR(20)TXL-16 Work 工作单位CHAR(30)TXL-17 Address 地址CHAR(30)TXL-18 Birthday 生日Date数据结构列表数据结构编号数据结构名数据结构含义组成DS-1 Grouping分组G_number,G_name,ID,DS-2 Worker 用户ID,Nickname,Password,QianmingDS-3 Linkman 联系人L_number,Name,Sex,Concern,Phone,Landline,QQ,Email,Work,Address,Birthday,ID,G_number数据结构编号数据结构名数据结构含义组成DS-4 Own 拥有ID,G_number,Name2概念结构设计(江涛)ER图(如果系统没有那么复杂,可以不需要画局部ER图)属性请在ER图后单独说明。
3逻辑结构设计(佳奇)3.1将E-R图转换为关系模型关系模型图中实体所具有的属性为:User(ID,Nickname,Password,Qianming);Gro u ping(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','',null,null,null,null,null); Insert intoLinkman(L_number,Name,Sex,Concern,QQ,Phone,Landline,E_mail,Work,Address,Birthday) Values('0000000002','查孟博','男',null,'1234567892','',null,null,null,null,null); Insert intoLinkman(L_number,Name,Sex,Concern,QQ,Phone,Landline,E_mail,Work,Address,Birthday) Values('0000000003','','男',null,'1234567893','',null,null,null,null,null);Insert intoLinkman(L_number,Name,Sex,Concern,QQ,Phone,Landline,E_mail,Work,Address,Birthday) Values('0000000004','侯琦瑞','男',null,'1234567894','',null,null,null,null,null); Insert intoLinkman(L_number,Name,Sex,Concern,QQ,Phone,Landline,E_mail,Work,Address,Birthday) Values('0000000005','袁向阳','男',null,'1234567895','',null,null,null,null,null); Insert intoLinkman(L_number,Name,Sex,Concern,QQ,Phone,Landline,E_mail,Work,Address,Birthday) Values('0000000006','玉舟','男',null,'1234567896','',null,null,null,null,null); Insert intoLinkman(L_number,Name,Sex,Concern,QQ,Phone,Landline,E_mail,Work,Address,Birthday) Values('0000000007','佳奇','男',null,'1234567897','',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';。