想象一个存储个人详细信息的系统,该系统允许用户存储任意数量的电话号码,包括无。如果每个电话号码都在属性下,该如何存储在表格中?
答案 0 :(得分:1)
不能。数据库中的表不能具有可变的列数。
在这种情况下,您要做的就是通过一个外键约束将用户存储在一个表中,并将电话号码存储在另一个表中:
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或多个电话号码。