大家還記得我們在 Day 5 ,建立了一個 test_db
嗎?
接下來我們就要開始建立資料表(Table)囉!
我們在 Day 3 提到了 racehorse & breeder 兩張 table。
我們就來使用這兩張資料表來做為範例吧。
racehorse -> 賽馬
breeder -> 馬主 - 飼育場
為了方便說明,以下先將資料表的資料做成表格呈現:
我們現在有兩張資料表,他們之間的關聯是:
每個 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 呢?
下回分曉!
參考資料: