项目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;
};

数据表说明

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
消息接受者
 

Vue/Egg大型项目开发(二)数据库设计的更多相关文章

  1. Vue/Egg大型项目开发(一)搭建项目

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

  2. 小福bbs—项目系统设计与数据库设计

    这个作业属于哪个课程 班级链接 这个作业要求在哪里 作业要求的链接 团队名称 小福bbs 这个作业的目标 实现对校园论坛软件的制作,使其能够发布帖子,查看信息等 作业的正文 小福bbs--项目需求分析 ...

  3. T-MAX—项目系统设计与数据库设计

    团队作业第四次-项目系统设计与数据库设计 这个作业属于哪个课程 2019秋福大软件工程实践Z班 这个作业要求在哪里 团队作业第四次-项目系统设计与数据库设计 团队名称 T-MAX 这个作业的目标 在开 ...

  4. Computer-Hunters——项目系统设计与数据库设计

    Computer-Hunters--项目系统设计与数据库设计 前言 本次作业属于2019秋福大软件工程实践Z班 本次作业要求 团队名称: Computer-Hunters 本次作业目标:撰写一份针对团 ...

  5. 循序渐进开发WinForm项目(1) --数据库设计和项目框架的生成

    随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了. 其实也许我 ...

  6. 基于Vue的WebApp项目开发(二)

    利用webpack解析和打包.vue组件页面 相关知识: vue项目中的每个页面其实都是一个.vue的文件,这种文件,Vue称之为组件页面,必须借助于webpack的vue-loader才能运行,所以 ...

  7. 基于Vue的WebApp项目开发(四)

    实现新闻咨询页面 目录结构 步骤一:创建newslist.vue文件 <template> <div id="tml"> <!--使用mui框架,实现 ...

  8. CakeDC(cakephp company)Git workflow--适合于较大团队大型项目开发

    CakeDC Git workflow是一个项目开发和版本发布的工作流,在这个工作流程中开发和版本发布周期是基于几个关键阶段(key phases): Development: 所有活跃的开发活动都由 ...

  9. 第003篇 深入体验C#项目开发(二)

    下半本的5个项目也看完了,还是跳着看,只看大概!        第6章 企业交互系统            作者入职一年,开始带新的2个实习生的项目!一个外资企业内部的OA交互系统,这次又是一个基于w ...

随机推荐

  1. 程序员的沟通之痛https://blog.csdn.net/qq_35230695/article/details/80283720

    个人理解: 一般刚工作的程序员总觉得技术最重要.但是当工作年限超过3年.或者岗位需要涉及汇报.需求对接等就会发现沟通非常重要.也许在大公司还不那么明显,但是在小公司.小团队或者创业,沟通甚至可以说是第 ...

  2. vue中用ajax上传文件

    直接上代码 <input class="file-btn" type="file" @change="uploadCompany($event) ...

  3. linux 环境变量函数getenv()和putenv()的使用

    环境变量相关函数: getenv()和putenv() 代码示例[Linux程序设计(4th)_4.2小节配套代码]: 程序功能:编写一个程序来打印所选的任意环境变量的值:如果给程序传递第二个参数,还 ...

  4. 类的命名空间&组合

    类的命名空间◆类中的静态变量可以被类调用也可以被对象调用◆对不可变数据类型来说,类变量最好用类名操作 class Person: money = 0 mother = Person() father ...

  5. input type = file 在部分安卓手机上无法调起摄像头和相册

    移动端H5web 用input type = file 在部分安卓手机上无法调起摄像头拍照,有的也无法访问相册而是直接访问了文档,解决办法是: 加上 accept = "image/*&qu ...

  6. 3.2.3 SpringMVC注解式开发

    SpringMVC注解式开发 1. 搭建环境 (1) 后端控制器无需实现接口 , 添加相应注解 Controller类添加注解 @Controller //该注解表将当前类交给spring容器管理 @ ...

  7. JavaScript实现RSA加解密

    在GitHub上找到jsencrypt.js对RSA加解密的工具文件,地址分别是:https://github.com/travist/jsencrypt和https://github.com/ope ...

  8. 打开eclipse "Initializing Java Tooling"错误

    问题:打开eclipse初始化界面过程中弹出An internal error occurred during: "Initializing Java Tooling". java ...

  9. Lintcode: Nuts & Bolts Problem

    Given a set of n nuts of different sizes and n bolts of different sizes. There is a one-one mapping ...

  10. django请求接收及文件上传

    在写后端交互页面的时候常常会遇到接收来自前端页面请求的情况,例如 在写注册页面的时候,会提交一些页面信息,这时需要分三种情况讨论 第一种,接收单项信息: v = request.POST.getlis ...