简账(开源记账软件)-数据库设计

这是我参与更文挑战的第1天,活动详情查看: 更文挑战

前言

在实际的开发过程中,大家可能都是直接面向需求的,更多的是在现有的基础上怎么实现功能,从而忽略了数据库设计的重要性。
本文将介绍数据库设计的具体流程,如ER图、数据库范式等。

往期链接


一、主要步骤

一般来说数据库设计主要分为以下几个步骤

数据库设计流程.png

概念设计

定义

概念设计 的目标是产生反映企业组织信息需求的数据库概念结构,即概念模式。
概念模式 是独立于数据库逻辑结构,独立于支持数据库的 DBMS(Database Management System 数据库管理系统) ,不依赖于计算机系统的。
ER(实体联系) 模型是对现实世界的一种抽象,它的主要成份是实体、联系和属性。

一般来说,概念设计通过ER图就可以很好的展现出来了。
简账中的角色权限的ER图如下所示:

简账RBAC.png

二、表设计

说到数据库设计就不得不说 数据库范式 了,一般来说遵从第三范式即可。

定义

1NF 第一范式条件:必须不包含重复组的关系,即每一列都是不可拆分的原子项。
2NF 第二范式条件:关系模式必须满足第一范式,并且所有非主属性都完全依赖于主码。
3NF 第三范式的条件:关系模型满足第二范式,所有非主属性对任何候选关键字都不存在传递依赖。即每个属性都跟主键有直接关系而不是间接关系

3NF稍微难理解一点,举个例子:
记录详情表 tb_detail 表(id,用户Id,花费类别名,花费类别码,金额)这样一个表结构就不符合 3NF。因为花费类别名和花费类别码是对应的,存在传递关系。
所示正确设计应为:tb_detail 表(id,用户Id,花费类别Id),tb_spend_category 表(id,花费类别名,花费类别码)

简账中的数据库表设计如下所示:

Diagram 1.png

三、总结

感谢看到最后,非常荣幸能够帮助到你~♥

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享