iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0

首先,什麼是關聯式資料庫

關聯式資料

  • 所有的資料,都是由「欄」和「列」所構成一個「資料表」。
  • 資料表之間有有相互的關聯。
  • 表和表之間的關係,係透過「主鍵、Primary Key」或是「外部鍵、Foreign key」來描述關係。
  • 根據 Oracle 對於關聯式資料模型的定義: The relational model means that the logical data structures—the data tables, views, and indexes—are separate from the physical storage structures. This separation means that database administrators can manage physical data storage without affecting access to that data as a logical structure.

鍵的簡單概念

主鍵

  • 必須是個唯一值,一張表格內,頂多只能出現在一個 Row 的值,才可以當做唯一值。
    • 如果有個會員系統
      • 可以使用 電子信箱手機號碼身證證號護照號碼信用卡號 來當作主鍵
      • 不能使用 學歷身高體重 來當主鍵,因為極有可能會發生不同會員有相同的學歷身高體重、重複的情況。
      • (備註1: 哪個會員系統如果採用手機號碼來當作主鍵,那麼沒手機就無法註冊會員,有多個手機的人就可能會重複註冊會員)
      • (備註2: 會員系統如果記錄身分證號、護照號碼、信用卡號這種高度機敏資訊,我覺得怕。)

外部鍵

  • 基於,古早時代儲存資料的成本很貴。 另外,當今要存的資料也太多了。 為了避免花費大量空間,重複存一堆相同內容,因此需要幫資料表進行瘦身(正規化)。
  • 以一個定便當的表格為例:

範例

員工號碼 姓名 電話 日期 餐點名稱
001943 周杰倫 0932313520 2024-09-25 豆漿油條套餐
001943 周杰倫 0932313520 2024-09-25 布穀生菜烤隻豬
009527 周星馳 3345678 2024-09-25 大俠愛吃漢堡包
009527 周星馳 3345678 2024-09-25 大俠愛吃漢堡包
  • 周杰倫本人很餓,今天要訂兩份餐點。
  • 上面這張表格,有明顯違背兩個上述原則:沒有正規化缺少唯一鍵
  • 明明就可以使用「員工編號」或者「電話號碼」其中一欄來區別訂購人的身份,就不需要用三個欄位重複記錄。
  • 然後因為缺少了唯一鍵,這張表格無法區別周星馳的漢堡包訂單。

結論

  • 關聯式資料是有明確將資料的欄位定義出,形成資料表,並且描述表和表之間的對應關係。
  • 考題中會出現 Foreign Key, Unique Key, Primary Key 等字眼,只要對這幾個詞的定義有清楚,就可以輕鬆找合理的做法。

上一篇
【Day 10】 Athena 的簡單介紹 / 以 CloudTrail 為例
下一篇
【Day 12】 Relational Databases Service (RDS) 全託管關聯式資料庫服務
系列文
老闆,外帶一份 AWS Certified Data Engineer30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言