0

私は CRUD Web サービスを作成しており、オブジェクト (システムのデータベース レコードでもあります) を持っています。たとえば、数十の属性を持つ顧客としましょう。いくつかの属性は、年月の間に変化する可能性があります。まれに名前を変更できますが、これは問題ではないと思います。これは内部実装であり、属性名をインターフェイスに含める必要がないためです。ただし、新しい属性があり、それらを正しく処理する方法がわかりません。

私が計画していたことは、スキーマでは次のようになります。

<xs:complexType name="tKeyValuePair">
 <xs:sequence>
  <xs:element name="fieldname" type="xs:string" />
  <xs:element name="value" type="xs:string" />
 </xs:sequence>
</xs:complexType>

<xs:element name="keyvaluepair" type="tKeyValuePair"  />

<xs:complexType name="tKeyValuePairs">
 <xs:sequence>
   <xs:element ref="keyvaluepair" minOccurs="0" maxOccurs="unbounded" />
 </xs:sequence>
</xs:complexType>

<xs:element name="fieldvalues" type="tKeyValuePairs" /> 

<xs:complexType name="tCustomerBase">
 <xs:sequence>
   <xs:element name="customername" type="xs:string" />
   <!-- here are other fields that can't change but can be minOccurs="0"-->
  <xs:element ref="fieldvalues"  />
</xs:sequence>

次に、更新用に tCustomerUpdate に customerid を追加して正しい顧客を見つけるためのキーとして機能し、tCustomerCreate に createuser を追加して挿入用に tCustomerCreate に追加して、他のシステムで作成したユーザーを保存するなど、tCustomerBase を拡張する各操作の型を用意します。

現在、フィールド値は文字列であり、どのフィールドがどのタイプであるべきかがわかっているので、WS での db 操作の前にそれらを変換できます。

しかし、これは理にかなっていますか?使うべきか

xsd:any 

どういうわけか残りのフィールドは?

使用について

xsd:anyType

キー値ペアの値の型として文字列の代わりにそれを使用できますか? これを正しく行う方法を本当に助けていただければ幸いです。

私の質問に加えて、このようなスキーマ設計についてのコメントをお待ちしております。だから、私がここに書いたモックアップ スキーマの部分に気軽にコメントしてください!

よろしくお願いいたします -Matti

4

0 に答える 0