聯合主鍵
聯合主鍵其實就是中間表。在多對多模型裏,需要兩個表中的主鍵組成聯合主鍵,這樣就可以查到兩個表中的每個數據。
# 創建Team表
CREATE table Team (
Id MEDIUMINT AUTO_INCREMENT COMMENT 'team 主鍵',
NAME VARCHAR(10) COMMENT 'team name',
PRIMARY KEY(Id)
)
ENGINE = INNODB,
CHARSET = UTF8;
# 創建Info表
CREATE table info (
Id MEDIUMINT AUTO_INCREMENT COMMENT 'info 主鍵',
Name VARCHAR(30) COMMENT '姓名',
PRIMARY KEY(Id)
)
ENGINE = INNODB,
CHARSET = UTF8;
# 聯合主鍵 可以通過這張表查詢team和info兩個表的主鍵id 並查詢兩表的數據。
CREATE TABLE IF NOT EXISTS Team_info (
id MEDIUMINT AUTO_INCREMENT COMMENT 'team_info 主鍵--聯合主鍵',
info_id MEDIUMINT COMMENT 'info 主鍵',
team_id MEDIUMINT COMMENT 'team 主鍵',
PRIMARY KEY (id)
)
ENGINE=INNODB,
CHARSET=UTF8;
複合主鍵
複合主鍵相對好理解:假設 1班 有個叫張三的人,二班也有叫張三的人;如果此時通過name當主鍵 肯定會報錯,如果用班級+姓名做複合主鍵,也就沒有問題。(此案例不嚴謹,僅作思路)
CREATE TABLE Stu(
Class Varchar(20) COMMENT '班級',
NAME VARCHAR(10) COMMENT '姓名',
PRIMARY KEY(Class,NAME)
)