實務上,大多數的資料庫都會不只一張資料表,而資料表和資料表之間也不會是完全獨立的關係,當某個資料表中的特定欄位內容是來自於另外一張資料表時,我們就會稱這兩張資料表是有關聯的。
資料表的關聯型態非常多,我們只先介紹最簡單的關聯觀念,進一步的應用會在後續的補充內容中再提到。
關聯式資料表的特性
- 多個資料表之間各以某個或多個欄位來建立關係的特性稱為關聯資料表
- 建立關聯資料表有以下好處:
- 減少重覆
- 減少容量
- 簡化資料管理
- 避免資料異動時錯誤
- 建立關聯資料表也可能有缺點:
- 資料太多時,關聯混亂
- 查詢語法變複雜
- 關聯查詢時效率差
關聯式資料表的種類
一對一
一對一是最簡單的關聯模式,一對一的資料表通常都是附屬的資料或是基於安全考量需要權限控管的資料。
一對多
一對多是最常見的關聯模式,主要在於避免資料更新發生異常,同時也具有減少重覆資料的功能。
外鍵
在一對多的關聯中,外鍵是用來確認關聯性用的;外鍵的命名要注意識別是否容易,避免額外的欄位命名,儘量可以直接和關聯資料表產生對應。
一對一和多對多也可以存在外鍵,只是其重要性或功用不比一對多關聯。
多對多
多對多的關係通常用在有多個共用資料時,比如一位學生可以選擇多個課程,而一個課程可以被多個學生選擇。
多對多的關係在SQL指令上的操作難以去正確的找到目標內容,因此通常的做法是增加一個中間表,把一組多對多的關係改成兩組一對多的關係,這樣就可以解決資料查詢的困難
關聯式資料表練習
請將上一章節的每日記帳表拆成關聯式資料表
- 觀察有那些資料是大量重覆出現的
- 如果要拆成不同的資料表,那些欄位可以建立關聯
- 思考下列動作執行時,那些欄位的內容或關聯的方式可能會造成問題,如何改善?
- 新增資料時
- 更新資料時
- 刪除資料時
- 查詢資料時