多个外键和多个约束

时间:2015-03-06 03:54:08

标签: sql oracle database-administration

假设我有一个名为boxes的表,其中box_id属性为PK。

还有另外两张桌子。第一个是red_boxes,第二个是blue_boxes。

我在red_boxes表中添加了一个约束

ALTER TABLE red_boxes
ADD CONSTRAINT fk_box_id
FOREIGN KEY (box_id)
REFERENCES boxes (box_id);

现在,我想在blue_boxes表中添加一个约束。如果我没有将约束添加到red_boxes,则SQL结构将如下所示。解决这个问题的显而易见的方法是以不同方式命名新约束,例如fk_box_id2,但这是一个好方法吗?我应该以某种方式重新使用先前的约束,或者这是不可能的,为什么?

ALTER TABLE blue_boxes
ADD CONSTRAINT fk_box_id
FOREIGN KEY (box_id)
REFERENCES boxes (box_id)

1 个答案:

答案 0 :(得分:3)

每个约束都是独立的,需要唯一的名称。我的建议是使用源表和目标表名称,例如fk_red_boxes_boxesfk_blue_boxes_boxes。通过这种方式,您可以轻松识别它们的来源和去向。

如果您的表名中有下划线,您可能想要一个修改后的约定,您可以一目了然地轻松理解。例如,双下划线:fk__blue_boxes__boxesfk__red_boxes__boxes