欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

联合主键和复合主键

程序员文章站 2022-04-24 22:25:41
...

联合主键和复合主键

联合主键

联合主键其实就是中间表。在多对多模型里,需要两个表中的主键组成联合主键,这样就可以查到两个表中的每个数据。

# 创建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)
)