您当前的位置:首页 > 电脑百科 > 数据库 > 百科

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

时间:2022-11-23 11:00:41  来源:掘金  作者:winyh

起因

刚接触互联网时,从事的是前端岗位,跟一个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



Tags:数据库   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
起因刚接触互联网时,从事的是前端岗位,跟一个40多岁的老大哥合作项目,项目推进的时候老大哥各种摆谱不按计划来,那种被扼住咽喉的感觉让我暗下决心,一定要能独挡一面,一个人要有搞...【详细内容】
2022-11-23  Tags: 数据库  点击:(0)  评论:(0)  加入收藏
Ora2Pg介绍Ora2Pg是一个将Oracle迁移至PostgreSQL的开源工具,通过连接Oracle数据库,自动扫描并提取其中的对象结构及数据,产生SQL脚本,通过手动或自动的方式将其应用到Postgre...【详细内容】
2022-11-17  Tags: 数据库  点击:(13)  评论:(0)  加入收藏
作者 | Shivang Sarawagi译者 | 张卫滨策划 | 辛晓亮本文最初发表于 scaleyourapp.com 网站,经原作者 Shivang Sarawagi 授权由 InfoQ 中文站翻译分享。YouTube 是仅次于谷歌...【详细内容】
2022-11-10  Tags: 数据库  点击:(10)  评论:(0)  加入收藏
之前介绍了运维监控系统Prometheus,然后就有同鞋问我关于时序数据库的情况,所以这里总结一下时序数据库,并以InfluxDB为例,介绍时序数据库的功能特性和使用方式,希望能对大家有所...【详细内容】
2022-11-10  Tags: 数据库  点击:(40)  评论:(0)  加入收藏
如果各位看官的 SQL 数据库真有 2W+ 高并发,那真是要恭喜你。你已经比很多公司的 MIS 都要前卫得多。2W 和 2K 差别有那么大吗,嗯,真是有的。2K 并发的 MIS 系统也经常有无法访...【详细内容】
2022-11-10  Tags: 数据库  点击:(18)  评论:(0)  加入收藏
#安装数据库#根据数据用途选择MySQL\PostgreSQL\SQLite\MariaDB\MongoDB\clickhouse等数据库#本文以MySQL PostgreSQL 为例,其他类似。安装方法自行搜索,不在赘述。# -*- codi...【详细内容】
2022-11-01  Tags: 数据库  点击:(58)  评论:(0)  加入收藏
大家都知道tp5的数据库配置在config/database.php中,如果这个数据库配置正式服的数据,要再配置一个测试服的数据就需要在config中再创建一个database_test.php的配置文件。但...【详细内容】
2022-10-31  Tags: 数据库  点击:(15)  评论:(0)  加入收藏
如果网站遭到黑客攻击,不要担心,您可以遵循以下提示:1.确认网站已被篡改攻击,尤其被上传了网站木马文件,一般被称为是Webshell。攻击者也有可能通过Webshell获得服务器的管理员...【详细内容】
2022-10-31  Tags: 数据库  点击:(25)  评论:(0)  加入收藏
概述在某些情况下,我们希望从外部数据库中获取数据,而无需在应用程序中进行额外编码,只需编写一个 T-SQL 查询即可为我们完成所有工作。这就是微软提供的“链接服务器”功能的...【详细内容】
2022-10-30  Tags: 数据库  点击:(22)  评论:(0)  加入收藏
背景2021年6月1日,蚂蚁集团开源 OceanBase 代码,这款连续两年占领 TPC-C 榜首的数据库产品再次拥抱开源。而此时,在开源社区国产数据库的赛道上还有另外一位明星选手:TiDB。同为...【详细内容】
2022-10-24  Tags: 数据库  点击:(49)  评论:(0)  加入收藏
▌简易百科推荐
起因刚接触互联网时,从事的是前端岗位,跟一个40多岁的老大哥合作项目,项目推进的时候老大哥各种摆谱不按计划来,那种被扼住咽喉的感觉让我暗下决心,一定要能独挡一面,一个人要有搞...【详细内容】
2022-11-23  winyh  掘金  Tags:数据库   点击:(0)  评论:(0)  加入收藏
分享一个sql语句生成向导的源代码 https://github.com/codefan/sqlWizard 。这是一个基于VUE的sql语句生成向导,生成的结果是一个带参数的sql语句。可以直接在线查看效果 htt...【详细内容】
2022-11-21  互联共商   网易号  Tags:   点击:(5)  评论:(0)  加入收藏
先看插入语句是INSERT INTO `ay_content`(`id`, `acode`, `scode`, `subscode`, `title`, `titlecolor`, `subtitle`, `filename`, `author`, `source`, `outlink`, `date`,...【详细内容】
2022-11-20  无忧技术分享  今日头条  Tags:pbootcms   点击:(3)  评论:(0)  加入收藏
表结构和初始数据 新建表结构CREATE TABLE `json_test` ( `id` int NOT NULL AUTO_INCREMENT, `roles` json DEFAULT NULL COMMENT '角色', `project` json DEFA...【详细内容】
2022-11-18  玖月叶  今日头条  Tags:MySql   点击:(31)  评论:(0)  加入收藏
场景应用开发过程中,初期数据量少,开发人员更重视功能上的实现。应用上线以后,随着数据量急剧增长,一些SQL语句暴露出性能问题,这时系统性能的瓶颈就是这些有问题的SQL语句。 加...【详细内容】
2022-11-15  镜心的小树屋  今日头条  Tags:SQL   点击:(3)  评论:(0)  加入收藏
作者 | Shivang Sarawagi译者 | 张卫滨策划 | 辛晓亮本文最初发表于 scaleyourapp.com 网站,经原作者 Shivang Sarawagi 授权由 InfoQ 中文站翻译分享。YouTube 是仅次于谷歌...【详细内容】
2022-11-10  InfoQ    Tags:YouTube   点击:(10)  评论:(0)  加入收藏
之前介绍了运维监控系统Prometheus,然后就有同鞋问我关于时序数据库的情况,所以这里总结一下时序数据库,并以InfluxDB为例,介绍时序数据库的功能特性和使用方式,希望能对大家有所...【详细内容】
2022-11-10  章为忠学架构  今日头条  Tags:时序数据库   点击:(40)  评论:(0)  加入收藏
如果各位看官的 SQL 数据库真有 2W+ 高并发,那真是要恭喜你。你已经比很多公司的 MIS 都要前卫得多。2W 和 2K 差别有那么大吗,嗯,真是有的。2K 并发的 MIS 系统也经常有无法访...【详细内容】
2022-11-10  ITPUB2022   网易号  Tags:数据库   点击:(18)  评论:(0)  加入收藏
速览正如发布MongoDB 5.0时承诺的更快发布频率,年度大版本MongoDB 6.0也于2022年正式跟广大数据库爱好者们见面了。目前阿里云MongoDB已经完成了对6.0版本的适配工作,大家可以...【详细内容】
2022-11-09  阿里云数据库  今日头条  Tags:MongoDB   点击:(66)  评论:(0)  加入收藏
一、首先参照“使用JDBC连接数据库”,修改数据库的pg_hba.conf文件,修改数据库监听地址。步骤1 连接数据库后,进入SQL命令界面。创建用户dbuser,密码为Gauss#3demo,并进行授权。C...【详细内容】
2022-11-09  数据库这点事儿  今日头条  Tags:HeidiSQL   点击:(14)  评论:(0)  加入收藏
站内最新
站内热门
站内头条