Sql 多个外键和多个约束
假设我有一个名为box的表,其中box_id属性作为PK 还有两张桌子。第一个是红色的盒子,第二个是蓝色的盒子 我已经向red_box表添加了一个约束Sql 多个外键和多个约束,sql,oracle,database-administration,Sql,Oracle,Database Administration,假设我有一个名为box的表,其中box_id属性作为PK 还有两张桌子。第一个是红色的盒子,第二个是蓝色的盒子 我已经向red_box表添加了一个约束 ALTER TABLE red_boxes ADD CONSTRAINT fk_box_id FOREIGN KEY (box_id) REFERENCES boxes (box_id); 现在,我想向blue_Box表添加一个约束。如果我没有将约束添加到红色框中,SQL结构将如下所示。解决此问题的明显方法是以不同的方式命名新约束,例如fk_b
ALTER TABLE red_boxes
ADD CONSTRAINT fk_box_id
FOREIGN KEY (box_id)
REFERENCES boxes (box_id);
现在,我想向blue_Box表添加一个约束。如果我没有将约束添加到红色框中,SQL结构将如下所示。解决此问题的明显方法是以不同的方式命名新约束,例如fk_box_id2
,但这是一种好方法吗?我是否应该以某种方式重复使用之前的约束,或者这是不可能的,为什么
ALTER TABLE blue_boxes
ADD CONSTRAINT fk_box_id
FOREIGN KEY (box_id)
REFERENCES boxes (box_id)
每个约束都是独立的,需要唯一的名称。我的建议是使用源表和目标表名称,例如
fk\u red\u boxes\u boxes
和fk\u blue\u boxes\u boxes
。通过这种方式,您可以很容易地确定它们来自何处以及它们将去何处
如果您的表名中有下划线,您可能希望提出一个经过修改的约定,以便一眼就能理解。例如,双下划线:
fk\uu蓝色框\uu框
和fk\uu红色框\uu框
每个约束都是独立的,需要唯一的名称。我的建议是使用源表和目标表名称,例如fk\u red\u boxes\u boxes
和fk\u blue\u boxes\u boxes
。通过这种方式,您可以很容易地确定它们来自何处以及它们将去何处
如果您的表名中有下划线,您可能希望提出一个经过修改的约定,以便一眼就能理解。例如,双下划线:
fk\uu蓝色框\uu框
和fk\uu红色框\uu框
每个约束都是独立的,需要唯一的名称。我的建议是使用源表和目标表名称,例如fk\u red\u boxes\u boxes
和fk\u blue\u boxes\u boxes
。通过这种方式,您可以很容易地确定它们来自何处以及它们将去何处
如果您的表名中有下划线,您可能希望提出一个经过修改的约定,以便一眼就能理解。例如,双下划线:
fk\uu蓝色框\uu框
和fk\uu红色框\uu框
每个约束都是独立的,需要唯一的名称。我的建议是使用源表和目标表名称,例如fk\u red\u boxes\u boxes
和fk\u blue\u boxes\u boxes
。通过这种方式,您可以很容易地确定它们来自何处以及它们将去何处
如果您的表名中有下划线,您可能希望提出一个经过修改的约定,以便一眼就能理解。例如,一个双下划线:
fk\uu蓝色框\uu框
和fk\uu红色框\uu框
约束名称是标识约束的ID,它类似于约束的PK(作为示例)。因此,不能有两个同名的约束。一个很好的做法是使用它所属的表的一部分来命名约束,如fk#boxid#redbox
和fk#boxid#bluebox
(#只是我使用的一种约定)小心不要使用,在oracle中,如果我记得是30个字符,那么约束名称就是标识约束的ID,它就像约束的PK(仅作为示例)。因此,不能有两个同名的约束。一个很好的做法是使用它所属的表的一部分来命名约束,如fk#boxid#redbox
和fk#boxid#bluebox
(#只是我使用的一种约定)小心不要使用,在oracle中,如果我记得是30个字符,那么约束名称就是标识约束的ID,它就像约束的PK(仅作为示例)。因此,不能有两个同名的约束。一个很好的做法是使用它所属的表的一部分来命名约束,如fk#boxid#redbox
和fk#boxid#bluebox
(#只是我使用的一种约定)小心不要使用,在oracle中,如果我记得是30个字符,那么约束名称就是标识约束的ID,它就像约束的PK(仅作为示例)。因此,不能有两个同名的约束。一个很好的做法是用它所属的表的一部分来命名约束,比如fk#boxid#redbox
和fk#boxid#bluebox
(#只是我使用的一个约定)小心不要使用外推名称限制,在oracle中,如果我记得是30个字符,我更喜欢Jorge使用另一个字符的想法,例如,$或#-更好地利用了30个字符的限制。我更喜欢豪尔赫使用另一个字符的想法,例如,$或#-更好地利用了30个字符的限制。我更喜欢豪尔赫使用另一个字符的想法,例如,$或#-更好地利用了30个字符的限制。我更喜欢豪尔赫使用另一个字符的想法,例如,$或#-更好地利用30个字符的限制。