【发布时间】:2014-04-14 13:53:13
【问题描述】:
我正在研究使用 C# 从 sql 读取数据的一些可能性,我确信存在更好的方法。
我有一个(相当复杂的)sql select 语句,它返回 3 列。例如。人员 ID、TaskID 和工作时间
我想做的是用 2 列填充另一个表,数据应该类似于:
COL1 | COL2
---------------------
"John" | "Tsk01 (2 Hours), Tsk02 (7 Hours), Tsk03 (4 Hours)"
"Peter" | "Tsk01 (4 Hours), Tsk03 (2 Hours), Tsk04 (3 Hours)"
因此,一个明显的方法是将我的 sql 语句放入数据读取器(按人排序),遍历它,然后每次我有一个新人时将数据写入我的第二个表。但这只是感觉很麻烦。一定有更简单的方法吗?
【问题讨论】:
-
为什么你想要一个包含逗号分隔的值列表的字段?这是一个 SQL 反模式。您开始使用的 (标准化) 结构是最佳实践。
-
可接受的问题...第二个表实际上是作为审计跟踪。它“重要”的只是第一列。第二列将只是附加注释。即使数据被截断也不是问题。
-
甚至你的审计表也应该被规范化。假设
'John'和'Peter'实际上在另一个表中有 id,你只会有一个 3 列整数的表,每列 4 个字节,每行总共 12 个字节(每个人/任务组合)。但是,您的字符串占用的字节数要多得多;', Tsk02 (7 Hours)'远远超过 12 个字节。 -
是的。但是表设计已经完成了一段时间,目前无法真正更改。我将不得不使用我所拥有的。
标签: c# sql datareader