我的数据库设计够好吗?

我的数据库设计够好吗?

问题描述:

我有一个问题陈述来为Stock Management公司创建一个数据库。商业模式基本上是他们的Clients给他们钱,公司去投资他们在Stock Borkers。一些业务规则如下。我的数据库设计够好吗?

  1. 客户端可以有多个帐户。

  2. 有两种类型的帐户,Starting accountActive account

  3. 有两种类型的投资,LocalInternational。客户可以选择他们前进的投资类型。

  4. 客户端有一个Adviser和一个Broker。但是,公司允许Client首先注册而不提供这些信息。之后当Client提供这些信息时,他的记录将被更新。公司自行决定分配哪些Broker

  5. Client“可能”有一个Sub Agent

  6. Client将贷记和借记到他的帐户的钱。

  7. 一旦投资,公司将用新的投资价值和现金价值更新客户的账户。这些值应该单独监测。

  8. Client只要他向公司提供资金就会有Starting AccountClient只要公司为其分配Broker,就会有Active Account

以下是我的ER图。 enter image description here

我知道这是一个需要时间的任务,但我真的很感谢,如果有人能告诉我“我的设计有多好”,以及是否需要改变。谢谢!

可以回答一些问题使我们更好的设计:

  1. 有关联的表称为client_account告诉我 ,一个帐户可以多个客户端之间共享。如果不是, 可能是多余的。与经纪人实体的关系可以在账户表中完成 。
  2. 当且仅当account_typeinvestment_type已预定义 像静态值:

    开始考虑,主动交代和地方,国际

    ,将没有必要将它们定义为表,您可以使用域 对象(枚举)。

  3. 作为活动账户可以是账户表的boolaen属性,而不是 单独的表。
  4. 如果交易(借方和贷方)可以在账户之间完成(双重会计),那么 您需要有一个transaction_detail作为子表 transaction表。账户关系需要在 transaction_detail表中完成,不在transaction表中。
+0

感谢您的回复。关于你的观点1,有没有这张桌子是错误的?账户不共享,这是'股票账户'而不是银行账户。 – 2014-09-13 14:25:33

+0

如果我们删除client_account表并在帐户表中拥有客户端FK,会发生什么情况? – 2014-09-13 14:30:03

+0

什么都不会发生。它仍然会工作。我想了一个新的'client_account',因为它很容易搜索,并可能有助于解决将来的任何增加? – 2014-09-13 14:38:30