只是我想弄清楚的一个功课问题,我将不胜感激。
显然,这个数据库设计的设计存在三个问题:
Account = {AccNumber, Type, Balance}
Customer = {CustID, FirstName, LastName, Address, AccNumber}
非常明显的一点是,如果'AccNumber'存在,'CustID'是无用的。
我不太确定第二个和第三个问题。
“FirstName”和“LastName”的单独属性是否存在问题,我们只能使用“姓名”?
另一个选择,如果'AccNumber'是主键(假设将删除CustID),它可能应该放在开头:
如:
Customer = {AccNumber, Name, Address}
任何意见都会受到赞赏!
由于
答案 0 :(得分:3)
乍一看,客户 - 帐户关系似乎是一个多关系,这需要使用中间关系表。例如,我在银行有三个账户。另外,我老婆有两个属于自己的。最后,我们有一个共享帐户。上面的架构无法很好地处理这种关系。
你确实可以使用“名字” - 但是你可能需要知道未来某个时候名字或姓氏是什么,这样的连接可能很难分开。
祝你的作业好运......
答案 1 :(得分:3)
问题在于您没有向我们介绍数据库应该用文字表示的内容;就像现在一样,设计没有任何“错误”,因为我们不知道设计应该建模什么。
我当然不会说CustID
没用,因为它是表格的主键。您需要确定的是客户和帐户之间的关系。它应该是以下之一:
目前,AccNumber
表格中的Customer
,您的设计模型为#2。
答案 2 :(得分:0)
如何设计,每个客户只能拥有一个银行帐户。
多对多关系将是一个问题。相反,您可以创建一个包含关系的第三个表。例如:
Account = {AccNumber, Type, Balance}
Connection = {ConnID, AccNumber, CustID}
Customer = {CustID, FirstName, LastName, Address}
这样,帐户和客户都是Connection的父级(缺少更好的名称)。您可以查询具有特定AccNumber的所有连接,并查找使用该帐户的所有客户,反之亦然。