Database design 如何使用可变数量的属性设计表?

Database design 如何使用可变数量的属性设计表?,database-design,Database Design,设想一个存储个人详细信息的系统,允许用户存储任意数量的电话号码,其中不包括任何号码。如果每个电话号码都有一个属性,那么如何将其存储在表中?您不能。数据库中的表不能具有可变的列数 在这种情况下,您需要将用户存储在一个表中,将电话号码存储在另一个表中,并通过外键约束链接到用户表: CREATE TABLE Users ( id int PRIMARY KEY, firstName varchar(10), -- rest of the users details goes h

设想一个存储个人详细信息的系统,允许用户存储任意数量的电话号码,其中不包括任何号码。如果每个电话号码都有一个属性,那么如何将其存储在表中?

您不能。数据库中的表不能具有可变的列数

在这种情况下,您需要将用户存储在一个表中,将电话号码存储在另一个表中,并通过外键约束链接到用户表:

CREATE TABLE Users
(
    id int PRIMARY KEY,
    firstName varchar(10),
    -- rest of the users details goes here
);

CREATE TABLE PhoneNumbers
(
    userId FOREIGN KEY REFERENCES Users(Id),
    PhoneNumber varchar(10) PRIMARY KEY,
    Description varchar(20) -- Home, Mobile, Office etc'
)

这样,每个用户可以有0、1或多个电话号码。

Hi。这是一个常见问题。请阅读并执行如何提问和向下投票箭头鼠标悬停文本。是时候读一本关于信息建模、关系模型和数据库设计的教科书了。(注意——记录设计的设计工具、api或语言的手册不是设计手册/教程。)如果你有一本教科书,它有什么建议?你的案例如何成为一个问题?作为一个例子,它还没有出现?