聊天室系统数据库设计案例
聊天室系统数据库设计
一、数据字典
用户表(users)
列名
数据类型
大小
分组名称
约束
描述
userid
int
主键
用户ID
username
varchar
20
非空
用户名
nickname
varchar
20
非空
昵称
telephone
varchar
20
非空
电话
email
varchar
20
邮件
age
int
18到60之间
年龄
sex
varchar
4
男或女
性别
address
varchar
200
默认“地址不详”
地址
remark
varchar
200
备注
roleid
int
外键
角ID
角表(roles)
列名
数据类型
大小
约束
描述
roleid
int
主键
角ID
rolename
varchar
20
非空
角名称
好友关系表(friendship)
列名
数据类型
大小
约束
描述
userid
int
外键
用户ID
friendid
int
外键
好友ID
groupid
int
外键
分组ID
分组表(user_group)
列名
数据类型
大小
约束
描述
groupid
int
主键
分组ID
groupname
varchar
20
非空
分组名称
聊天记录表(chat_log)
列名
数据类型
大小
约束
描述
logid
int
主键
记录ID
senderid
varchar
外键
发送人ID
receiverid
int
外键
接收人ID
sendtime
varchar
20
非空
发送时间
sendcontent
varchar
200
非空
聊天内容
remark
varchar
200
备注
二、E-R图
三、物理模型图
数据库创建
CREATE DATABASE chatingroom   
CREATE TABLE roles
(
roleid int CONSTRAINT r_PRIM PRIMARY KEY,
rolename varchar(20) NOT NULL,
)
CREATE TABLE users
(userid int CONSTRAINT u_PRIM PRIMARY KEY,
username varchar (20) NOT NULL,
nickname varchar(20)  NOT NULL,
telephone varchar(20)  NOT NULL,
email varchar (20),
age int check(age between 18 and 60),
sex varchar(4) check(sex='男'or sex='女'),
address varchar(200) DEFAULT'地址不详',
remark varchar (200),
roleid int CONSTRAINT r_FORE FOREIGN KEY REFERENCES roles(roleid),
status int DEFAULT'1',
password varchar(10) DEFAULT'123',
)
CREATE TABLE user_group
(
groupid int CONSTRAINT g_PRIM PRIMARY KEY,
groupname varchar(20)  NOT NULL,
)
CREATE TABLE friendship
(
userid int CONSTRAINT u_FORE FOREIGN KEY REFERENCES users(userid),
friendid int CONSTRAINT f_FORE FOREIGN KEY REFERENCES users(userid),
gruopid int CONSTRAINT g_FORE FOREIGN KEY REFERENCES user_group(groupid),
)
CREATE TABLE chat_log
(
logid int CONSTRAINT l_PRIM PRIMARY KEY,
senderid int CONSTRAINT s_FORE FOREIGN KEY REFERENCES users(userid),
recriverid int CONSTRAINT m_FORE FOREIGN KEY REFERENCES users(userid),
sendtime varchar (20) not null,
sendcontent varchar(200) not null,
remark varchar (200),
)
五、数据库调试
-- ----------------------------
-- Records of roles
-- ----------------------------
INSERT INTO roles VALUES ('1', '管理员');
INSERT INTO roles VALUES ('2', '普通用户');
-- ----------------------------
-- Records of users
-- ----------------------------
INSERT INTO users VALUES ('1', 'admin', '管理员', '', '', '32', '男', '青岛市市北区辽宁路1000号', '系统管理员', '1',123);
INSERT INTO users VALUES ('2', 'testuser1', '张小三', '', '', '23', '男', '青岛市市南区山东路1200号', '普通用户', '2', 123);
INSERT INTO users VALUES ('3', 'testuser2', '王小五', '', '', '28', '男', '青岛市崂山区苗岭路1300号', '普通用户', '2', 123);
INSERT INTO users VALUES ('4', 'testuser3', '凤飞飞', '', '', '21', '女', '青岛市黄岛区长江路1400号', '普通用户', '2', 123);
-- ----------------------------
-- Records of user_group
-- ----------------------------
INSERT INTO user_group VALUES ('1', '我的好友');
INSERT INTO user_group VALUES ('2', '陌生人');
INSERT INTO user_group VALUES ('3', '黑名单');
INSERT INTO user_group VALUES ('4', '我的网友');
-- ----------------------------
-- Records of friendship
-- ----------------------------
INSERT INTO friendship VALUES ('1', '2', '1');
INSERT INTO friendship VALUES ('1', '3', '1');
INSERT INTO friendship VALUES ('1', '4', '1');
INSERT INTO friendship VALUES ('2', '3', '1');
INSERT INTO friendship VALUES ('2', '4', '2');
INSERT INTO friendship VALUES ('3', '2', '1');
INSERT INTO friendship VALUES ('3', '4', '4');
-- --------------------------------
-- 1、根据用户名和密码查询用户信息(需要角名称)
-- 2、插入用户信息
-- 3、修改用户表添加一个状态列:status int default 1
-- 4、更新用户状态=0或1
-- 5、查看所有聊天记录信息

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。