mysql中的3个复合键

时间:2013-03-13 15:56:10

标签: mysql

我想在MySql中使用3个复合键?这没关系吗?

create table lecturer(
  lec_id varchar(6) not null,
  lec_name varchar(18) 
  primary key(lec_id)
);

create table subject(
  sub_code varchar(6) not null,
  sub_name varchar(18) 
  primary key(sub_code)
);

create table lecDetails(
  lec_id varchar(6) not null,
  sub_code varchar(6) not null,
  sem varchar(6) not null, 
  primary key(lec_id,sub_code,sem)
  FOREIGN KEY (lec_id) REFERENCES lecturer(lec_id)
  ON UPDATE CASCADE ON DELETE CASCADE,
  FOREIGN KEY (sub_code) REFERENCES subject(sube_code)
  ON UPDATE CASCADE ON DELETE CASCADE
);

2 个答案:

答案 0 :(得分:1)

完全 OKAY ,并且可以使用包含引用列的复合主键。如果存在SET NULL操作或引用的列为NULL,则无法接受。

答案 1 :(得分:0)

嗯,这取决于你的表的结构和将要存储的大致记录数,以及你的表将被访问的点击/交易量。

对于存储的讲座信息信息,我认为它不会导致性能下降,它可能会使SELECT命令稍微减慢但不会那么慢。

  • 阅读here
  • 的好问题