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

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

这里推荐使用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类型,代表创建、更新、删除时间。数据的删除一律使用软删除。

用户表(users)

说明:存储用户的账号信息

字段

类型

说明

id

Number

自增ID

email

String

邮箱,也是账号

password

String

密码,非明文存储

用户信息表(user-infos)

说明:存储用户的个人相关信息

字段

类型

说明

id

Number

用户ID,与用户表的id保持一致。

email

String

邮箱,也是账号

role

Number

用户角色ID,1校友,2在校生,3教师,4社区运营,5运营管理员,6学校管理员,7企业管理员,8超级管理员

roleName

String

用户角色名

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未认证用户,2运营认证的用户(某公司员工、某教师),3学校管理员认证的企业用户

公司表(companies)

说明:存储公司的相关信息

字段

类型

说明

id

Number

自增ID

name

String

公司名

info

String

密码,非明文存储

regNum

String

公司经营注册号

address

String

公司地址

专业表(majors)

说明:存储专业的相关信息

字段

类型

说明

id

Number

专业ID

name

String

专业名

info

String

专业介绍

academyId

Number

所属学院ID

学院表(academies)

说明:存储学院的相关信息

字段

类型

说明

id

Number

学院ID

name

String

学院名

info

String

学院介绍

办公自动化表(oas)

说明:存储办公自动化。

字段

类型

说明

id

Number

OA的ID,自增

userId

Number

发OA人,只有学校管理员可以发OA

title

String

帖子标题

content

String

帖子内容

type

Number

OA类型

academyId

Number

OA发布的来源,如工学院

帖子表(posts)

说明:存储帖子的相关信息,包括讨论区、求职区、找对象、匿名区的帖子。

字段

类型

说明

id

Number

帖子ID,自增

userId

Number

发帖人

title

String

帖子标题

content

String

帖子内容

top

Number

是否置顶,1是,0否

highlight

Number

是否精华帖,1是,0否

tag

String

帖子标签

type

Number

帖子类型,1讨论区,2求职区,3找对象,4匿名区

评论表(comments)

说明:存储帖子的评论信息

字段

类型

说明

id

Number

帖子ID,自增

userId

Number

评论者

postId

String

评论帖子

content

String

帖子内容

回复表(replies)

说明:存储回复信息,可以回复评论/回复。

字段

类型

说明

id

Number

回复 ID,自增

commentId

String

要回复的评论ID

replyId

String

要回复的回复ID

type

Number

回复类型,1回复评论、2回复回复

conntent

String

内容

fromUserId

Number

回复者ID

toUserId

Number

被回复者ID

点赞表(likes)

说明:存储点赞的相关信息,可以点赞帖子/评论/回复

字段

类型

说明

id

Number

点赞ID,自增

userId

Number

点赞者

postId

Number

帖子ID

commentId

Number

评论ID

replyId

Number

回复ID

type

Number

点赞类型,1点赞帖子、2点赞评论、3点赞回复

私信消息表(message)

说明:存储私信消息表

具体设计可以看链接:https://blog.csdn.net/aixiaoyang168/article/details/49304823

字段

类型

说明

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删除

原文地址:https://www.cnblogs.com/wuguanglin/p/stuer2.html

时间: 2024-10-14 20:23:46

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

项目开发中db设计

项目开发中db设计 0.根据原型分析出数据的由来和数据间的关系(实体关系); 1.提取字段,通过powerDesigner设计表; 2.先不加约束,先只建立数据上的单向关联,有需要时在建立双向关联或中间表;3.也可以先建立外键关系,最后删除外键关系;(方便查看表的关系);4.对实体对象通常会补充的字段:     id         主键    entity        关联实体/自己    isDelete varchar(1)  Null    #是否删除    CreateEmpId v

Android手机通讯录项目开发--联系人数据库contacts2.db介绍

项目描述:该项目为基于Android平台的手机通讯录,主要模块分为四个部分:联系人管理模块,通话记录管理模块,短信管理模块,系统设置模块. 系统结构图如下: 本项目启动时间:2014年5月28日 说明:本次开发项目的所有源码全部会分享给大家.开发此项目的目的有这几点:一.锻炼独立开发项目的能力,二.增加对Android开发的了解,三.熟悉Android通讯录机制. 闲话不多说,正式开始! 技术要点一:熟悉Android联系人数据库contacts2.db 1.获得联系人数据库contacts2.

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

