MySQL中用户的元表?

MySQL中用户的元表?,mysql,Mysql,我已经创建了数十个用户登录系统,并且总是在表的末尾添加选项、标志、设置等,所以它非常大 用户id 用户名 用户名 用户电子邮件 这只是开始。但是对于其他类型的表,我使用了一个基于元的系统,在这个系统中,我将一些id加入到somemeta表中,这总是有一些好处。这样做对用户也有好处吗?那么主用户表只包含id、基本用户详细信息,然后是另一个用于首选项的元表等?这类事情的最佳实践是什么?这实际上取决于你的目标是什么。如果所有的用户元数据都相同,(最有可能的是用户id),我会将所有的“元数据”保存在

我已经创建了数十个用户登录系统,并且总是在表的末尾添加选项、标志、设置等,所以它非常大

  • 用户id
  • 用户名
  • 用户名
  • 用户电子邮件

这只是开始。但是对于其他类型的表,我使用了一个基于元的系统,在这个系统中,我将一些id加入到
somemeta
表中,这总是有一些好处。这样做对用户也有好处吗?那么主
用户
表只包含id、基本用户详细信息,然后是另一个用于首选项的元表等?这类事情的最佳实践是什么?

这实际上取决于你的目标是什么。如果所有的用户元数据都相同,(最有可能的是
用户id
),我会将所有的“元数据”保存在一个表中。把它分到另一张桌子上没有好处

但是,如果客户的元数据需求可能会发生变化,并且会扩展/收缩,那么最好有三个表:一个用于用户,一个用于元数据列,一个用于用户元数据:

(user_id, user_email)
(meta_id, meta_column_name)
(user_id, meta_id, user_meta_value)

这样做的好处是允许您动态添加和删除元数据值,而且不需要所有客户都具有相同的元数据列。

了解数据库规范化……我建议将信息重新组合到一个表中。谁在乎你的桌子有多丑/多大,因为它是正确的?太棒了,正如我当时所想,这是一个用例决定。我一直有意识地决定不为我的用户创建多个表,因为没有必要。但看看为什么我需要真正的帮助。干杯