【问题标题】:How to determine which columns to use as foreign keys?如何确定哪些列用作外键?
【发布时间】:2015-05-08 10:06:11
【问题描述】:

我需要一些关于 SQL 数据库设计的复习,特别是如何以及哪些列用于外键。

以下是我想出的两种设计,请告诉我哪个更有意义?对我来说,我相信设计 2 似乎更好..

编辑:

一个项目只能包含 1 个团队。一个团队可以有一个或多个团队成员。同样,团队成员可以是一个或多个团队的一部分。我正在使用 Microsoft Visio、UML Crow Foot Notation 创建这些图像。

我将 Project 从 ProjectTeamOrg 中分离出来的主要原因是为了分离数据,实际上,我将为一个 Project 拥有许多元素并将这些元素分离到它们自己的数据库表中。

设计 1

设计 2

【问题讨论】:

  • Project -> ProjectTeamOrg一对一的关系吗?
  • 表Project和ProjectTeamOrg不应该合并吗?
  • 您使用哪个工具来生成这些图像? =)
  • 一个团队成员可以参与多个项目吗?图表就是这样显示的,我只是想确定一下。该图还显示每个项目只能有一个团队成员——我很确定这是错误的。
  • 对不起,我今天才回复,周末去了 :( 一个项目只能包含 1 个团队。一个团队可以有一个或多个团队成员。同样,一个团队成员可以是一个或更多团队。我正在使用 Microsoft Visio、UML Crow Foot Notation 来创建这些图像。

标签: sql database-design foreign-key-relationship


【解决方案1】:

数据库的用途不明确。你没有解释数据流。我看不到 Team 表。它在那里吗?或 ProjectTeamOrg 是团队表。

请解释数据流向。然后有人可以帮助你。

【讨论】:

  • 对不起,我今天才回复,周末去了 :( 一个项目只能包含 1 个团队。一个团队可以有一个或多个团队成员。同样,一个团队成员可以是一个或更多团队。我正在使用 Microsoft Visio、UML Crow Foot Notation 来创建这些图像。
【解决方案2】:

告诉我这些表之间的关系..一对一(或)一对多。因为这种关系有助于我们确定表中的哪一列应该有外键。

采用设计 1

根据我的理解;

    Tablename         Columnname    Key 
    Project            Projectid   Primary   
    Projectteamorg     Projectid   Foreign(Reference Project(Projectid))   
    Projectteammember  teamid      Primary  
    Projectteamorg     teamid      Foreign(Reference Projectteammember(teamid))

【讨论】:

  • 那将是一个完美的评论
  • 图片已经指定了关系,||表示一对一和 >|表示一对多
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
相关资源
最近更新 更多