Vue/Egg大型项目开发(二)数据库设计

项目Github地址:前端(https://github.com/14glwu/stuer)后端(https://github.com/14glwu/stuer-server

项目线上预览:http://stuer.ericwu.cn

前言

项目其他的实现都好说,不过为了梳理好思路和架构首先要搞定数据库 设计

这里推荐使用processon.com,因为是个在线的作图平台可以很方便的和他人合作。

设计出数据表后,就可以使用sequelize来生成相应的orm对象,然后sync到数据库中从而生成对应的数据表。

数据表类图

这是我项目的设计图,后期可能还会有修改。

Vue/Egg大型项目开发(二)数据库设计

sequelize定义对应的orm对象

在model文件夹中定义对应的orm对象

Vue/Egg大型项目开发(二)数据库设计

比如user.js中如下,值得注意的是我们添加了一些额外字段以应对后期表中字段的添加。

代码中的User.sync()可以帮助我们同步到数据库,也就是自动生成users数据表

'use strict';

module.exports = app => {
const { STRING, INTEGER, TEXT } = app.Sequelize; const User = app.model.define(
'user',
{
id: { type: INTEGER, primaryKey: true, autoIncrement: true },
email: { type: STRING, comment: '用户邮箱,也是账号' },
password: { type: STRING, comment: '用户密码' },
reverse1: STRING,
reverse2: STRING(1000),
reverse3: STRING(30),
reverse4: INTEGER,
reverse5: TEXT,
reverse6: TEXT('tiny'),
},
{
paranoid: true,
underscored: false,
}
);
User.sync();
return User;
};

数据表说明

createAt、updateAt、deleteAt是每个表都会有的字段,为Date类型,代表创建、更新、删除时间。数据的删除一律使用软删除。
(1)用户表(users),用于存储用户的账号信息。
字段
类型
说明
id
Number
自增ID
email
String
邮箱,也是账号
password
String
密码,非明文存储
 
(2)用户信息表(user-infos),用于存储用户的个人相关信息。
字段
类型
说明
id
Number
用户ID,与用户表的id保持一致。
email
String
邮箱,也是账号
role
Number
用户角色ID,1毕业生,2在校生,3教师,4企业用户,5运营管理员,6学校管理员,7企业管理员,8超级管理员
name
String
用户真实姓名
nickName
String
用户昵称
personSign
String
个性签名
avatar
String
用户头像url
age
Number
年龄
gender
String
性别
phone
String
手机号码
birthTime
Date
出生时间
birthPlace
String
出生地点
eduLevel
String
学历
party
String
政治面貌
idCard
String
证件号码
idCardType
Number
证件类型,1身份证,2护照,3港澳通行证,4台胞证,5军官证,6其他
stuNum
String
学号
teaNum
String
教师编号
graduated
Number
是否毕业生,1毕业生,0在校生
enterTime
Date
入学时间
graduateTime
Date
毕业时间
nowStatus
Number
目前状态,1未就业,2就业,3升学,4留学,5创业
liveAddress
String
现居地,中文地址
liveLocation
String
现居地坐标,经纬度坐标
majorId
Number
专业ID
academyId
Number
学院ID
companyId
Number
公司ID
mSalary
Number
月薪
ySalary
Number
年薪
resume
String
个人简历
certifyType
Number
认证类型,1认证用户,0未认证用户
 
(3)公司表(companies),用于存储公司的相关信息。
字段
类型
说明
id
Number
自增ID
name
String
公司名
info
String
密码,非明文存储
regNum
String
公司经营注册号
address
String
公司地址
 
(4)专业表(majors),用于存储专业的相关信息。
字段
类型
说明
id
Number
专业ID
name
String
专业名
info
String
专业介绍
academyId
Number
所属学院ID
 
(5)学院表(academies),用于存储学院的相关信息。
字段
类型
说明
id
Number
学院ID
name
String
学院名
info
String
学院介绍
 
(6)办公自动化表(oas),用于存储办公自动化。
字段
类型
说明
id
Number
OA的ID,自增
userId
Number
发OA人,只有学校管理员可以发OA
title
String
帖子标题
content
String
帖子内容
type
Number
OA类型
academyId
Number
OA发布的来源,如工学院
 
(7)帖子表(posts),用于存储帖子的相关信息,包括讨论区、求职区、找对象、匿名区的帖子。
字段
类型
说明
id
Number
帖子ID,自增
userId
Number
发帖人
title
String
帖子标题
content
String
帖子内容
top
Number
是否置顶,1是,0否
highlight
Number
是否精华帖,1是,0否
tags
String
帖子标签
type
Number
帖子类型,1讨论区,2树洞,3找对象,4求职区
 
(8)评论表(comments),用于存储帖子的评论信息。
字段
类型
说明
id
Number
帖子ID,自增
userId
Number
评论者
postId
String
评论帖子
content
String
帖子内容
 
(9)回复表(replies),用于存储回复信息,可以回复评论/回复。
字段
类型
说明
id
Number
回复 ID,自增
commentId
String
要回复的评论ID
replyId
String
要回复的回复ID
type
Number
回复类型,1回复评论、2回复回复
conntent
String
内容
fromUserId
Number
回复者ID
toUserId
Number
被回复者ID
 
(10)点赞表(likes),用于存储点赞的相关信息,可以点赞帖子/评论/回复。
字段
类型
说明
id
Number
点赞ID,自增
userId
Number
点赞者
postId
Number
帖子ID
commentId
Number
评论ID
replyId
Number
回复ID
type
Number
点赞类型,1点赞帖子、2点赞评论、3点赞回复
 
(11)私信消息表(messages),用于存储私信消息。
字段
类型
说明
id
Number
消息ID,自增
userId
Number
发送者用户ID
friendId
Number
接收者用户ID
senderId
Number
发送者用户ID
receiveId
Number
接受者用户ID
msgType
Number
消息类型,1普通消息,2系统消息
content
String
消息内容
sendTime
Date
消息发送时间
status
Number
消息状态,1未读,2已读,3删除
 
(12)用户关注表(follows),用于存储用户关注用户信息。
字段
类型
说明
id
Number
关注ID,自增
userId
Number
关注者ID
followUserId
Number
被关注者ID
status
Number
关注状态,1关注,0取关
 
(13)设置表(settings),用于存储公共设置。
字段
类型
说明
id
Number
配置ID,自增
name
String
配置名
desc
String
配置描述
defaultValue
String
配置初始值
status
Number
配置状态:0关闭,1启用,2废弃
type
String
配置值类型,对象型object、数组型array、字符串型string、数字型number、布尔型boolean
 
(14)用户设置表(user-settings),用于存储用户个人设置。
字段
类型
说明
id
Number
用户配置ID,自增
userId
Number
用户ID
settingId
Number
配置ID
value
String
配置值
 
(15)消息通知表(notifies),用于存储消息通知。
字段
类型
说明
id
Number
消息通知ID,自增
content
String
消息内容,用于系统通知
type
Number
消息类型,1提醒,2系统通知,3私信
targetId
Number
目标的ID,比如帖子ID或者OA ID或者用户ID
targetType
String
目标的类型,帖子post、OA oa、用户user
action
String
动作类型,点赞like、评论comment、
senderId
Number
发送者ID
senderType
String
发送者类型,普通用户user,管理员admin
isRead
Number
阅读状态,1已读,0未读
userId
Number
消息接受者
 
上一篇:ppi


下一篇:Netbeans7.0完美中文+Consolas字体显示配置(亲测可用)