在其他两个表-sql server management studio之间创建具有多对一关系的新表

时间:2010-04-12 17:19:05

标签: tsql sql-server-2008 ssms

我有两个表,一个表有rowguid列,另一个表有自动递增列,但两个表都没有主键或外键。我想创建第三个表来存储上面两个表之间的关系。有人可以给我正确和最简单的方法来做到这一点。我是新的使用SQL Server。请回复我

2 个答案:

答案 0 :(得分:0)

首先,您必须调用这些表如何相互关联。必须有一些业务/逻辑规则才能做到这一点,这将是原始的关联。

然后你可以试试像

这样的东西
DECLARE @TableGuid TABLE(
        GuidID UNIQUEIDENTIFIER DEFAULT NEWID(),
        Val VARCHAR(10)
)

DECLARE @TableID TABLE(
        ID INT IDENTITY(1,1),
        Val VARCHAR(10)
)

INSERT @TableGuid (Val) SELECT 'A'
INSERT @TableID (Val) SELECT 'A'

SELECT * FROM @TableGuid
SELECT * FROM @TableID

DECLARE @TableManyMany TABLE(
        GuidID UNIQUEIDENTIFIER,
        ID INT,
        PRIMARY KEY(GuidID, ID)
)

INSERT INTO @TableManyMany
SELECT  GuidID,
        ID
FROM    @TableGuid g INNER JOIN
        @TableID i ON g.Val = i.Val

SELECT  *
FROM    @TableManyMany

答案 1 :(得分:0)

Amby,除非通过脚本,否则不要对数据库做任何事情。使用GUI界面是一种非常糟糕的做法,你现在需要打破习惯。你需要脚本中的东西,以便你可以将它们放在源代码管理中并使用它们部署到其他服务器。

从来没有,我的意思是永远,没有主键的表。那是数据库设计的第一天。如果您没有主键,那么您至少有一个唯一索引吗?如果没有,您可以获得重复的值,这是不好的。任何没有唯一标识行的方法的表都会被破坏。在你走得更远之前解决这个问题。

您还需要一些方法来确定两个表之间的关系。你怎么知道tablea中的哪条记录与tableb中的哪条记录相匹配?由于您有两种不同的数据类型,这不是关系,因此您需要在两个表中创建一些其他字段(或字段组合)以构建关系。如果你没有,那么这种关系的基础是什么。请在两个表中显示示例数据,并在桥接表中显示您想要的数据。我相信你还没有根据发布的内容充分考虑到桌面设计。