1.降低資料重複性(Data Redundancy)
2.避免資料更新異常(Anomalies)
在網路上有許多資料,我這邊有找到一個解釋的文章,在閱讀接下來的內容前,可以先閱讀一下
當我們看的上面的資料會發現這個紀錄中,家人的個人相關資料都是根據身分證字號為依據,例如只要是A123456789的資料,他的name會是Peter,gender會是male,因此,我們就可以依據這個規則,來把id_number/name/gender獨立抽出來當一張表,命名為people,並且其欄位為
並將records中的name及gender刪除,僅保留id_number作為與people相互查詢的依據(這個欄位成為外鍵foreign key)
並將資料變成
https://extendsclass.com/postgresql/8525e8b
如果希望在現在這個狀況下,找出剛剛那些資料,就可以使用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/