数据库用户表设计,针对特定场景

时间:2011-08-03 06:08:01

标签: mysql database-design schema-design settings

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

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

  • 只要标准化
  • ,就可以将用户设置粘贴在一个表中
  • 将其拆分为两个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 ...)

  • 我预计将来我很少会为用户添加一个用户设置,大多数是1比1。

我倾向于创建第二个user_settings表并在那里粘贴“非必要”信息,例如电子邮件通知设置,以保持主用户表更具可读性,但非常好奇听到预期的内容说。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我要投票支持添加两张桌子......(某些sota键值系统)

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

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

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