MySQL数据库设计-将这些字段放在用户表中还是创建新表?

MySQL数据库设计-将这些字段放在用户表中还是创建新表?,mysql,database,database-design,relational-database,normalization,Mysql,Database,Database Design,Relational Database,Normalization,我需要能够存储一些关于用户的信息,我想知道最好的方法 社交媒体 id - user_id - facebook - twitter_username - display_tweets 一些简短的问题: Facebook字段只是一个“是”或“否”来查看他们是否有,所以我知道是否要显示图标。应该是枚举0还是枚举1?1意味着他们有一个 与display_tweets相同,它应该是枚举0还是枚举1 然后主要的问题是,我应该把这些存储在users表中吗?所以我只需要添加3个字段,facebook、t

我需要能够存储一些关于用户的信息,我想知道最好的方法

社交媒体

id - user_id - facebook - twitter_username - display_tweets
一些简短的问题:

  • Facebook字段只是一个“是”或“否”来查看他们是否有,所以我知道是否要显示图标。应该是枚举0还是枚举1?1意味着他们有一个
  • 与display_tweets相同,它应该是枚举0还是枚举1
然后主要的问题是,我应该把这些存储在users表中吗?所以我只需要添加3个字段,facebook、twitter用户名和display tweets。此外,有些人可能既没有facebook也没有twitter。users表已经有20个字段,所以我不想把它设置得太大


谢谢

任何布尔字段都需要
类型。您也可以使用
bool
boolean
,但这些都是
tinyint(1)
的别名,就像
位一样。不要使用
enum
,因为当输入无效条目时,它会插入一个空字符串,而不是引发异常。

任何布尔字段都需要
位类型。您也可以使用
bool
boolean
,但这些都是
tinyint(1)
的别名,就像
位一样。不要使用
enum
,因为当输入无效条目时,它会插入一个空字符串,而不是引发异常。

是的,将它们放在用户表中。列很便宜(如果它们经常为null或很小),特别是因为您的users表保证非常小(您不可能有大量的用户)

把东西放在更多的表格中只会增加工作量。我以前创建过超过50列的表(正确标准化-所有50列存储不同的数据项)


如果列不一定与每个用户相关,那么允许空值可能是一个好主意。“神奇值”不是一个好主意(我已经看到”“或-1经常被用作“神奇值”。

是的,将它们放在用户表中。列很便宜(如果它们经常为null或很小),特别是因为您的users表保证非常小(您不可能有大量的用户)

把东西放在更多的表格中只会增加工作量。我以前创建过超过50列的表(正确标准化-所有50列存储不同的数据项)

如果列不一定与每个用户相关,那么允许空值可能是一个好主意。“魔法值”并不是一个好主意(我已经看到经常将“”或-1用作“魔法值”)