7

これは非常に単純な質問ではないことは承知していますが、XML ファイルからのデータを格納するために SQL データベースをどのように設計しますか? (XML スキーマはなく、さまざまなタグ名、属性、およびネストされた要素)。

これは、技術的というよりも概念的なものです。階層データ モデル (XML) からリレーショナル モデル (SQL) への移行方法。

4

3 に答える 3

2

スキーマがなく、従来のリレーショナル方式である従来のRDBMSを使用したい場合は、基本的に失敗します。

ただし、すべての主要なデータベースシステムに存在するXMLデータ型(Oracle(> 9i)、MS SQL(> 2005)、PostgresDB2 )を選択できます。これにより、XPath式を使用してXMLコンテンツを処理できます。これは非常に優れています。

また、お勧めの読み物:

または、階層モデルをリレーショナルに変換する必要がないようにすることもできます。これは、CassandraMongoDBなどのNoSQLDBの最適なユースケースのようです。

(最初はコメントとして投稿しましたが、答える価値があると思います...)

于 2012-10-30T08:31:20.453 に答える
1

さて、何が問題なのですか?ツリーを関係として表現するのは簡単です。

NODE ( id, tag-name, text )
ATTR ( id, attr-name, attr-value )
NODEATRR ( node-id, attr-id )
NODENODE ( node-id, child-node-id )

関係の間の鍵とつながりは明らかだと思います。確かに、これは見苦しく文字列型ですが、任意のXMLを格納したい場合は、このようになります。

于 2012-10-30T08:35:33.667 に答える
0

SQL には、独創的なツリー エンコーディング スキームがいくつかあります。繰り返しになりますが、巧妙なツリー エンコーディングでさえ、適切に設計されたデータベース スキーマより劣っています。

于 2012-10-31T17:02:30.280 に答える