【发布时间】:2011-08-03 06:08:00
【问题描述】:
我知道这个问题已经被问过很多次了,我也花了很多时间阅读以下问题:
- Database table structure for user settings
- How to handle a few dozen flags in a database
- Storing flags in a DB
- How many database table columns are too many?
- How many columns is too many columns?
问题在于,几类解决方案的支持者分布似乎有些均匀:
- 只要规范化,就将用户设置粘贴在单个表中
- 将其拆分为 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