【问题标题】:Database user table design, for specific scenario数据库用户表设计,针对特定场景
【发布时间】:2011-08-03 06:08:00
【问题描述】:

我知道这个问题已经被问过很多次了,我也花了很多时间阅读以下问题:

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

  • 只要规范化,就将用户设置粘贴在单个表中
  • 将其拆分为 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 表并在其中粘贴“非必要”信息(例如电子邮件通知设置),以使主用户表更具可读性,但我很想知道需要什么说。

【问题讨论】:

  • 我会按照你的计划去做。
  • 酷,我会用简单的方法过关,如果稍后出现令人信服的理由,我会迁移。谢谢。

标签: mysql database-design schema-design settings


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-19
      • 2014-11-09
      相关资源
      最近更新 更多