CakeDC Git workflow是一个项目开发和版本发布的工作流,在这个工作流程中开发和版本发布周期是基于几个关键阶段(key phases): Development: 所有活跃的开发活动都由里程碑驱动,在这个阶段的产出是很不稳定的代码基线 QA: Quality assurance testing作为一开发周期的一部分,主要协助确保需求的满足性和质量的可接受性 Review 客户或者评审员面对的是一个稳定的代码基线,该基线已经经过了QA流程,质量上已经被QA人员认可 Release 发

iOS大型项目开发漫谈

标题有些吓人请不要害怕,不过这确实不是扫盲贴,需要一定的iOS开发基础.在我多年的码农生涯中绝大部分时间都是做的小项目,大一些的可能也就是百万行代码的样子,跟Windows系统几千万行源码比简直就是小巫见大巫.不过,一个iOS项目的源码有数百万行算蛮大了.我想说的是,人总是会成长,会担当更大的责任接受更大的挑战,终有一天组织会有重要任务交给你.不过软件开发不是一朝一夕,也不会有多么的轰轰烈烈,更多的是平淡中无数的细节处理.做大型项目未必就需要多么高深的技术,也许就是细节的科学处理与规范的管理.

iOS 大型项目开发漫谈

标题有些吓人请不要惧怕,不过这的确不是扫盲贴,需要必定的iOS开发根底.在我多年的码农生计中绝大部分时刻都是做的小项目,大一些的可能也即是百万行代码的姿态,跟Windows体系几千万行源码比几乎即是小巫见大巫.不过,一个iOS项目的源码稀有百万行算蛮大了.我想说的是,人老是会生长,会担任更大的职责接受更大的应战,终有一天安排会有主要任务交给你.不过软件开发不是一朝一夕,也不会有多么的轰轰烈烈,更多的是平平中很多的细节处理.做大型项目未必就需要多么深邃的技能,或许即是细节的科学处理与规范的管理.

大型项目开发: 隔离 (《大规模C++程序设计》书摘)

书中第六章 隔离. 主要在撰述什么须要定义在头文件?什么应当移到编译单元中? 核心仍然是先区分接口定义与实现细节.实现细节的改变会导致客户代码的又一次编译,从逻辑上也表示与客户代码间可能存在着强耦合. 实现细节与隔离 主要考察下面实现细节.它们会在接口中引入实现细节.也是须要考虑进行隔离的内容: 继承 分层 简单的说就是类的成员中有还有一个类的实例时,如Foo mFoo. 这个类就会依赖于Foo的定义.而转为持有地址时,即将关系从HasA改为HoldA时,就不存在这个问题.也就是定义为Foo*

大型项目开发: 头文件顺序

经验告诉我们,某些编码实践虽然在C++中完全合法,但是绝对不能应用于大型项目环境中. 大型项目环境下必须有适当的约束,否则很容易变得难以控制并很难维护(摘自<<大规模C++程序设计>>).下面以Chromium中运用的两个Coding Style中定义的头文件顺序为例. 头文件顺序的差异 WebKit/Blink遵循业界标准的定义,其实也是Lakos在<<大规模C++程序设计>>中建议的顺序 : 编译单元对应的头文件 (Related header file

【Android 开发实例】时间管理APP开发之数据库设计

当然也可以先写界面什么的,但是,总觉得先把数据库后台写好在写界面比较放心. 对于数据库的设计,我一开始没什么概念,甚至不知道如何下手,一开始想着设计成几个表?有哪些字段? 最后用了两天时间,还是一无所获. 最后参照着数据库系统概论课的一些东西以及查看别的项目的源码,才大概的确定数据库. 因为这个APP的类别被我确定只能是二级类别.所以我设计成三个表: 总类表,子类表,详细记录表. (程序代码中出现的Log语句仅为我自己测试输出使用的) 代码如下: package suool.net.timesu

一个项目需要考虑的问题:项目路径,数据库设计和权限,安全策略,日志类实现,页面基本结构

整个项目的流程 1.构建整个项目的框架结构[基本常量的定义] [实现一个框架需要权衡和良好的包含体系] 2.数据库设计和权限控制[对访问数据库的用户权限控制:默认新创建的用户对库内的数据并没有操作权限:Grant语句进行全新啊管理] 在项目建立之初,对数据库表结构进行设计是项目的关键. 考虑到各个业务层面上,设计各自的表结构. 注意数据库的三范式结构: 数据不可分割:第一范式[关联型数据库][针对每一列字段] 每一行数据的独立性:第二范式[针对每一行数据] 数据表之间的数据不要重复冗余:第三范式