我在这个问题上与一位同事有某种分歧。 首先是环境(保障不会改变):
- SQL Server 2008 R2
- ASP.NET MVC 3
- C#
现在的情况是: 我正在研究一项应用,使用户能够从用户那里收集信息,并为以后的报告目的储存信息。 收集投入的方法载于网页上的各种控制。 收集数据不是问题;储存数据是问题。
<>Database within A database
我遵循以下概念,即应当将其储存为关键价值乳制品的收集(例如,一个称为<编码>的表格)。 反应系统代码>:
+----------+----------+----+-----+
|ResponseId|FormItemId|Name|Value|
+----------+----------+----+-----+
如果<代码>ResponseId和>>FormItemId
构成主要关键,则ResponseId
涉及Response
的表格:
+----------+------+------+-------------+
|ResponseId|FormId|UserId|SubmittedDate|
+----------+------+------+-------------+
和FormId
relating to a FormItem
表:
+----------+------+----+-----------------+
|FormItemId|FormId|Type|InstantiationData|
+----------+------+----+-----------------+
<代码>FormId与<编码>FormId在Response
的表格中,指Form
的表格,该表不作说明。
<XML Serialization
我回过头来回答说,将表格组成部分和对策的序列化越有意义,就表格而言,其数量就越少,只留下一个表格:
+------+--------+
|FormId|Elements|
+------+--------+
所有即时数据都储存在XML数据内,用于<条码>各表元素。 答复也同样记录在案:
+----------+------+-------------+----------------+
|ResponseId|UserId|SubmittedDate|ResponseElements|
+----------+------+-------------+----------------+
The Short Question After The Long Preface
我认为,第一个想法更清洁,更容易报告。 你认为什么?
As a final note, there are more tables to this, for both sides, as the forms are to be versioned for every time a user edits the form.