资料库正规化说明(Day11)

目的

1.降低资料重复性(Data Redundancy)
2.避免资料更新异常(Anomalies)

在网路上有许多资料,我这边有找到一个解释的文章,在阅读接下来的内容前,可以先阅读一下

实作

当我们看的上面的资料会发现这个纪录中,家人的个人相关资料都是根据身分证字号为依据,例如只要是A123456789的资料,他的name会是Peter,gender会是male,因此,我们就可以依据这个规则,来把id_number/name/gender独立抽出来当一张表,命名为people,并且其栏位为

  • id_number
  • name
  • gender

并将records中的name及gender删除,仅保留id_number作为与people相互查询的依据(这个栏位成为外键foreign key)

  • id
  • id_number
  • date
  • temperature

并将资料变成

https://extendsclass.com/postgresql/8525e8b

join

如果希望在现在这个状况下,找出刚刚那些资料,就可以使用sql的一个语法,叫做join,就可以将刚刚希望输出的表格做输出,那先在这边就先举例
在刚刚的例子中,我们透过id_number将人与温度纪录做关联了,因此就可以透过join将需要的资料做合并

SELECT * FROM records
JOIN people ON records.id_number = people.id_number

https://extendsclass.com/postgresql/fa33d57

这麽做就可以在输出的时候透过foreign key来配对相对应的内容了

补充内容

在下面放上同事大大强力推荐每个只要使用资料库(特别是关连式资料库)的开发人员,都该看看里面的内容,可以对你未来建立资料的一些原则会有很大的帮助的
https://use-the-index-luke.com/


<<:  资料库介绍(Day10)

>>:  第 2 天 诸神早安晨之美|建立 Angular 专案、使用 JSON-server

DAY02 - 前端工程师的工作日常

好像很多人对工程师的想像都是埋首写程序, 不用讲话,写程序就好了~ 但其实前端工程师真的不是只有写程...

Day 10 : 存放资料的收纳库-串列资料(下)

今天继续来补足Python的其他存放资料的办法: tuple tuple跟list很相似,差别差在t...

[Day 19 - React] 现在开始用框架写网页 — React

为什麽要使用框架? 前端最重要的工作,就是让网页的资料与状态视觉化,有资料状态改变时,就要更动网页内...

Day40 ( 电子元件 ) 旋钮控制 LED 亮度

旋钮控制 LED 亮度 教学原文参考:旋钮控制 LED 亮度 这篇文章会介绍如何使用旋钮 ( 可变电...

[Day 10] 测试串接

昨天先尝试利用 HttpClientFactory来建立呼叫外部API,今天来谈谈要如何实作先前的程...