こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

XMLデータをRDBに格納する際のテーブル構造

データベース初心者です。
ちょっとしたWebアプリを作成しているのですが、以下のようなXML構造のデータを
RDB(SQLサーバー2008)に登録する際のテーブル構成をどのようにすればよいか困っています。
本やインターネットで調べたのですが分からなかったので、もしわかる方がいましたら教えて下さい。

【xml構造】 ※登録されたWebサービスに送るパラメータ情報の定義
<xml>
 <name></name>
 <url></url>
 <a_params>?
  <param>*
   <value>| <id>| <date>
  </param>
 </a_params>
 <b_params>?
  <param>*
   <value>| <id>| <date>
  </param>
 </b_params>
 <c_params>?
  <param>*
   <value>| <id>| <date>
  </param>
 <c_params>
</xml>

【タグの属性】
 param: name
 value: なし
 id: length, prefix
 date: format

【タグ後ろの記号の意味】
?0回または1回必要
*0回またはn回必要
記号なし1回必要


単純に考えると、a_params | b_params | c_params毎にそれぞれvalue | id | dateの中間テーブルを
用意することになりそうですが、そうなると最低でも合計10個(1+3×3)のテーブルができてしまいます。

以下のように中間テーブル内で、どこのフィールドで使用されているか持たせば、テーブル数も
合計7個(1+3×2)となり、冗長なテーブルも減らすことができるかと思いましたが、
他によい方法はないでしょうか?

例:子要素Valueの場合
[Applicationテーブル]
 id
 name
 url

[ApplicationValueテーブル] ←中間テーブル
 ApplicationID:Applicationテーブルのid
 FieldType:どこのフィールドで使用されているか(a_params or b_params or c_params)
 ValueID:Valueテーブルのid

[Valueテーブル] 
 id:PK
 value


RDBでの実現が難しい場合は、SQLサーバのXML機能での実現方法も教えていただきたいです。
よろしくお願いします。

投稿日時 - 2011-11-08 09:45:54

QNo.7120472

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

SQLSERVERならXML型使えませんか
http://handcraft.blogsite.org/ComponentGeek/ShowArticle/121.aspx

投稿日時 - 2011-11-08 13:06:43

あなたにオススメの質問