MySQL分成两个表或将所有内容保存在一个

时间:2017-03-13 15:45:47

标签: mysql database database-design

我目前有一个包含以下列的通用Users

user_id
first_name
last_name
join_date
last_active
email
password
rank
status

有些用户(排名为3的用户)会提供一些额外的信息,如电话号码,辅助电子邮件,生日等(共15个字段)。我想知道是否应该在这个表上添加这些列,或者是否应该创建另一个表并使用user_id与Users连接。像这样:

user_id
all new columns

哪一个是最佳选择?

1 个答案:

答案 0 :(得分:0)

这两种方法是可行的。

从两个表中获取所有列:

SELECT t1.*, t2.*
    FROM t1
    LEFT JOIN t2  USING(user_id);

我假设t2中的行有时会丢失,但是你想得到行,NULLs表示缺少的数据 - 因此LEFT JOIN

当然,如果您知道自己不需要t2,请不要执行JOIN。但是,总是在做JOIN

,除了一点点表现之外没有任何伤害

这是"最佳选择"?如果不了解更多关于你的系统的话,这很难说。但是,根据你提到的信息,它似乎是一个很好的'选项。