我为用户设置了大约200个设置,其中包括通知设置和用户对象活动的跟踪设置。问题是如何将其存储在数据库中?每个设置应该是一行还是一列?如果colunm那么表将有200个colunms。如果行然后大约3个colunms但每个用户200行x甚至1000万用户=不好。
那么我怎么能存储所有这些设置呢?注意:这些设置是文本输入和FK查找与其他表的混合。
感谢。
答案 0 :(得分:4)
序列化数据几乎总是一个坏主意,因为这样做会削弱dbms。生产高效dbms所需的所有年份都将被浪费在一系列的串行数据上。
如果您针对每个设置连接了应用程序逻辑,我认为您应该将其实现为:
设置表中每个设置1列。 这样可以更轻松地利用dbms的强大功能,具有约束检查,参照完整性,正确的值数据类型以及优化程序的大量信息。缺点是行大小增加。
或
每个设置(或相关设置组)1个表。 这具有上述所有优点,但是当您需要一次获取大部分或全部设置时,会换行行以获得性能损失。当设置是可选的时,如果实际数据稀疏,则此替代方法将显着缩小。
此外,许多列通常都是“气味”,这表明您没有正确规范化数据,但不一定是这样。只有您知道您的数据。
答案 1 :(得分:3)
您有200个要跟踪的设置建议灵活的数据库架构。因此,我建议采用混合方法:
我认为更大的答案是,您不会从原始问题中找到一个解决方案,而是需要同时使用两者来适应数据。
答案 2 :(得分:2)
我认为200列绝对不是一个好主意,因为难以编写存储过程,手动查看数据或以后扩展到更多设置。
您可以为所有这200个设置尝试XML,然后每个用户只有1行。用户名和相应的设置xml。但同样会限制您的查询功能,但DB现在支持XML。您可以专门检出XML DB。