iT邦幫忙

2022 iThome 鐵人賽

DAY 8
0
Software Development

新手小白的每天一點SQL系列 第 8

Day 8 建立資料表 - 資料表關聯

大家還記得我們在 Day 5 ,建立了一個 test_db 嗎?
接下來我們就要開始建立資料表(Table)囉!

前言

  • 資料表(Table):每一行為唯一資料,每一列為不同屬性。
  • 主鍵(Primary Key):是一個列或列組的組合,其值能唯一標識表格中的每一行(唯一資料)。
  • 外鍵(foreign key):是指向其他表的主鍵的欄位,用於確定兩張表的關聯性及資料完整性,以避免部分資料匹配不上的問題。

資料表範例

我們在 Day 3 提到了 racehorse & breeder 兩張 table。
我們就來使用這兩張資料表來做為範例吧。

racehorse -> 賽馬
breeder -> 馬主 - 飼育場

為了方便說明,以下先將資料表的資料做成表格呈現:

Table: racehorse, Primary Key: id

Table: breeder, Primary Key: id

資料表關聯

我們現在有兩張資料表,他們之間的關聯是:

每個 breeder(馬主 - 飼育場)會有許多的 racehorse (賽馬);而 racehorse 只會有一個 breeder。

大家可以想想,紀錄兩張資料表關聯的欄位,會設計在哪一張資料表呢?

先放一張可愛的黃金船(Gold Ship),下拉公佈答案。

我們所舉例的資料表關聯,是所謂的一對多關聯。
也就是說:

一筆資料 A 會對應到多筆資料 B,但資料 B 只會對應到一筆資料 A。

在我們的例子中,資料 A 就是 breeder ,資料 B 就是 racehorse。

這個時候,我們會在資料 B 設計一個欄位紀錄對應的資料 A,也就是所謂的外鍵(foreign key)。

我們會以另外一張資料表的主鍵(通常是id)作為外鍵,在我們的例子中,就會在 racehorse 資料表中設計一個欄位來存放關聯的主鍵,通常以關聯的資料表名稱_id,作為與 breeder 資料表關聯的外鍵(breeder_id)。

關於資料表關聯,主要可分為三個類型:one-to-one(一對一)、 one-to-many(一對多)、 many-to-many(多對多),這裡先不多做討論。

現在,我們設計好資料表內容了,接下來就是建立資料表實作囉。
要建立出我們範例的資料表內容,應該要怎麼寫 SQL 呢?

下回分曉!

參考資料:


上一篇
Day 7 初識 SQL
下一篇
Day 9 建立資料表 - 在 psql 建立資料表
系列文
新手小白的每天一點SQL31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言