2016-07-14 146 views
0

我试图用非常基本的表格来设计我的数据库,我很困惑,正确地做到这一点。SQL表格设计布局

我附上了主要信息的图片,我不太确定如何链接它们。意思是什么应该是外键,或者这些表中的某些应该包括其他表的列表。

layout

UPDATE对表 updated tables

回答

2

按您的要求,你是对有关关联表

  1. 客户可以拥有多个账户及账户可以有多个客户端
    以后,许多(客户)到很多(帐户)
    所以创建一个关联表,首先打破多对多关系。然后加入它的方式
  2. 账户只能有一个经理
    这意味着一(经理)到很多(帐户)
    所以,添加一个名为经理ID属性在帐户
  3. 帐号可以有很多traedetail
    这意味着一个(客户)到很多(TradeDetails)
    所以,在TradeDetails添加一个名为帐户ID属性
+0

的提示。我放了一张更新表格的图片。这看起来不错吗? – solarissf

+0

你是对的!这工作正常,但仍然,我觉得** [Mapping ClientAccount]。[Id] **没有任何意义,我们可以删除它,我们可以使ClientID和AccountID作为主键以及外键[映射ClientAccount]。除此之外,一切看起来都很完美 –

+0

是的我同意[Mapping_ClientAccount]。[Id]是没用的。我以为你只能做出1列PK。如上所述,我将如何使ClientID和AccountID成为PK? – solarissf

0

取决于你是否正在寻找有一个规范化的数据库或一些其他类型的设计范例。我建议阅读关于数据库规范化和参照完整性的概念。

我会做的是让表与账户/经理之间具有1对1的关系放到一张表中(除非你能想到一个真正的理由)。将Clientid添加为帐户的外键。将AccountID作为外键添加到TradeDetail。你基本上将所有东西都设置为1对多的关系,其中有1个记录的表有一个字段作为主键,而有许多的表将其作为外键。

+1

帐户也可以有多个客户端,因此需要中间表来打破多对多的关系。 – Eric

+0

你说得对。我没有仔细阅读原文。中间表是必需的。 –

+0

我在上图中添加了一个中间表。是的,我GOOGLE了规范化的数据库,这是我想要的。 – solarissf