我的数据库设计够好吗?
问题描述:
我有一个问题陈述来为Stock Management
公司创建一个数据库。商业模式基本上是他们的Clients
给他们钱,公司去投资他们在Stock Borkers
。一些业务规则如下。我的数据库设计够好吗?
客户端可以有多个帐户。
有两种类型的帐户,
Starting account
和Active account
。有两种类型的投资,
Local
和International
。客户可以选择他们前进的投资类型。客户端有一个
Adviser
和一个Broker
。但是,公司允许Client
首先注册而不提供这些信息。之后当Client
提供这些信息时,他的记录将被更新。公司自行决定分配哪些Broker
。Client
“可能”有一个Sub Agent
。Client
将贷记和借记到他的帐户的钱。一旦投资,公司将用新的投资价值和现金价值更新客户的账户。这些值应该单独监测。
Client
只要他向公司提供资金就会有Starting Account
。Client
只要公司为其分配Broker
,就会有Active Account
。
以下是我的ER图。
我知道这是一个需要时间的任务,但我真的很感谢,如果有人能告诉我“我的设计有多好”,以及是否需要改变。谢谢!
答
可以回答一些问题使我们更好的设计:
- 有关联的表称为
client_account
告诉我 ,一个帐户可以多个客户端之间共享。如果不是, 可能是多余的。与经纪人实体的关系可以在账户表中完成 。 -
当且仅当
account_type
和investment_type
已预定义 像静态值:开始考虑,主动交代和地方,国际
,将没有必要将它们定义为表,您可以使用域 对象(枚举)。
- 作为活动账户可以是账户表的boolaen属性,而不是 单独的表。
- 如果交易(借方和贷方)可以在账户之间完成(双重会计),那么 您需要有一个
transaction_detail
作为子表transaction
表。账户关系需要在transaction_detail
表中完成,不在transaction
表中。
感谢您的回复。关于你的观点1,有没有这张桌子是错误的?账户不共享,这是'股票账户'而不是银行账户。 – 2014-09-13 14:25:33
如果我们删除client_account表并在帐户表中拥有客户端FK,会发生什么情况? – 2014-09-13 14:30:03
什么都不会发生。它仍然会工作。我想了一个新的'client_account',因为它很容易搜索,并可能有助于解决将来的任何增加? – 2014-09-13 14:38:30