Welcome everyone

毕业设计 数据库表的设计与创建

毕业设计 汪明鑫 1086浏览 0评论

ER图

 

好久没画过ER图,不知道画的对不对,一开始没画,答辩老师说让画ER图

 

数据库详细设计

表3.1 用户表

字段名称 字段含义 字段类型 备注
Id 自增主键 Int
number 学号/教师号 VARCHAR(20)
Name 姓名 VARCHAR(20)
classes 班级 VARCHAR(20)
sex 性别 INT(1) 0:男 1:女
nickname 昵称 VARCHAR(20)
phone_number 手机号 VARCHAR(20)
PASSWORD 密码 VARCHAR(100) 加密后的密码
signature 个性签名 VARCHAR(100)
    TYPE 用户类型 INT(1) 0:学生 1:教师
is_admin 是否为管理员 INT(1) 0:不是 1:是
status 用户状态 INT(1) 0:正常 1:禁用

表3.1是用户表。这里存的密码不是用户输入的密码,是通过加密算法加密后的密码,在一定程度上增加了安全性,加密的方法在下一章项目实现讲。Type表示用户的种类,0是默认值表示学生,number对应填学号,1表示教师,number对应填教师号,且教师的班级可不填。Is_admin表示用户是否为管理员,管理员有后台管理权限,在登陆时会根据这个字段判断。Status表示用户的状态,初始用户注册后都为正常,管理员会对发布恶意言论和恶意资料的用户处以禁用的操作,禁用的用户登陆不了平台。

 

表3.2 资料表

字段名称 字段含义 字段类型 备注
Id 自增主键 Int
user_id 发布人id Int
Name 资料名 VARCHAR(50)
description 描述 VARCHAR(50)
TYPE 类型 VARCHAR(20)
file_path 存储路径 VARCHAR(100) 文件在fastDFS上的存储路径
download_num 下载次数 INT
create_time 发布时间 DATETIME

 

表3.2是资料表,值得说明的有2个字段,file_path和download_num。file_path是资料成功上传至fastDFS后返回的唯一标识,也是存储路径。download_num是资料在用户下载一次就会记录一次,使用这个字段的目的在于,可以根据下载的次数来标识资料的热度,并根据下载次数排序。

 

表3.3 活动表

字段名称 字段含义 字段类型 备注
Id 自增主键 Int
user_id 发布人id Int
topic 活动主题 VARCHAR(20)
description 描述 VARCHAR(100)
create_time 发布时间 DATETIME
start_time 开始时间 DATETIME
address 地点 VARCHAR(100)
cost 预计需要时长 FLOAT 单位小时
Total_number 人数规模 INT 1:1-20人

2:20-50人

3:50-100人

4:100人以上

表3.3活动表对应学习活动,学习活动是线上创建、线下组织,需要指定开始时间、地点,Total_number是活动的大致预计人数规模,1表示人数规模在1-20人,2表示人数规模在20-50人,3表示50-100人,4表示100人以上。可以根据实际参与人编辑活动的人数规模。

 

表3.4 活动参与人表

字段名称 字段含义 字段类型 备注
Id 自增主键 Int
user_id 发布人id Int
activity_id 活动id Int

表3.4主要是记录每个活动的参与人,为了在界面展示出活动参与人的列表。而且在user_id、activity_id设置了UNIQUE KEY,目的在于一个用户只能参加一个活动一次,避免重复操作,插入重复的新值。

 

表3.5 图书表

字段名称 字段含义 字段类型 备注
Id 自增主键 Int
user_id 发布人id Int
Name 书名 VARCHAR(50)
description 描述 VARCHAR(50)
TYPE 类型 VARCHAR(20)
cover_path 图书封面 VARCHAR(100) 存储路径
create_time 发布时间 DATETIME
STATUS 图书状态  INT(1) 0:未借出 1:借出

 

表3.5是记录图书信息的表。其中cover_path是图书展示时的封面,也是存储在fastDFS上。

表3.6 借书表

字段名称 字段含义 字段类型 备注
Id 自增主键 Int
user_id 借书人id Int
book_id 图书id Int
borrow_time 借书时间 DATETIME
keep_time 保存书的时长 INT 单位 天
willreturn_time 预计归还时间 DATETIME
realreturn_time 实际归还时间 DATETIME

 

 

表3.6记录借书的详情。keep_time表示用户保存借到的书的时长,以天为单位,borrow_time + keep_time = willreturn_time。但是往往还书可能提早也可能延期,所以我又加了个字段realreturn_time,表示实际归还图书的时间。

 

表3.7 帖子表

字段名称 字段含义 字段类型 备注
Id 自增主键 Int
user_id 发布人id Int
title 标题 VARCHAR(50)
content 内容 TEXT
create_time 发布时间 DATETIME
update_time 修改时间 DATETIME
like_num 赞的个数 INT
dislike_num 踩的个数 INT

 

表3.8 评论表

字段名称 字段含义 字段类型 备注
Id 自增主键 Int
user_id 发布人id Int
topic_id 帖子id Int
parent_id 评论id Int 默认为-1
content 内容 TEXT
create_time 发布时间 DATETIME

 

