将分隔列表存储在数据库列中真的那么糟糕吗?

想象一下带有一组复选框的Web表单(可以选择其中的任何一个或全部)。我选择将它们保存在存储在数据库表的一列中的逗号分隔值列表中。

现在,我知道正确的解决方案是创建第二个表并正确地规范化数据库。实现简单的解决方案更快,我想快速获得该应用程序的概念验证,而无需花费太多时间。

我认为节省的时间和更简单的代码在我的情况下是值得的,这是一个可辩护的设计选择,还是我应该从一开始就将它标准化?

更多上下文,这是一个小型内部应用程序,实际上取代了存储在共享文件夹中的Excel文件。我也在问,因为我正在考虑清理程序并使其更易于维护。在那里有一些我并不完全满意的事情,其中一个是这个问题的主题。


qq_花开花谢_0
浏览 677回答 6
6回答

慕容森

关于SO的问题有很多问题:如何从逗号分隔列表中获取特定值的计数如何从该逗号分隔列表中获取仅具有相同2/3 / etc特定值的记录逗号分隔列表的另一个问题是确保值一致 - 存储文本意味着拼写错误的可能性......这些都是非规范化数据的症状,并强调了为什么要始终为规范化数据建模。非规范化可以是查询优化,在需要实际呈现时应用。

MMMHUHU

一般来说,如果符合项目要求,任何事物都可以防御。这并不意味着人们会同意或想要捍卫你的决定......通常,以这种方式存储数据是不理想的(例如,难以进行有效的查询),如果修改表单中的项目,可能会导致维护问题。也许你可以找到一个中间地带并使用代表一组位标志的整数代替?

蛊毒传说

是的,我会说这真的很糟糕。这是一种可辩护的选择,但这并不能使其正确或良好。它破坏了第一个正常形式。第二个批评是将原始输入结果直接放入数据库,而没有任何验证或绑定,这使您对SQL注入攻击持开放态度。你所谓的懒惰和缺乏SQL知识的是新手所构成的东西。我建议花点时间做好,把它看作是学习的机会。或者保持原样并学习SQL注入攻击的痛苦教训。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL