資料表管理(多張Tables、PK、FK、ID 設計及設定)


Posted by Leo Li on 2025-03-02

從單張表升級到多張資料表的管理

公司資料有每個員工資料,今天老闆突然想把部門名稱更改,卻需要一筆一筆更改非常沒效率,於是會把資料表設置成多張管理。一方面避免一張表管理有重複性,一方面容易變更表面而不變動到整體關聯性。

單張資料表管理 多張資料表管理(好)

主鍵、外來鍵介紹

主鍵(Primary Key,PK)

  1. 每個資料表會有一個主鍵
  2. 主鍵的值必須是唯一的,且不能重複
  3. 主鍵不能為Null值,但外來鍵可以為Null值
  4. 大部分情況命名為 “id”,使用 整數 or UIUD格式
  5. 設定後就不應該再更動

外來鍵(Foreign Key,FK)

  1. 每個資料表可多個外來鍵
  2. 當資料需要關連到其他表格時才會用到
  3. 命名通常會用 "參考資料表_id” 的格式
  4. 外來鍵必須對應到被參考資料表的主鍵

如何規劃外來鍵與Tables拆分

口訣:『多的要設定成外來鍵』

以員工資料表的情境

1.以員工角度:一個員工會有?個部門。 Ans:1
2.以部門角度:一個部門會有?個員工。 Ans:
已知道多個會設定成外來鍵(FK),所以要把員工資料表的部門名稱欄位設定成FK,關連到新建立的部門名稱資料表的主鍵(PK)。

主鍵設定方式、ID自動遞增方式

設定 遞增 SERIAL、主鍵 PRIMARY KEY

CREATE TABLE users(
    id SERIAL PRIMARY KEY, -- 員工編號,主鍵
    name VARCHAR(50) -- 員工姓名
)

建立完整資料庫(做關聯)

CREATE TABLE teams(
    id SERIAL PRIMARY KEY,
    name VARCHAR(50)
);

CREATE TABLE users(
    id SERIAL PRIMARY KEY,
    name VARCHAR(50),
    salary INTEGER,
    team_id INTEGER,
    FOREIGN KEY (team_id) REFERENCES teams(id)
)

-- 新增資料
INSERT INTO teams(name) VALUES
    ('開發部'),
    ('人事部');
INSERT INTO users(name, salary, team_id) VALUES
    ('王天宇', 52000, 1),
    ('林小樹', 48000, 2),
    ('李雲', 55000, 1),
    ('陳海洋', 46000, 2),
    ('張鐵柱', 42000, 1);

#SQL #PK #FK #ID自動遞增







Related Posts

【文章筆記】簡單介紹前端相關名詞

【文章筆記】簡單介紹前端相關名詞

MTR04_0821

MTR04_0821

Spot the Difference - Difference in Difference

Spot the Difference - Difference in Difference


Comments