起因刚接触互联网时,从事的是前端岗位,跟一个40多岁的老大哥合作项目,项目推进的时候老大哥各种摆谱不按计划来,那种被扼住咽喉的感觉让我暗下决心,一定要能独挡一面,一个人要有搞定一个项目的能力和视野 。最后被逼成为了一个伪全栈 。
窘迫感当自己真有能力搞定前后端的时候,发现在设计数据库的时候很困难 。
- 这个字段该不该放这个表?
- 这个表该不该设置一个冗余字段避免联表查询?
- 复杂的表字段很多的时候该不该拆分?
文章插图
数据库范式本文不作为一个面面俱到的文章,尽量帮助想尝试自己设计数据库的(前端Or其他)小伙伴自己设计出符合基础规范的数据库,少走一些弯路 。同时也作为自己的经验总结,写成文章作为重构复盘参考
数据库范式规定的是数据表之间字段联系合理性程度 。符合范式设计的数据库具有如下好处
- 数据结构冗余最小化
- 数据表操作是否方便
- 数据操作高性能
学生姓名
地址
1
张雷
陕西省西安市未央区
2
赵芬
湖南省长沙市芙蓉区
地址 字段不符合第一范式,可再分
市
区
区
1
陕西省
西安市
未央区
2
湖南省
长沙市
芙蓉区
第二范式表中每列字段都要跟数据表主键关联,不要出现部分依赖
学生姓名
课程名称
分数
1
张雷
语文
150
2
赵芬
物理
100
课程名称和分数 字段不符合第二范式,两个字段跟主键编号没有太大关联
课程名称
分数
1
语文
150
2
物理
100
第三范式表中每列字段都要跟数据表主键直接关联,不要出现传递依赖
学生姓名
课程编号
课程名称
代课老师
分数
1
张雷
1
语文
刘老师
150
2
赵芬
2
物理
周老师
100
课程名称、代课老师和分数 不符合第三范式,这些字段依赖课程编号,课程编号依赖学生编号,存在传递依赖.且课程相关继续拓展字段,会产生更多的依赖
学生分数记录表
课程编号
分数
1
2
150
2
1
100
课程相关表
课程名称
代课老师
1
语文
刘老师
2
物理
周老师
题外话专注能力和自我定位很重要 。如果不是被迫成为全栈工程师,尽量把精力集中在自己擅长的领域,如果你想纵向发展,就专注某一个技术点成为No1 。如果你想独当一面,可以独自完成一个项目,为创业做准备可以考虑把视野放开,创业前期,你所有会的技能都能帮你抵御一些投入成本和风险 。(专业的事交给专业的人做、合作共赢这两句话绝对没错,但是大部分人白手起家创业,都不具备这种前提条件...)
作者:winyh
链接:
https://juejin.cn/post/7168822614096347172
【如何设计字段?你需要知道数据库设计范式】
推荐阅读
- 好的面包怎么做? 面包怎么做
- 电脑硬盘怎么分区才合理? 电脑怎么分区
- 血小板太低怎么办? 血小板低怎么治疗
- 如何正确的使用呼啦圈减肥? 转呼啦圈能减肥吗
- 如何辨别准妈妈肚子里孩子的性别 胎儿性别鉴定
- 淘宝网如何用手机开个人网店? 淘宝手机店铺
- 教你手机自带软件怎么卸载 如何卸载手机自带软件
- 如何保护肾脏? 如何养肾
- 怎样才能写出一篇好文章? 如何写好文章
- 答辩状的书写步骤 答辩状怎么写