【发布时间】:2021-01-08 20:35:06
【问题描述】:
有谁知道如何插入多个 staff_id 值? TABLE author 是我的表 Articles 和 Staff 之间的交集表。在这种情况下,我想插入 2 名工作人员。因此,对于我想要的结果,我希望它说 staff_id 1 和 2 在 article_id 1 上工作。
这是上面代码的输出。我的意思是它有效,但在我看来它会创建太多行。
我想让它连续说,staff_id 1 和 2,写 article_id 1。
我尝试使用此代码创建复合键
CREATE TABLE author(
staff_id INTEGER NOT NULL REFERENCES Staff(staff_id),
staff_id INTEGER REFERENCES Staff(staff_id),
staff_id INTEGER REFERENCES Staff(staff_id),
staff_id INTEGER REFERENCES Staff(staff_id),
staff_id INTEGER REFERENCES Staff(staff_id),
staff_id INTEGER REFERENCES Staff(staff_id),
PRIMARY KEY (staff_id, staff_id, staff_id, staff_id, staff_id, staff_id)
);
但它给了我一个错误“列“staff_id”在主键约束中出现两次”。
【问题讨论】:
-
它们不是太多行。这是正确的做法。
-
您使用链接表的方法很好。这是创建多对多关系的一种干净且标准的方式。不用担心行数。
-
那么,当你让 8 名员工写一篇文章时会发生什么?你拥有它的方式实际上是最好的方式。是的,它创建了多行——一篇文章的每个员工都有一个,但它是规范化的并且更容易查询。想象一下,如果您必须找到某个特定员工撰写的所有文章。
-
列名在表中必须是唯一的。您不能有多个
staff_id列。 -
出于好奇:您认为有多少行“太多”?千万?一亿?十亿?
标签: sql postgresql database-design