1

我想在 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
);
4

2 回答 2

1

使用包含引用列的复合主键是完全可以接受的。如果有SET NULL操作或引用的列是是不可接受的NULL

于 2013-03-13T16:00:20.207 回答
0

好吧,这取决于您的表的结构和将要存储的大约记录数,以及您的表将被访问的命中/事务的数量。

对于存储的讲座信息信息,我认为它不会导致性能下降,它可能会减慢SELECT命令速度但不会太多。

于 2013-03-13T16:02:17.543 回答