道歉,如果这个问题过于开放,在其他地方会更好。>
我目前正在讨论代表问卷集的XML模式的模式设计。调查问卷相当类似,包含一些具有一些属性的问题:
我们通过网站捕获调查问卷的答案,现在需要通过XML消息将其发送给其他方。我想知道发送代表已填写问卷的XML文件的利弊:
像这样的“重复且灵活”的格式:
<Questionnaire>
<Questions>
<Question>
<QuestionId>1234</QuestionId>
<Name>Interviewee</Name>
<Answer>Joe Bloggs</Answer>
</Question>
<Question>
<QuestionId>1235</QuestionId>
<Name>Date of birth</Name>
<Answer>1980-03-15</Answer>
</Question>
...
</Questions>
</Questionnaire>
更严格的格式:
<Questionnaire>
<Interviewee>Joe Bloggs</Interviewee>
<DateOfBirth>1980-03-15</DateOfBirth>
...
</Questionnaire>
没有足够的问卷调查表,每次制作新的XSD时都会创建一个单独的XSD,这可能不会引起太大的麻烦。
我的想法是,第二个将更容易验证,并且由于问题具有类型,这些将很好地映射到架构数据类型。然而,当我们通过网站捕获回复时,第一个问题的基本表示自然会更容易产生。
是否存在针对这类设计决策的一般最佳实践,或一个明显的原因,为什么一种方法会比另一种方法引起更少的麻烦,或者这实际上仅取决于所表示的特定数据集以及它将如何表示处理?
答案 0 :(得分:3)
我相信你的问题与抽象与具体,或键/值对与结构等相同。我也认为它不是特定于XML,因为它同样会出现在OO上程序员;或数据库设计者;询问最佳做法与询问最佳宗教信仰是一样的......
让我们来看看你的选择:
选项1是一个元模型:它描述了一个问题是什么。选项2是一个模型:它描述了你在问什么。
选项1是每个数据库中的sys模式。选项2是特定数据库中用户定义的模式。
选项1是“技术性的”:是关于IT人员为问卷构建良好的基础设施。选项2是关于调查问卷的“业务”。
一个问题是 1 比 2 (运行时开销)更详细; 2 需要对我们要求的内容进行更多的前期分析(设计时间开销)。 1 可以更好地适应新问题或扩展问题,例如:难度级别或获得答案需要多长时间(可扩展性)。 2 的XSD是自包含的,并且自我描述了如何正确使用实例XML(规范的可用性)。
根据我的经验,实施廉价并廉价管理变革的能力非常重要(拥有成本);不幸的是,服务的提供者和消费者也可能对这些也有不同的看法。找到最佳点,一个切实可行的设计 - 基本上你的问题 - 将需要更多考虑,按照我上面试图描述的方式。
严格地谈到您提到的关于选项1的一些问题:作为示例,强类型可以通过使用简单选择或替换组来缓解。但是,这种东西不会改变我所说的任何内容。
考虑到上述情况,我会诠释你的问题,把事情放在他们所属的地方。
对于这类设计决策see my reference in choosing a “religion”
是否存在任何一般最佳实践,或者为什么一种方法比其他方法it all depends on many more things which you didn’t mention
引起更少的头痛的明显原因,或者这实际上是否依赖于关于要表示的特定数据集以及如何处理yes, to a high degree
?