Pc 表儲存整機資訊,含 cpumodel 欄位;Parts 表儲存零件供貨資訊,含 model 欄位。業務規則:Pc.cpumodel 必須參照 Parts.model 存在的型號。
CREATE TABLE parts (..., model VARCHAR(20) NOT NULL, ...);
CREATE TABLE pc (..., cpumodel VARCHAR(20) NOT NULL, ...);
ALTER TABLE parts ADD INDEX idx_model (model);
ALTER TABLE pc ADD INDEX idx_cpumodel (cpumodel);
索引也可在 CREATE TABLE 時一併定義。
ALTER TABLE pc ADD CONSTRAINT fk_cpu_model
FOREIGN KEY (cpumodel) REFERENCES parts(model);
此後嘗試插入 Parts 不存在的 CPU 型號會被阻擋。
若 Parts.model 變更需自動同步至 Pc.cpumodel,可加入 ON UPDATE CASCADE:
ALTER TABLE pc ADD CONSTRAINT fk_cpu_model
FOREIGN KEY (cpumodel) REFERENCES parts(model)
ON UPDATE CASCADE;
其他選項:RESTRICT(禁止父表變更)、SET NULL(子表設為 NULL)。