我正在用Spring MVC设计在线银行业务。 客户将拥有一个唯一的客户ID,但他/她可以拥有多个帐户。像每个客户ID一样,银行中可以有多个帐户。所以我正在设计一个具有属性的表:
CustomerID,AccountNumber,其中CustomerId为主键。
请建议如何设计数据库。
答案 0 :(得分:2)
在同一个字段中填充多个值违反了atomicity的原理,因此违反了第一个范式。相反,您应该使用两个表:
客户:
帐户:
因此,一个客户在“客户”表中可能有一行,而在“客户”表中可能有多于一行。
答案 1 :(得分:1)
这是一个很好的示例,其中您可以有两个相互关联的表-一个用于客户,一个用于客户。一个客户可以拥有多个帐户,因此是一对多的关系。考虑下表:
Customers:
CustomerId(primary key), (other columns...)
Accounts:
AccountId, CustomerId(foreign key), AccountNumber
通过加入这些表,您可以在一个视图中拥有客户及其帐户:
SELECT CustomerId, AccountNumber FROM Customers, Accounts WHERE Customers.CustomerId=Accounts.CustomerId
答案 2 :(得分:0)
您可以使用一些定界符,例如逗号(,),semicolor(;)等将多个值放在单个列中。但是您可以用另一种方式来做。您可以创建一个AccountDetails表,其中主键为AccountNumber,外键为CustomerId。