【问题标题】:Implementing a 'many-to-many' database实现“多对多”数据库
【发布时间】:2011-03-02 18:59:37
【问题描述】:

问候,堆栈溢出

在我的数据库中,我已经有一个表“联系人”,其中包含个人的记录。我的数据库中还有其他几个表,它们代表“技能集”,其中包含表示特定技能的记录。

1) 我将其绘制为“多对多”关系是否正确? (每个联系人可以有多个技能集,每个技能集可以属于多个联系人)

2) 我是数据库新手——我想链接表吗?

3) 有没有办法在我的程序(C# + windows 窗体)中实现这一点,这样对于“联系人”表中的任何给定记录,所有相关“技能集”表的名称​​或 与“联系人”记录关联的所有“技能”记录都可以检索到吗?

(数据库位于 SQL Server Express 2008 上。正在通过 VisualStudio 2008 内置的“数据连接向导”从数据库中检索数据)

【问题讨论】:

    标签: c# sql database-design many-to-many


    【解决方案1】:

    你是对的。那应该是多对多的关系。要在 SQL 中实现这一目标,您应该拥有三个表:

    ContactSkillSet - 存储联系人信息
    SkillSet - 存储个人技能集信息
    ContactSkillSet - 将技能集映射到基于联系人的关于主键

    至于你的最后一个问题,有多种方法可以做到这一点。这完全取决于您访问数据的方式(数据集、LINQ to SQL、实体框架等)。如果您提供更详细的信息,我们可以给您更具体的答复。

    【讨论】:

      【解决方案2】:

      您使用的链接表包含需要链接在一起的两个表中的每一个的主键。将唯一索引放在两个键的组合上或将组合设为 PK。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-23
        • 1970-01-01
        • 1970-01-01
        • 2016-03-31
        • 1970-01-01
        相关资源
        最近更新 更多