【问题标题】:SQL many to many recursive associations?SQL多对多递归关联?
【发布时间】:2015-04-25 13:41:51
【问题描述】:

我有一张会议桌。一个会议可以有一个相关会议的列表。这就是所谓的递归关联吗?

这是否通过让另一个表 ConferenceAssociatedConference 具有两个字段(ConferenceId、AssociatedConferenceId)并且这两个字段都是指向会议表的同一个 ConferenceId 字段的外键来实现?

我虽然以上是正确的,但在创建和构建我的 edmx 时,我得到:

错误 6 错误 3034:从第 875、982 行开始映射片段时出现问题:可能具有不同键的两个实体映射到同一行。确保这两个映射片段将 AssociationSet 的两端映射到相应的列。

CREATE TABLE [dbo].[ConferenceAssociatedConference](
    [ConferenceId] [nvarchar](50) NOT NULL,
    [AssociatedConferenceId] [nvarchar](50) NOT NULL,
 CONSTRAINT [PK_ConferenceAssociatedConference] PRIMARY KEY CLUSTERED 
(
    [ConferenceId] ASC,
    [AssociatedConferenceId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[ConferenceAssociatedConference]  WITH CHECK ADD      CONSTRAINT [FkConfAssociatedConf_AssociatedConferenceId] FOREIGN     KEY([AssociatedConferenceId])
REFERENCES [dbo].[Conference] ([ConferenceId])
GO

ALTER TABLE [dbo].[ConferenceAssociatedConference] CHECK CONSTRAINT     [FkConfAssociatedConf_AssociatedConferenceId]
GO

ALTER TABLE [dbo].[ConferenceAssociatedConference]  WITH CHECK ADD      CONSTRAINT [FkConfAssociatedConf_ConferenceId] FOREIGN KEY([ConferenceId])
REFERENCES [dbo].[Conference] ([ConferenceId])
GO

ALTER TABLE [dbo].[ConferenceAssociatedConference] CHECK CONSTRAINT  [FkConfAssociatedConf_ConferenceId]
GO

【问题讨论】:

    标签: sql database entity-framework database-design many-to-many


    【解决方案1】:

    是的,你的描述是正确的。您的 DML 是什么样的?

    【讨论】:

    • 嗨 amahfouz,添加到 awnser 中
    【解决方案2】:

    我见过的最简单的方法是使用父/子概念。将“ParentConference”列添加到您的会议表中,并将其默认为 null。可以通过使用主会议的 ID 填充新列来关联会议。这是诸如贸易展览之类的常见做法,通常有相关的专业会议或研讨会系列。限制是它需要任何给定组的一条记录作为该组的父组,这可能不符合您的需求。

    如果您不想这样做,我建议您制作一个 ConferenceType 表并以这种方式对您的会议进行分类。这比使用多对多流更容易,也不会那么混乱。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-19
      • 2010-12-11
      • 1970-01-01
      • 1970-01-01
      • 2011-12-31
      • 1970-01-01
      • 2011-11-09
      • 2020-11-15
      相关资源
      最近更新 更多