如何在sql数据库中的单个字段中存储多个值

Kru*_*ala 8 sql

我的问题是,我想在数据库中存储一个有多个电话号码的人.对于数字的单个变量,每个只存储一个数字.现在,如果我想添加另一个电话号码,它将创建另一个具有相同细节但数量不同的新记录.我想一起显示所有这些数字.有人可以帮忙吗?

sem*_*mao 16

您应该为Person和PhoneNumber创建单独的表.

CREATE TABLE Person(PersonId int IDENTITY(1,1) PRIMARY KEY)

CREATE TABLE Phone(
    PersonId int,
    PhoneNumber varchar(20),
    CONSTRAINT PK_Phone PRIMARY KEY(PersonId,PhoneNumber),
    CONSTRAINT FK_PersonId FOREIGN KEY(PersonId) REFERENCES Person(PersonId)
    )
Run Code Online (Sandbox Code Playgroud)

  • 我想这个链接有助于理解为什么这个答案是正确的:http://en.wikipedia.org/wiki/First_normal_form (2认同)

chr*_*dev 10

您可以使用第二个表来存储数字,并使用外键链接:

PersonTable: PersonId, Name, etc..
Run Code Online (Sandbox Code Playgroud)

第二张表将保留数字......

NumbersTable: NumberId, PersonId(fk), Number
Run Code Online (Sandbox Code Playgroud)

然后你可以得到这样的数字......

SELECT p.Name, n.Number from PersonTable p Left Join NumbersTable n
on p.PersonId = n.PersonId
Run Code Online (Sandbox Code Playgroud)

这是一个简单的例子.LEFT JOIN如果一个人没有提供他们的号码,我在这里使用了一个.此外,这只是伪代码,因此不要在名称中使用Table.

  • 我是手动打字,我的答案解释了如何加入表格.这是Downvote的一个不好的理由! (3认同)
  • @DanBracuk,你贬低了一个更具信息性的答案,但对于建议较弱的答案没有问题? (2认同)