Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 多个外键和多个约束_Sql_Oracle_Database Administration - Fatal编程技术网

Sql 多个外键和多个约束

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

假设我有一个名为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_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个字符的限制。