联合主键和复合主键
程序员文章站
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)
)