0%

E-R图

概述

E-R图也称实体-联系图(Entity Relationship Diagram),也就是概念模型,可以用来做数据库设计。今天先记录下该怎么看E-R图,至于软件的操作下次补充记录~

作图工具在Mac端可以用dbeaver,原因呢主要是免费吧。

然后说说今天我为什么怎么就扯到了E-R图呢?是我在撸一个golang项目的时候,发觉对后台数据库不知道怎么设计,然后就查了下资料,如何设计也算说的很明了,对应的关系就是用E-R图来画的。

如何看图

ER01.png

上面👆概念数据模型中包含了:权限、角色、用户、文章、栏目、评论和两个桥表,其中1对1或1对多等关系在模型中体现。其中:

  • PKprimary key
  • 箭头代表的是关联关系
  • 虚线代表的是备注说明

具体举例(红框部分):
ER02.png

  • 用户角色表(cms_user_role) 同时属于用户表(cms_user)和角色表(cms_role)
  • 说白了,就是一个用户会有多个角色

用例01.png
读者可以进行阅读、注册、登录等操作。登录状态下又可以进行评论与阅读操作。

用例02.png
小编是作者身份,可以对自己的文章进行管理。

用例03.png
超级管理员拥有系统最大权限(或者所有权限),可以进行栏目管理、文章管理(文章管理隐式的包含了拥有阅读权限)、权限管理、角色管理、评论审核等操作。可对文章进行审核,权限管理下可对角色进行管理。

gorm的实现

gorm文档中,我们可以找到对模型建立关系的的文档:https://gorm.io/zh_CN/docs/belongs_to.html

依旧以cms_user_role cms_user cms_role 这三个表为例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//在gorm中,模型的结构以驼峰命名方式书写,在数据表会自动转成对应下划线

//CmsUserRole .
type CmsUserRole struct {
gorm.Model
ID string `gorm:"type:varchar(100);not null"json:"id"`
UserID string `gorm:"type:varchar(100);not null"json:"user_id"`
RoleID string `gorm:"type:varchar(100);not null"json:"role_id"`
}

//CmsUser .
type CmsUser struct {
gorm.Model
ID string `gorm:"type:varchar(100);not null"json:"id"`
UserName string `gorm:"type:varchar(100);not null"json:"username"`
Password string `gorm:"type:varchar(100);not null"json:"password"`
CmsUserRole CmsUserRole `gorm:"foreignkey:CmsUserRoleRefer"` // 将 CmsUserRoleRefer 作为外键
CmsUserRoleRefer uint
}

//CmsRole .
type CmsRole struct {
gorm.Model
ID string `gorm:"type:varchar(100);not null"json:"id"`
Name string `gorm:"type:varchar(100);not null"json:"name"`
CmsUserRole CmsUserRole `gorm:"foreignkey:CmsUserRoleRefer"` // 将 CmsUserRoleRefer 作为外键
CmsUserRoleRefer uint
}

到这,你也会发觉用户角色表其实是个中间件。

资料:

【管理系统课程设计】美少女手把手教你后台管理
在mac上有没有类似PowerDesigner的软件?
第1节:7分钟上手ER图
通俗数据库设计(2)E-R图
如何使用 MySQL workbench 生成 EER 图?
E-R图专栏
visio-数据库模型图