我需要一些设计,可以在一列中保留多个值

时间:2019-10-10 12:47:40

标签: mysql database-design primary-key

我正在用Spring MVC设计在线银行业务。 客户将拥有一个唯一的客户ID,但他/她可以拥有多个帐户。像每个客户ID一样,银行中可以有多个帐户。所以我正在设计一个具有属性的表:

CustomerID,AccountNumber,其中CustomerId为主键。

请建议如何设计数据库。

3 个答案:

答案 0 :(得分:2)

在同一个字段中填充多个值违反了atomicity的原理,因此违反了第一个范式。相反,您应该使用两个表:

客户:

  • CustomerID(主键)
  • 其他客户字段

帐户:

  • AccountNumber(主键)
  • CustomerID(引用客户表的外键)
  • 其他帐户字段

因此,一个客户在“客户”表中可能有一行,而在“客户”表中可能有多于一行。

答案 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。