【发布时间】:2015-12-18 06:17:35
【问题描述】:
我想存储一些用户设置,我想到了 3 个选项,因为这是我的第一个项目,我想以正确的方式开始它,我不知道哪种方式是最佳方式..
将单个设置直接存储在用户表的列中
拥有一个 user_settings 表,其中包含 setting_name、setting_value 和 user_id 列
在用户表中存储一个 JSON 字符串,在名为“user_settings_json”的列中
在设计分析中,我注意到 wordpress 将其存储在单独的表中,但我不确定每个应用程序都需要这样做(因为我的用户设置没有 wp 那么多)
我正在使用 Laravel、PHP、javascript/jquery。
在设计、可维护性和性能方面,你们认为哪个最有用、总体上更好?
【问题讨论】:
-
当然是选项 1!想想 ACID 和标准化的好处
-
这是“个人偏好”和“可搜索性”的混合体。您是否要查找具有特定设置的用户(例如,通过电子邮件“选择退出”或“选择加入”)?这几乎消除了选项 3。您是否有很多设置可能会更改,或者可能与某些用户无关?那砍掉了第 1 点。您使用的是不能轻松处理连接或数据透视表的 ORM 吗?这样就去掉了 2 号。就我个人而言,2 号是我的偏好,但这确实取决于具体情况。
-
@bub 选项 1 一旦您有足够的设置(或者这些设置不适用于所有用户),就会变得很糟糕。我宁愿没有一个有 100 多列的表,这些列是半空的。
-
@samlev 如果您有 100 个设置并且不想只有 1 个表,则生成 5 个 20 列的表
-
@bub - 我真的希望你在讽刺。
标签: php database-design laravel-5