我有一个程序可以捕获许多不同类型的结构化消息。我需要将消息持久化到数据库。论坛对设计和绩效的看法是什么:
(a)对所有消息类型使用一个大表,因此要处理任何新消息类型,新列将添加到大表中。因此,数据库是一个表,最终可能有100列。
(b)为每种消息类型使用表,因此对于新消息类型,将新表添加到数据库中
通过性能,我的意思是搜索所有消息(即搜索一个表与跨联接表的搜索)以及开发工作(即开发人员之间的知识转移)和维护(即出现问题时)。
这听起来有点像关于规范化,但我不确定是不是。
谢谢!
答案 0 :(得分:1)
如果我读对你,选择(a)相当于所谓的" One True Lookup Table" (OTLT)。 OTLT是一个反模式。你可以在网上研究它。
性能下降,因为必须在两个字段(类型和代码)上完成查找。对于每种类型使用单独的表,查找仅在代码上。
查询更复杂,因此更有可能出错。
如果您需要为每种类型单独输入表单,则数据管理会更难。如果您只有一个真正的类型输入表单,则在输入新的查找值时需要小心。祝你好运。