多个外键和多个约束
Multiple foreign keys and multiple constrains
假设我有一个 table 名为 boxes 的 box_id 属性作为 PK。
还有另外两个 table。第一个是red_boxes,第二个是blue_boxes.
我已经为 red_boxes table
添加了约束
ALTER TABLE red_boxes
ADD CONSTRAINT fk_box_id
FOREIGN KEY (box_id)
REFERENCES boxes (box_id);
现在,我想给 blue_boxes table 添加一个约束。如果我没有将约束添加到 red_boxes,SQL 结构将如下所示。解决此问题的明显方法是以不同方式命名新约束,例如fk_box_id2
,但这是一个好方法吗?我是否应该以某种方式重新使用以前的约束,或者这是不可能的,为什么?
ALTER TABLE blue_boxes
ADD CONSTRAINT fk_box_id
FOREIGN KEY (box_id)
REFERENCES boxes (box_id)
每个约束都是独立的,并且需要一个唯一的名称。我的建议是使用源和目标 table 名称,例如 fk_red_boxes_boxes
和 fk_blue_boxes_boxes
。这样你就可以很容易地识别他们从哪里来,到哪里去。
如果您的 table 名称中有下划线,您可能想提出一个修改后的约定,让您一目了然。例如双下划线:fk__blue_boxes__boxes
和 fk__red_boxes__boxes
.
假设我有一个 table 名为 boxes 的 box_id 属性作为 PK。
还有另外两个 table。第一个是red_boxes,第二个是blue_boxes.
我已经为 red_boxes table
添加了约束ALTER TABLE red_boxes
ADD CONSTRAINT fk_box_id
FOREIGN KEY (box_id)
REFERENCES boxes (box_id);
现在,我想给 blue_boxes table 添加一个约束。如果我没有将约束添加到 red_boxes,SQL 结构将如下所示。解决此问题的明显方法是以不同方式命名新约束,例如fk_box_id2
,但这是一个好方法吗?我是否应该以某种方式重新使用以前的约束,或者这是不可能的,为什么?
ALTER TABLE blue_boxes
ADD CONSTRAINT fk_box_id
FOREIGN KEY (box_id)
REFERENCES boxes (box_id)
每个约束都是独立的,并且需要一个唯一的名称。我的建议是使用源和目标 table 名称,例如 fk_red_boxes_boxes
和 fk_blue_boxes_boxes
。这样你就可以很容易地识别他们从哪里来,到哪里去。
如果您的 table 名称中有下划线,您可能想提出一个修改后的约定,让您一目了然。例如双下划线:fk__blue_boxes__boxes
和 fk__red_boxes__boxes
.