20|数据库方案设计:如何设计运营搭建平台的数据库?
什么是数据库设计范式?
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了如何设计运营搭建平台的数据库方案,包括数据库设计范式的概念和实现步骤。首先,文章详细解释了第一范式、第二范式和第三范式的概念及其应用。然后,根据第三范式的严格程度,将数据划分为员工用户数据、物料数据、物料操作快照、搭建的页面和页面操作快照等五类,并提出了相应的数据表设计方案。文章还介绍了一些技术细节,如使用UUID代替自增ID以提高安全性,以及使用JSON数据格式来提升数据操作的灵活度。最后,文章提出了SQL建表语句的设计,并介绍了如何利用Node.js环境来实现自动化建库建表的初始化操作。通过本文,读者可以快速了解数据库设计范式的重要性,以及如何根据项目需求设计数据库方案,从而更好地完成项目的数据库设计工作。整体而言,本文内容丰富,涵盖了数据库设计的多个方面,对于需要进行数据库设计的技术人员具有一定的参考价值。
《Vue 3 企业级项目实战课》,新⼈⾸单¥59
全部留言(4)
- 最新
- 精选
- 一只鱼关于物料表和物料快照表有一些疑惑: 我的理解:物料表记录当前所有物料的最新信息,物料快照表记录所有物料的历史变化信息。 问题1:物料快照表是必须的吗?在这个项目中的主要作用是什么? 问题2:因为记录的是变化信息,随着时间的推移,物料快照表的数据量会不断增加,进而导致存储成本变大,怎么对其进行约束呢? 一点小建议:有5张表,估计是篇幅原因,主要对第一张用户表进行展开讲解,后续的没有详细介绍,这个能理解。但如果能有对后续几张表的讲解,以及为什么需要这几张表,那就更完美了,可以作为选读部分,不一定要放在正文中。PS: 最近正在经历第一次表设计,所以对这块比较感兴趣,希望老师能够解答。
作者回复: 关于问题1,物料快照表是“必须准备”的,因为快照是跟着物料版本迭代的,可以跟踪每一次物料组件的更新变化,也可以知道是“谁”进行变更操作。最后为解决物料“碎片化”问题提供数据基础,这里的“碎片化”指的是,一个物料组件多个版本被多个页面引用了,借助快照来分析是否要“全量”更新物料依赖,还是继续保持碎片化支持。总之,多备份迭代数据,以备不时之需。 关于问题2,物料快照表的数据定位是辅助作用,辅助组件或者页面回滚到指定版本,不一定是要用于面向外部用户的生产环境。如果觉得数据量变大了,增加了数据库维护成本,可以对其进行定期“滚动式覆盖数据”。 最后关于您提到的建议,对于用户表的深入设计,需要考虑更多“实际业务场景”,例如“用户权限”,“用户身份分级”等等,这些情况不同企业不同部门,都有自己定义的业务逻辑。展开讲解的话不一定适用于大部分同学的实际场景。所以本课就只列举最基础的用户信息来讲解,方便后续学生根据自己业务进行扩展。
2023-03-01归属地:广东 - 刘大夫这节太棒了,想接触后端就离不开数据库,这一节的数据库设计对于前端来说可以说是引入门了,路子一下清晰了
作者回复: 谢谢,受篇幅所限,数据库相关内容就只讲入门相关的知识,更多数据库操作知识点,可以参考本课的源码案例 https://github.com/FE-star/vue3-course/
2023-02-10归属地:北京 - 静心感觉这一节,对于前端开发来说,用处不是太大,一般的项目不会这么设计。
作者回复: 个人想将专栏的面覆盖广一点,这样可能不同阶段都有些作用。比如如果前端遇到瓶颈也可以往全栈发展
2023-01-12归属地:山西 - escray在准备 Node.js 环境里的建库方法和建表方法的代码中,相对路径是:packages/init-database/src/util.ts, queryDatabaseSQLByPool 方法里面,使用了 poolDatabase.query 来执行 SQL 语句,但是在后面的 if-else 里面确使用了 pool,感觉似乎是一个笔误。 但是如果在代码里面修改之后,在执行完前一条操作之后会报错 Operation Platform - Database hello_vue_project create success! Operation Platform - user_info Table created sucdess node:internal/process/promises:289 triggerUncaughtException(err, true /* fromPromise */); ^ Error: Pool is closed. 有点没看明白,我感觉其实可以等所有的 SQL 语句都执行完之后,再关闭 poolDatabase 和 pool。对比来看,pool 是每次执行完都关闭(end)的,却不影响下一次的执行。2024-01-15归属地:江苏