Jas*_*per 1 c# sql sql-server sql-server-2008
对于我正在设置的项目,我需要一个非常动态的数据结构.我要存储我没有定义的记录.一条记录可以包含5列,另一条记录可能包含10列.
为了支持这一点,我想使用包含以下列的表:
ResultId RecordId RecordTypeId键值
这支持所有可能的方案,但我做了一些问题.
这将使用SQL2008R2 Express后端在.NET 4,C#中编码.我正在寻找一些最佳实践.
更新!为了澄清一点:我需要存储来自不同的,未知的查询的数据的结果集.我不知道会有多少查询定义或它们会是什么样子.此数据库中的数据仅用于处理.用户甚至不知道这些表存在,没有输入,也不会有任何报告或任何数据以任何方式击中屏幕.结果集用于与其他结果集进行比较,所有这些都通过代码进行.我需要的是一种高度动态的方式来存储这些记录,这些记录在涉及大量记录时保持不变.
我想到的另一个选择是:
ResultId RecordId field1(sql_variant)field2(sql_variant)field3(sql_variant)field4(sql_variant)...
这是一个更好的主意吗?
Adr*_*iro 15
我知道这不回答这个问题,但我不能不发布(虽然我很可能会被投票).它说明了这一点.直接来自每日WTF:
这是我的第二次面试,它开启了非常对话.
"我们正在考虑在数据库中存储表名和列,"采访中说,"这是一个浮动的想法."
我回答说,"而不是创建表并根据数据的结构存储数据?"
"是啊!" 他的眼睛亮了起来,"那么我们就不必定义结构或任何其他混乱!"
我想知道这是某种考验."你会怎么做报道?难道不是很尴尬吗?"
"我们可以从前端做到这一点."
"也许吧,"我说,"但它不需要很多代码吗?而且速度非常慢."
"如果我们使用哈希表,那就不行了!"
"好吧......数据完整性,外键,那种东西怎么样?"
他变得越来越防守,"这一切都来自前端."
"我想,但这都需要大量的代码和各种复杂的SQL查询.如果你改变数据库并不是那么糟糕 - "
"不,"他打断道,"我们会使用数据访问层将其抽象为规范化的数据结构."
"你的意思是......像桌子一样?"
两天后,我的招聘人员告诉我,他们拒绝了我作为候选人,因为我不够技术.虽然我确实想知道他们是否实现了他们的元数据库实现,但我很高兴我永远不会知道.
http://thedailywtf.com/Articles/Three-for-Three,-Recursion-Threads,-and-Wrong-Answer.aspx
| 归档时间: |
|
| 查看次数: |
6019 次 |
| 最近记录: |