如何在一列中引用两个外键属性?

时间:2018-01-29 21:46:02

标签: sql database oracle

我正在使用Oracle SQL开发人员构建数据库。在场景的上下文中,我有一个主表,其中包含两个流动站。

以下是该表的代码:

[batch_size, height, width, color_channels]

我目前拥有它的方式是,此表中有两个流动站。 (请参阅帖子末尾的图片)

还有另一个名为Thermal_System_Components的表。其中有两个流动站使用的3个组件条目。

CREATE TABLE "ROVER" (
Rover_Model_ID varchar(7) NOT NULL,
Rover_Name varchar(50),
Manufacturer varchar(50),
CONSTRAINT Rover_PK PRIMARY KEY (Rover_Model_ID)
);

我的问题与这种情况有关。两个流浪者都使用了3个组件,所以我想知道如何成功地将数据输入到这些表中以突出显示BOTH流动站使用3个组件中的每一个。我在下面插入了我的初始概念表。

如果有人能帮我澄清一点,我会非常感激。

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

这称为many-to-many relationship

您需要的是第三个表,将流动站映射到组件。每对流动站/组件在此表中占一行,因此总共将有六行。

CREATE TABLE "ROVER_HAS_COMPONENT" (
Component_ID INT NOT NULL,
Rover_Model_ID INT NOT NULL,
CONSTRAINT TSC_PK PRIMARY KEY (Component_ID, Rover_Model_ID),
CONSTRAINT TSC_FK FOREIGN KEY (Component_ID) REFERENCES 
THERMAL_UNIT_COMPONENT(Component_ID), 
CONSTRAINT TSC_FK FOREIGN KEY (Rover_Model_ID) REFERENCES 
ROVER(Rover_Model_ID) 
);

您不需要组件表中的Rover_Model_ID。

PS:您还需要每个外键列中的数据类型以匹配它们引用的主键的数据类型。