Vue/Egg大型项目开发(二)数据库设计
项目Github地址:前端(https://github.com/14glwu/stuer)后端(https://github.com/14glwu/stuer-server)
项目线上预览:http://stuer.ericwu.cn
前言
项目其他的实现都好说,不过为了梳理好思路和架构首先要搞定数据库 设计
这里推荐使用processon.com,因为是个在线的作图平台可以很方便的和他人合作。
设计出数据表后,就可以使用sequelize来生成相应的orm对象,然后sync到数据库中从而生成对应的数据表。
数据表类图
这是我项目的设计图,后期可能还会有修改。

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

比如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;
};
数据表说明
|
字段
|
类型
|
说明
|
|
id
|
Number
|
自增ID
|
|
email
|
String
|
邮箱,也是账号
|
|
password
|
String
|
密码,非明文存储
|
|
字段
|
类型
|
说明
|
|
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未认证用户
|
|
字段
|
类型
|
说明
|
|
id
|
Number
|
自增ID
|
|
name
|
String
|
公司名
|
|
info
|
String
|
密码,非明文存储
|
|
regNum
|
String
|
公司经营注册号
|
|
address
|
String
|
公司地址
|
|
字段
|
类型
|
说明
|
|
id
|
Number
|
专业ID
|
|
name
|
String
|
专业名
|
|
info
|
String
|
专业介绍
|
|
academyId
|
Number
|
所属学院ID
|
|
字段
|
类型
|
说明
|
|
id
|
Number
|
学院ID
|
|
name
|
String
|
学院名
|
|
info
|
String
|
学院介绍
|
|
字段
|
类型
|
说明
|
|
id
|
Number
|
OA的ID,自增
|
|
userId
|
Number
|
发OA人,只有学校管理员可以发OA
|
|
title
|
String
|
帖子标题
|
|
content
|
String
|
帖子内容
|
|
type
|
Number
|
OA类型
|
|
academyId
|
Number
|
OA发布的来源,如工学院
|
|
字段
|
类型
|
说明
|
|
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求职区
|
|
字段
|
类型
|
说明
|
|
id
|
Number
|
帖子ID,自增
|
|
userId
|
Number
|
评论者
|
|
postId
|
String
|
评论帖子
|
|
content
|
String
|
帖子内容
|
|
字段
|
类型
|
说明
|
|
id
|
Number
|
回复 ID,自增
|
|
commentId
|
String
|
要回复的评论ID
|
|
replyId
|
String
|
要回复的回复ID
|
|
type
|
Number
|
回复类型,1回复评论、2回复回复
|
|
conntent
|
String
|
内容
|
|
fromUserId
|
Number
|
回复者ID
|
|
toUserId
|
Number
|
被回复者ID
|
|
字段
|
类型
|
说明
|
|
id
|
Number
|
点赞ID,自增
|
|
userId
|
Number
|
点赞者
|
|
postId
|
Number
|
帖子ID
|
|
commentId
|
Number
|
评论ID
|
|
replyId
|
Number
|
回复ID
|
|
type
|
Number
|
点赞类型,1点赞帖子、2点赞评论、3点赞回复
|
|
字段
|
类型
|
说明
|
|
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删除
|
|
字段
|
类型
|
说明
|
|
id
|
Number
|
关注ID,自增
|
|
userId
|
Number
|
关注者ID
|
|
followUserId
|
Number
|
被关注者ID
|
|
status
|
Number
|
关注状态,1关注,0取关
|
|
字段
|
类型
|
说明
|
|
id
|
Number
|
配置ID,自增
|
|
name
|
String
|
配置名
|
|
desc
|
String
|
配置描述
|
|
defaultValue
|
String
|
配置初始值
|
|
status
|
Number
|
配置状态:0关闭,1启用,2废弃
|
|
type
|
String
|
配置值类型,对象型object、数组型array、字符串型string、数字型number、布尔型boolean
|
|
字段
|
类型
|
说明
|
|
id
|
Number
|
用户配置ID,自增
|
|
userId
|
Number
|
用户ID
|
|
settingId
|
Number
|
配置ID
|
|
value
|
String
|
配置值
|
|
字段
|
类型
|
说明
|
|
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
|
消息接受者
|
Vue/Egg大型项目开发(二)数据库设计的更多相关文章
- Vue/Egg大型项目开发(一)搭建项目
项目Github地址:前端(https://github.com/14glwu/stuer)后端(https://github.com/14glwu/stuer-server) 项目线上预览:http ...
- 小福bbs—项目系统设计与数据库设计
这个作业属于哪个课程 班级链接 这个作业要求在哪里 作业要求的链接 团队名称 小福bbs 这个作业的目标 实现对校园论坛软件的制作,使其能够发布帖子,查看信息等 作业的正文 小福bbs--项目需求分析 ...
- T-MAX—项目系统设计与数据库设计
团队作业第四次-项目系统设计与数据库设计 这个作业属于哪个课程 2019秋福大软件工程实践Z班 这个作业要求在哪里 团队作业第四次-项目系统设计与数据库设计 团队名称 T-MAX 这个作业的目标 在开 ...
- Computer-Hunters——项目系统设计与数据库设计
Computer-Hunters--项目系统设计与数据库设计 前言 本次作业属于2019秋福大软件工程实践Z班 本次作业要求 团队名称: Computer-Hunters 本次作业目标:撰写一份针对团 ...
- 循序渐进开发WinForm项目(1) --数据库设计和项目框架的生成
随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了. 其实也许我 ...
- 基于Vue的WebApp项目开发(二)
利用webpack解析和打包.vue组件页面 相关知识: vue项目中的每个页面其实都是一个.vue的文件,这种文件,Vue称之为组件页面,必须借助于webpack的vue-loader才能运行,所以 ...
- 基于Vue的WebApp项目开发(四)
实现新闻咨询页面 目录结构 步骤一:创建newslist.vue文件 <template> <div id="tml"> <!--使用mui框架,实现 ...
- CakeDC(cakephp company)Git workflow--适合于较大团队大型项目开发
CakeDC Git workflow是一个项目开发和版本发布的工作流,在这个工作流程中开发和版本发布周期是基于几个关键阶段(key phases): Development: 所有活跃的开发活动都由 ...
- 第003篇 深入体验C#项目开发(二)
下半本的5个项目也看完了,还是跳着看,只看大概! 第6章 企业交互系统 作者入职一年,开始带新的2个实习生的项目!一个外资企业内部的OA交互系统,这次又是一个基于w ...
随机推荐
- mayan游戏
这道题超级好 就是我太菜了写了几个小时不算是debug了几个小时. 我只想出了几个小剪枝 可能是状态不太好吧 写完这道题真的是完美诠释了什么,叫做: 暴力出奇迹!!! 真的是太暴力了. 最多只移动5步 ...
- odoo按钮触发下载文件
测试环境:Odoo8.0 1.在你的模块中创建一个方法,返回url 举个例子, @api.multi def get_stock_file(self): return{'type':'ir.actio ...
- 自学传说中的php接口编写
一个前端学php,感觉不可思议,但实际上面试中都会问你后台会不会.这时候php就派上用场了. 下面的是我自己百度研究的一个些心得分享一下: html代码 <!DOCTYPE html> & ...
- Python 多进程和进程池
一,前言 进程:是程序,资源集合,进程控制块组成,是最小的资源单位 特点:就对Python而言,可以实现真正的并行效果 缺点:进程切换很容易消耗cpu资源,进程之间的通信相对线程来说比较麻烦 线程:是 ...
- 学习animate.css包含了一组炫酷、有趣、跨浏览器的动画
1.animate.css包含了一组炫酷.有趣.跨浏览器的动画,可以在你的项目中直接使用. 第一步:引入animate.css样式文件或者引入某些平台的CDN文件: <head> < ...
- HTML元素解释
<html> 与 </html> 之间的文本描述网页 <body> 与 </body> 之间的文本是可见的页面内容 <head> 与 < ...
- LightGBM总结
一.LightGBM介绍 LightGBM是一个梯度Boosting框架,使用基于决策树的学习算法.它可以说是分布式的,高效的,有以下优势: 1)更快的训练效率 2)低内存使用 3)更高的准确率 4) ...
- 基数排序-LSD
这个最低位优先的基数排序,非常适合移植到硬件设备中,所以,我们提供一个C源码 —————————————————————————————————————— #include <stdio.h&g ...
- 再次聊一聊promise settimeout asycn awiat执行顺序---js执行机制 EVENT LOOP
首先js是单线程 分为同步和异步,异步又分为(macrotask 宏任务 和 microtask微任务 ), 这图还是很清晰嘛,再来一张 总结一下,就是遇到同步先执行同步,异步的丢到一边依次排队,先排 ...
- Shadow DOM及自定义标签
参考链接:点我 一.什么是Shadow DOM Shadow DOM,直接翻译的话就是 影子 DOM,可以理解为潜藏在 DOM 结构中并且我们无法直接控制操纵的 DOM 结构.类似于下面这种结构 Sh ...