天天看點

聯合主鍵和複合主鍵

聯合主鍵和複合主鍵

    • 聯合主鍵
    • 複合主鍵

聯合主鍵

聯合主鍵其實就是中間表。在多對多模型裡,需要兩個表中的主鍵組成聯合主鍵,這樣就可以查到兩個表中的每個資料。
# 建立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)
)