简单数据库 - 设计问题

时间:2012-01-30 01:05:05

标签: database database-design

只是我想弄清楚的一个功课问题,我将不胜感激。

显然,这个数据库设计的设计存在三个问题:

Account = {AccNumber, Type, Balance}
Customer = {CustID, FirstName, LastName, Address, AccNumber}

非常明显的一点是,如果'AccNumber'存在,'CustID'是无用的。

我不太确定第二个和第三个问题。

“FirstName”和“LastName”的单独属性是否存在问题,我们只能使用“姓名”?

另一个选择,如果'AccNumber'是主键(假设将删除CustID),它可能应该放在开头:

如:

Customer = {AccNumber, Name, Address}

任何意见都会受到赞赏!

由于

3 个答案:

答案 0 :(得分:3)

乍一看,客户 - 帐户关系似乎是一个多关系,这需要使用中间关系表。例如,我在银行有三个账户。另外,我老婆有两个属于自己的。最后,我们有一个共享帐户。上面的架构无法很好地处理这种关系。

你确实可以使用“名字” - 但是你可能需要知道未来某个时候名字或姓氏是什么,这样的连接可能很难分开。

祝你的作业好运......

答案 1 :(得分:3)

问题在于您没有向我们介绍数据库应该用文字表示的内容;就像现在一样,设计没有任何“错误”,因为我们不知道设计应该建模什么。

我当然不会说CustID没用,因为它是表格的主键。您需要确定的是客户和帐户之间的关系。它应该是以下之一:

  1. 单个客户可以绑定到多个帐户,但一个帐户可以绑定到一个客户
  2. 单个客户只能绑定一个帐户,但帐户可以绑定多个客户。
  3. 单个客户可以绑定到多个帐户,单个帐户可以绑定到多个客户
  4. 目前,AccNumber表格中的Customer,您的设计模型为#2。

答案 2 :(得分:0)

如何设计,每个客户只能拥有一个银行帐户。

多对多关系将是一个问题。相反,您可以创建一个包含关系的第三个表。例如:

Account = {AccNumber, Type, Balance}
Connection = {ConnID, AccNumber, CustID}
Customer = {CustID, FirstName, LastName, Address}

这样,帐户和客户都是Connection的父级(缺少更好的名称)。您可以查询具有特定AccNumber的所有连接,并查找使用该帐户的所有客户,反之亦然。