前言

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

往期链接

  • 简账主要功能介绍
  • 简账后端环境简介及部署
  • 简账前端环境简介及部署
  • 解决小程序扫码授权提示Token不能为空

一、主要步骤

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

概念设计

定义

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

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

二、表设计

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

定义

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

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

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

三、总结

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

简账(开源记账软件)-数据库设计相关推荐

  1. 简账(开源记账软件)-前端环境简介及部署

    文章目录 简账(开源记账软件)-前端环境简介及部署 前言 一.前端主要技术栈简介 具体涉及的技术如下所示: Q&A 二.环境部署 1. 安装nodejs 2. 从Github上下载代码 3. ...

  2. 简账(开源记账软件)-功能介绍

    文章目录 简账(开源记账软件)-功能介绍 前言 一.主要技术栈简介 二.主要功能 三.项目难点 四.总结 简账(开源记账软件)-功能介绍 前言 由于自己有记账的需求,在尝试使用过市面上的记账软件后,发 ...

  3. 安卓--记账软件课程设计

    安卓课程设计 记账软件课程设计 目录 1 引言............................................................................. ...

  4. 基于Android的个人记账软件的设计与实现

    基于Android的个人记账软件的设计与实现 [系统要求] 通过查阅和分析相关资料,应用所学知识与技术,独自完成一套基于Android的个人记账系统.系统开发过程应遵循软件工程思想,任务包括系统架构的 ...

  5. 基于android的记账软件,基于Android的记账软件的设计与实现

    摘要: 随着经济社会的发展,人们的资金流动更加频繁,对记账的需求也逐渐提高.目前移动设备已经普及,移动记账以其随时随地记账,高效统计的特点,受到了广大记账理财人士的青睐.本文通过对国内外手机记账软件发 ...

  6. 基于开源物联网软件Thingsboard设计的气象六要素展示界面

    基于Thingsboard设计的气象六要素展示界面 壹,概述 贰,消息格式 叁,实例测试 壹,概述 Thingsboard社区版是一款开源的物联网软件,基于Java语言开发,兼容多数物联网通信协议,包 ...

  7. 玩转oracle之进阶三大范式及数据库设计

    三大范式 第一范式 第一范式:1NF,定义:确保每列的原子性(不可再分) --student 表 id name address 1 zs 陕西省西安市长安区 拆 id name province c ...

  8. 个人记账软件 共享及有条件开源

    哎,看到这个就感叹我一天天的钱都花哪了,咋就剩不下钱呢. 2015年刚开始,老婆就说要记账,这一天天的不知道钱都花哪去了, 好吧.我就加班加点,通过2个星期终于搞了一套出来,虽不近完善,但基本能用了. ...

  9. 便捷记账本小程序+后台管理系统-JAVA【数据库设计、源码、开题报告】

    第一章 绪 论 1.1选题背景 互联网是人类的基本需求,特别是在现代社会,个人压力增大,社会运作节奏高,随着互联网的快速发展,用户的需求也越来越高,用户也将越来越多依靠互联网而不是自己获取信息,使得各 ...

  10. 54款开源服务器软件(内容管理、数据库、电子商务、邮件服务器、文件传输、操作系统、安全、小公司服务 .

    本文逐一介绍了内容管理.数据库.电子商务.邮件服务器.文件传输.操作系统.安全.小公司服务器.服务器日志文件监控和分析.存储.虚拟化.Web服务器.维基/协作及其他方面的开源服务器软件. 据斯坦福大学 ...

最新文章

  1. ComplexHeatmap绘制热图(一)
  2. mysql主键始终从小到大_Mysql从入门到入神之(四)B+树索引
  3. python怎么换行继续写脚本_用Python实现换行符转换的脚本的教程
  4. ASP.NET Core 实战:使用 NLog 将日志信息记录到 MongoDB
  5. discuz forums.inc.php,【Discuz】积分机制实现解析
  6. 如何用html构建ios应用,使用HTML5构建iOS原生APP(2)
  7. 数据结构(二)——堆
  8. TensorFlow笔记(8) LeNet-5卷积神经网络
  9. 华为帮助摩洛哥成为全球第一个5G全覆盖的国家
  10. asp.net抓取网页html源代码失败 只因UserAgent作怪
  11. 当贝显示服务器生病,【当贝市场】电视盒子卡顿的三大原因
  12. 计算机英语解读,解释计算机Windows的学习英语
  13. 公主与骑士-ZZUOJ
  14. python外汇兑换代码_Python爬取中国银行外汇牌价
  15. 泊松过程的概念及其例题分析
  16. Mac 配置 docker 基本操作
  17. PostgreSQL高效分区表实现-pg_pathman
  18. 你又知不知道,日有所思,夜有所梦。
  19. 阿里云DataWorks介绍
  20. 论文阅读——“推荐系统”

热门文章

  1. Rime中州韵导入QQ五笔词库
  2. 关于PMP考试的流程,很实用
  3. 222、pom.xml、.iml文件的作用与意义 2019.11.08
  4. 飞翔(风吹)的flash文字
  5. 使用java实现MD5码算法
  6. 深度学习 个人理解使用余弦相似度对人脸图片识别的过程
  7. 用ajax来上传图片,使用AJAX上传图片
  8. Python爬虫实战 --实现 QQ空间自动点赞
  9. html如何定义mime类型的作用,自定义mime类型、mime类型介绍
  10. CurvySplines基础