Skip to main content

資料庫正規化說明

目的#

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/