链接sql中的两个表

disbfnqx  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(195)

我有以下两个表格:

|**Machines**|    |**Parts**|
|idMachine   |    |idPart   |
|label       |    |label    |

我想把这两个表联系起来,知道一台机器可以有多个零件,一个零件可以由多台机器组成。
最后,它将在web窗体中使用:当用户选择一台机器时,我将显示链接到所选机器的不同部分。
我是否必须创建另一个表来链接这两个表,或者我可以简单地编写一个sql请求?或者其他解决方案?

fzwojiic

fzwojiic1#

如果您有多对多关系,那么是的,您需要第三个表来创建关系。这个表通常只保存表中相应行的id,两者都是复合主键(以避免重复)。像这样:

--Sample tables
CREATE TABLE dbo.Machine (MachineID int IDENTITY NOT NULL,
                          Label nvarchar(50));

ALTER TABLE dbo.Machine ADD CONSTRAINT PK_MachineID PRIMARY KEY CLUSTERED (MachineID);
GO
CREATE TABLE dbo.Part (PartID int IDENTITY NOT NULL,
                       Label nvarchar(50));

ALTER TABLE dbo.Part ADD CONSTRAINT PK_PartID PRIMARY KEY CLUSTERED (PartID);
GO
--Relationship table
CREATE TABLE dbo.MachinePart (MachineID int NOT NULL,
                              PartID int NOT NULL);
--Add Primary Key
ALTER TABLE dbo.MachinePart ADD CONSTRAINT PK_MachinePartID PRIMARY KEY CLUSTERED (MachineID,PartID);

--Add Foreign Keys
ALTER TABLE dbo.MachinePart ADD CONSTRAINT FK_MachinePart_MachineID FOREIGN KEY (MachineID) REFERENCES dbo.Machine(MachineID);
ALTER TABLE dbo.MachinePart ADD CONSTRAINT FK_MachinePart_PartID FOREIGN KEY (PartID) REFERENCES dbo.Part(PartID);
GO
--Clean up
DROP TABLE dbo.MachinePart
DROP TABLE dbo.Part;
DROP TABLE dbo.Machine;
mf98qq94

mf98qq942#

您需要在两个表中使用公共因子来链接表或编写sql来标识,与这些部件关联的特定机器或与这些机器关联的部件。
如果详细说明,两个表中都有哪些属性?除此之外,您列出的这些似乎不足以链接这两个表。

相关问题