我正在参加有关SQL的入门课程,但我陷入了其中的一个实验室。 在本实验中,我们获得了需要通过SQL实现的ERD。 该实验室要求我们创建两个与关联表结合在一起的表(SQL显然不喜欢多对多关系)。

在此关联表中,根据ERD,两个属性都必须是主键和外键(Pk,Fk)。 这对我来说没有太大意义(您不能有多个主键),因此到目前为止,我无法通过在表中创建多个主键来实现ERD。 我在这里上网哪里错了?

编码:

CREATE Table dbo.TargetMailingList
(
     TargetID INT NOT Null 
        Foreign Key References dbo.TargetCustomers(TargetID),

     MailingListsID INT Not NULL 
        Foreign Key References dbo.Mailinglists(MailingListID),

     Primary Key (MailingListID,TargetID), 
);

===============>>#1 票数:4

没有两个主键。 这是一个复合键。 这两个列都是同一主键的一部分。 请访问http://en.wikipedia.org/wiki/Compound_key以获得更多信息。

===============>>#2 票数:0 已采纳

您可以按照@Juru的说明创建复合键,并创建2个外键:

CREATE TABLE dbo.Table_link
    (
    ndIdTable1 int NOT NULL,
    ndIdTable2 int NOT NULL
    )  ON [PRIMARY]
GO
ALTER TABLE dbo.Table_link ADD CONSTRAINT
    PK_Table_link PRIMARY KEY CLUSTERED 
    (
    ndIdTable1,
    ndIdTable2
    ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

GO
ALTER TABLE dbo.Table_link ADD CONSTRAINT
    FK_Table_Table_1 FOREIGN KEY
    (
    ndIdTable1
    ) REFERENCES dbo.Table_1
    (
    ndIdTable1
    ) ON UPDATE  NO ACTION 
     ON DELETE  NO ACTION 

GO
ALTER TABLE dbo.Table_link ADD CONSTRAINT
    FK_Table_Table_2 FOREIGN KEY
    (
    ndIdTable1
    ) REFERENCES dbo.Table_2
    (
    ndIdTable2
    ) ON UPDATE  NO ACTION 
     ON DELETE  NO ACTION 

GO

  ask by BigRed87 translate from so

未解决问题?本站智能推荐:

2回复

使用标题不同的表中的两个主键属性

我获得了带有Function_ID {PK}的表“ Functions”,并且我想要另一个具有Hierarchy_ID {PK}的表“ Hierarchy”,它定义了函数的树结构,因此我需要功能表AS Parent_ID中的一个Function_ID和功能子ID AS Child。 我的问题是
3回复

在SQL中查找两个表之间的重复差异

我尝试在两个表之间找到重复的行。 仅当记录不重复时,此代码才有效: 如何查找丢失的重复记录。 下面的PersonA表中的Robert 34 : 人物角色 : 人B :
1回复

无法在SQL Server中同时将数据插入到两个相关表中

我正在使用C#.net,winforms和sql server 2012编写程序,我的表单之一用于向数据库中添加新产品,产品信息存储在两个表中.'prodcutName'和'id'是一个标识列存储在此表中: 此表中存储的其他产品信息: 在我的表单中,我有三个texbox,可让用户
2回复

如何根据特定条件在SQL中更新两个表

我有两个表Table1和Table2 。 Table1包含ID (UniqueIdentifier) PK, IsActive (bit), ExpiryDate (DateTime), LastUpdateDT (Datetime) Table2包含ID (uniqueIde
5回复

SQL Server 2012将两个表中的列合并为一个

我在不同地方有两张桌子 最终结果必须是 VendorName在名为Vendors的表中 InvoiceNumber和InvoiceTotal在名为Invoices的表中 即使供应商没有任何发票,它也需要显示结果中的所有供应商,最大的发票总数首先显示DESC,并按字母顺序
2回复

从SQL Server中的不同表转换然后区分两个日期

有人可以建议最好的方法来区分不同表中的两个日期(当前以varchar格式存储为dd/mm/yyyy hh:mm:ss因此可能需要首先对其进行转换?) 我在以下情况下尝试失败了: 内部联接用于在表a和b中匹配“名称” 谢谢
2回复

SQL Server中两个表之间的列比较动态脚本

我有两个表,其中有28列。 在生产环境中,SQL Server排序规则设置为区分大小写。 我必须检查像这样的值: 是否可以动态地执行此操作,而无需为每列重复UPPER语句? 我只是想更整齐地做。 请分享您的想法。 谢谢
2回复

如何用一个查询SQL在两个表中插入数据

我有两个表stock和purchase表,我希望在将数据插入purchase表时,应该使用插入purchase表来更新stock表,该怎么做?
1回复

在SQL Server 2012中将两个选择合并到一个表中

我有两个查询,希望将它们合并到SQL Server中的一个表中。 第一个查询: 结果: 第二个查询: 结果 我期望的结果是能够将两个查询放在一起并获得此结果(使用trans作为联接:
4回复

结合两个表的简单SQL语句

我对SQL相当陌生,并且存在以下问题。 考虑以下表格“汽车”和“颜色”: 我想查询一个列出所有Car及其颜色名称的查询,以便获得以下输出: 保留ColorName = NULL的记录。 产生太多记录。 我在这里需要什么SQL语句? 我正在使用Microsoft