天天看点

联合主键和复合主键

联合主键和复合主键

    • 联合主键
    • 复合主键

联合主键

联合主键其实就是中间表。在多对多模型里,需要两个表中的主键组成联合主键,这样就可以查到两个表中的每个数据。
# 创建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)
)