【发布时间】:2017-03-27 22:58:51
【问题描述】:
将 SQL Server DB 中的值存储为逗号分隔值有什么问题吗?
我有 100 个类别,每个类别有 500 个产品。我最初的想法是将产品代码存储在逗号分隔值中,以便表中只有 100 条记录:
catagcd1 - prod1,prod2,prod3......
catagcd2 - prod2,prod3,prod5......
但是当我问我的朋友时:不要将其存储为逗号分隔,存储为正常结构。这意味着:
catagcd1 - prod1
catagcd1 - prod2
catagcd1 - prod3
catagcd2 - prod2
----------------
----------------
我的方式和他的有什么区别?从性能的角度来看还有什么区别?能解释一下吗?
【问题讨论】:
-
逗号分隔的值甚至违反了第一范式,通常是一个坏主意。 SQL Server 完全没有问题有 500 行 - 哎呀,即使有 500'000 行!但是试图将这些逗号分隔的值解析回单独的值是一团糟,并且需要大量(不必要的)代码。建议:不要这样做! 行数的“节省”完全无关紧要,根本没有帮助 - 设计和查询中的混乱非常相关 将来会给你带来很多悲伤。
-
为什么还要存储这 100 条记录?为什么不将 100 条记录也存储为逗号分隔列表,然后您将拥有一条记录!如果 100 比 50000 好,那么 1 肯定更好。
标签: asp.net sql sql-server database csv