0

我知道这个问题已被多次询问和回答,并且我花了很多时间阅读以下问题:

问题在于,对于几类解决方案,支持者的分布似乎有些均匀:

  • 只要标准化,就将用户设置粘贴在单个表中
  • 将其拆分为 1 比 1 的两个表,例如“users”和“user_settings”
  • 用某种键值系统概括它
  • 以位域或其他序列化形式粘贴设置标志

因此,冒着提出重复问题的风险,我想描述一下我的具体情况,并希望得到更具体的答案。

  • 目前我的网站在 mysql 中有一个用户表,大约有 10-15 列(id、name、email、password...)

  • 我想为是否为不同类型的事件(notify_if_user_follows_me、notify_if_user_messages_me、notify_when_friend_posts_new_stuff...)发送电子邮件警报添加一组针对每个用户的设置

  • 我预计将来我会很少为每个用户添加一项设置,这些设置主要是与用户一对一的设置。

我倾向于创建第二个 user_settings 表并在其中粘贴“非必要”信息,例如电子邮件通知设置,以使主用户表更具可读性,但很想听听预期会说什么。

4

2 回答 2

1

似乎您的困境是是否垂直分区用户表。您可能也想阅读此 SO Q/A

于 2011-08-03T12:07:25.243 回答
0

我要投票赞成添加两个表......(一些 sota 键值系统)

最好(对我来说)添加数据而不是列......所以,

添加一个将用户链接到设置的新表,然后为设置添加一个表...

这些东西:notify_if_user_follows_me、notify_if_user_messages_me、notify_when_friend_posts_new_stuff。然后将成为带有 id 的行插入,您可以随时引用它们并根据需要扩展它们而无需更改架构。

于 2011-08-03T12:13:08.130 回答