CREATE TABLE jokecategory (
jokeid INT NOT NULL,
categoryid INT NOT NULL,
PRIMARY KEY (jokeid, categoryid)
) DEFAULT CHARACTER SET utf8;
尤其是PRIMARY KEY(jokeid,categoryid)?还是有更好的方法来写这个?
提前谢谢你; - )
答案 0 :(得分:4)
是的,它是一个非常好的表和主键(我可能称之为“关联”表,但我不会称之为“查找”表。)
有些人(不是我)会坚持使用代理键列jokecategoryid作为主键;如果你这样做,你仍然需要一个UNIQUE约束(jokeid,categoryid)来强制执行业务规则。
答案 1 :(得分:0)
我希望该表有两个外键,例如
CREATE TABLE jokecategory (
jokeid INT NOT NULL REFERENCES joke (jokeid),
categoryid INT NOT NULL REFERENCES category (categoryid),
PRIMARY KEY (jokeid, categoryid)
) DEFAULT CHARACTER SET utf8;
答案 2 :(得分:0)
是的,正如托尼已经指出的那样,这是一张非常好的桌子。但我认为没有必要将其创建为具有主键索引的常规堆表。那是两个存储结构。只是索引结构会这样做,所以我的建议是将此表创建为索引组织表。
以下是文档的链接:http://download.oracle.com/docs/cd/E11882_01/server.112/e10713/indexiot.htm#CNCPT911
此致 罗布。