表3.8的评论分为两种,一种是对帖子的直接评论,parent_id默认为-1,另一种是对评论的回复,parent_id就是该评论的id,而topic_id置为-1,用这种方法区分评论和回复并可快速查出帖子下的所有评论以及每个里评论下的所有回复。

 

表3.9记录用户赞帖子表

字段名称 字段含义 字段类型 备注
Id 自增主键 Int
user_id 赞的用户id Int
topic_id 帖子id Int

 

表3.10 记录用户踩帖子表

字段名称 字段含义 字段类型 备注
Id 自增主键 Int
user_id 踩的用户id Int
topic_id 帖子id Int

 

表3.9、表3.10主要是为了记录点赞、踩帖子的用户,禁止对同一个帖子重复赞或踩。

 

SQL语句

CREATE DATABASE learningcenter;

#查看mysql的字符集
SHOW VARIABLES LIKE 'char%';

ALTER DATABASE learningcenter CHARACTER SET utf8;

ALTER TABLE USER CHARACTER SET utf8;

SET character_set_filesystem=utf8;


CREATE TABLE USER(
    id INT PRIMARY KEY AUTO_INCREMENT,
    number VARCHAR(20),  #学号
    NAME VARCHAR(20),    #姓名
    classes VARCHAR(20),   #班级
    sex INT(1) DEFAULT 0 COMMENT '0:男 1:女',
    nickname VARCHAR(20),  #昵称
    phone_number VARCHAR(20),  #手机号
    PASSWORD VARCHAR(100), #密码
    signature VARCHAR(100), #个性签名
    head_portrait VARCHAR(100), #头像路径
    TYPE INT(1) DEFAULT 0  COMMENT '0:学生 1:老师',
    is_admin INT(1) DEFAULT 0  COMMENT '0:不是 1:是',   #是不是管理员
    satus INT(1)  DEFAULT 0 COMMENT '0:正常 1:禁用' #用户状态  
) DEFAULT CHARSET=utf8 ;

CREATE TABLE book(
    id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT,
    NAME VARCHAR(50),
    description VARCHAR(50),
    TYPE VARCHAR(20),
    cover_path VARCHAR(100),   #图书封面路径
    create_time DATETIME DEFAULT NOW(),
    STATUS INT(1)  DEFAULT 0  COMMENT '0:未借出 1:借出'   
)DEFAULT CHARSET=utf8 ;


#借出表   user和book多对多
CREATE TABLE borrowbook(
    id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT,
    book_id INT,
    borrow_time DATETIME DEFAULT NOW(),   #借出时间
    keep_time INT,  #可以保存书的时间1-80天
    willreturn_time DATETIME DEFAULT NOW(),   #预计归还时间
    realreturn_time DATETIME,      #实际归还时间     如果超过多久没有归还是不是制定一个惩罚措施
    UNIQUE KEY(user_id,book_id)
)DEFAULT CHARSET=utf8 ;

CREATE TABLE activity(
    id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT, #发布人
    topic VARCHAR(20),
    description VARCHAR(100),
    create_time DATETIME DEFAULT NOW(),
    start_time DATETIME DEFAULT NOW(),
    address VARCHAR(100), #地点
    cost FLOAT, #预计需要几个小时
    img VARCHAR(100),
    total_number INT #人数限制
)DEFAULT CHARSET=utf8 ;

CREATE TABLE user_activity(
    id INT PRIMARY KEY AUTO_INCREMENT,
    activity_id INT, #活动
    user_id INT , #参与人
    UNIQUE KEY(activity_id,user_id)
)DEFAULT CHARSET=utf8 ;

CREATE TABLE materials(
     id INT PRIMARY KEY AUTO_INCREMENT,
     user_id INT, #发布人
     NAME VARCHAR(50),
     description VARCHAR(50),
     TYPE VARCHAR(20),
     file_path VARCHAR(100),
     download_num INT DEFAULT 0,
     create_time DATETIME DEFAULT NOW()	
)DEFAULT CHARSET=utf8 ;

CREATE TABLE topic(
     id INT PRIMARY KEY AUTO_INCREMENT,
     user_id INT, #发表人
     title VARCHAR(50),
     content TEXT,
     create_time DATETIME ,
     update_time DATETIME ,
     like_num INT DEFAULT 0,   #赞
     dislike_num INT DEFAULT 0 #踩	
)DEFAULT CHARSET=utf8 ;

#记录点赞
CREATE TABLE recordLike(
     id INT PRIMARY KEY AUTO_INCREMENT,
     topic_id INT,	
     user_id INT #发表人
)DEFAULT CHARSET=utf8 ;

#记录踩
CREATE TABLE recordDisLike(
     id INT PRIMARY KEY AUTO_INCREMENT,
     topic_id INT,	
     user_id INT #发表人
)DEFAULT CHARSET=utf8 ;


CREATE TABLE reply(
     id INT PRIMARY KEY AUTO_INCREMENT,
     parent_id INT DEFAULT -1, #表示没有父亲
     topic_id INT,
     user_id INT, #评论人
     content TEXT,
     create_time DATETIME DEFAULT NOW()
)DEFAULT CHARSET=utf8 ;

 

转载请注明:汪明鑫的个人博客 » 毕业设计 数据库表的设计与创建

喜欢 (2)

说点什么

您将是第一位评论人!

提醒
avatar
wpDiscuz