如何设计字段?你需要知道数据库设计范式

自我简介:4年导游,10年程序员,最近6年一直深耕低代码领域,分享低代码和AI领域见解。

起因

刚接触互联网时,从事的是前端岗位,跟一个40多岁的老大哥合作项目,项目推进的时候老大哥各种摆谱不按计划来,那种被扼住咽喉的感觉让我暗下决心,一定要能独挡一面,一个人要有搞定一个项目的能力和视野。最后被逼成为了一个伪全栈。

窘迫感

当自己真有能力搞定前后端的时候,发现在设计数据库的时候很困囧。

  • 这个字段该不该放这个表?
  • 这个表该不该设置一个冗余字段避免联表查询?
  • 复杂的表字段很多的时候改不改拆分?

刚开始接触后段开发,一个项目设计到开发能正常运行就开心到飞起了。后来熟练一些后发现很多跟数据库设计的问题涌上来了,总感觉设计的很别扭。就在想有没有参考标准或者规范?还真有!

在这里插入图片描述

数据库范式

本文不作为一个面面俱到的文章,尽量帮助想尝试自己设计数据库的(前端Or其他)小伙伴自己设计出符合基础规范的数据库,少走一些弯路。同时也作为自己的经验总结,写成文章作为重构复盘参考

数据库范式规定的是数据表之间字段联系合理性程度。符合范式设计的数据库具有如下好处

  • 数据结构冗余最小化
  • 数据表操作是否方便
  • 数据操作高性能
第一范式

数据表中每一个字段具有原子性,不可再分

学生编号学生姓名地址
1张雷陕西省西安市未央区
2赵芬湖南省长沙市芙蓉区

地址 字段不符合第一范式,可再分

1陕西省西安市未央区
2湖南省长沙市芙蓉区
第二范式

表中每列字段都要跟数据表主键关联,不要出现部分依赖

学生编号学生姓名课程名称分数
1张雷语文150
2赵芬物理100

课程名称和分数 字段不符合第二范式,两个字段跟主键编号没有太大关联

学生编号课程名称分数
1语文150
2物理100
第三范式

表中每列字段都要跟数据表主键直接关联,不要出现传递依赖

学生编号学生姓名课程编号课程名称代客老师分数
1张雷1语文刘老师150
2赵芬2物理周老师100

课程名称、代客老师和分数 不符合第三范式,这些字段依赖课程编号,课程编号依赖学生编号,存在传递依赖.且课程相关继续拓展字段,会产生更多的依赖

学生分数记录表

学生编号课程编号分数
12150
21100

课程相关表

课程编号课程名称代客老师
1语文刘老师
2物理周老师

数据冗余

指相同的数据在多个地方存在,或者说表中的某个列可以由其他列计算得到,这样就说表中存在数据冗余

题外话

专注能力和自我定位很重要。如果不是被迫成为全栈工程师,尽量把精力集中在自己擅长的领域,如果你想纵向发展,就专注某一个技术点成为No1。如果你想独当一面,可以独自完成一个项目,为创业做准备可以考虑把视野放开,创业前期,你所有会的技能都能帮你抵御一些投入成本和风险。(专业的事交给专业的人做、合作共赢这两句话绝对没错,但是大部分人白手起家创业,都不具备这种前提条件…)

AI时代,对各行业的冲击力只会越来越大,随着AI大模型的竞赛,越来越多强悍的AI模型都会涌现,像软件开发行业的很多工作都会被取代。软件将不再是程序员的专属产物,会由AI创建很多的软件产品。

4年导游,10年程序员,深耕低代码领域6年,持续分享低代码和AI领域领域有价值的思考和沉淀,欢迎关注:winyh5

上述的低代码平台已经完成开发了,目前正在推进AI能力的嵌入,适时开源,有兴趣的可以关注一波,让你真正的感受到应用落地的高效。同时也可以满足独立开发者基于这个低代码平台快速实现自己的创意,发展自己的副业,比如有客户需求,可以基于这个低代码平台快速完成开发和交付~

后续会推出:【挑战365天做 100 套常见的互联网系统】系列文章,让大家可以真实感受到低代码快速落地项目的可行性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值