データ アクセス クラス、ストアド プロシージャなどを生成するための XSD のセットがあります。
私が持っていないのは、これらからデータベース テーブルを生成する方法です。DDL ステートメントを生成するツールはありますか?
データセット テーブルではなく XSDがあるため、これはCreate DB table from dataset tableと同じではありません。
データ アクセス クラス、ストアド プロシージャなどを生成するための XSD のセットがあります。
私が持っていないのは、これらからデータベース テーブルを生成する方法です。DDL ステートメントを生成するツールはありますか?
データセット テーブルではなく XSDがあるため、これはCreate DB table from dataset tableと同じではありません。
XSD2DBと呼ばれるコマンドラインツールがあります。これは、sourceforgeで入手可能なxsdファイルからデータベースを生成します。
商用製品: Altova のXML Spy。
これに対する一般的な解決策はないことに注意してください。XSD は、リレーショナル データベースにマップされないものを簡単に記述できます。
これを「自動化」することはできますが、XSD はリレーショナル データベースを念頭に置いて設計する必要があります。そうしないと、うまく機能しません。
XSD にうまくマッピングできない機能がある場合は、(1) ある種のマッピングを設計し、(2) XSD を DDL に変換する独自のアプリケーションを作成する必要があります。
そこに行って、それをしました。雇用のための仕事 -- 利用できるオープン ソースはありません。
そのために XSLT を使用します。XSD を作成し、SQL コマンドを出力する手書きの XSLT を介してデータ モデルを渡します。XSLT を作成することは、独自のプログラムやスクリプトを作成するよりもはるかに高速で再利用可能です。
少なくともそれが私が職場で行っている方法であり、そのおかげで私はSOにたむろする時間ができました:)
XSD ファイルを使用して SQL データベース スキーマを作成する最良の方法は、Altova XMLSpy と呼ばれるプログラムです。これは非常に簡単です:
それが役に立てば幸い。
XML スキーマは階層データ モデルを記述しており、リレーショナル データ モデルには適切にマップされない場合があります。XSD をデータベース テーブルにマッピングすることは、オブジェクトをデータベース テーブルにマッピングすることと非常によく似ています。実際、両方を行う Castor のようなフレームワークを使用できます。XML スキーマを取得して、クラス、データベース テーブル、およびデータ アクセス コードを生成できます。現在、同じことを行う多くのツールがあると思いますが、学習曲線があり、デフォルトのマッピングはほとんどの場合、必要なものではないため、使用するツールをカスタマイズするのに時間を費やす必要があります.
XSLT は、必要なコードを正確に生成する最速の方法かもしれません。それが小さなスキーマのハードコーディングである場合、一連の新しいテクノロジーを評価して学習するよりも高速である可能性があります。
Visual Studio 2k8 の XSD ツールを見てみましょう... xsd からリレーショナル データセットを作成しました。
Axis wsdl2java (.xsd ファイルを取り込める) を使用して Java モデルを作成します。
Java Model を取り込む Java 用のデータベース生成ツールを使用します。確かにHibernateのようなものはこれを行うことができますか? 仕事の時間を節約するために、独自のツールを作成しました (数日かかり、Java でも CRUD コードを生成します)。
または、すべてが正しく、適切であることを確認できるように、手動で行うこともできます。データベース ツールは十分に優れているため、モデルのテーブルの作成をそれほど問題なく行うことができます。
hyperjaxb (バージョン 2 および 3) は、実際に hibernate マッピング ファイルと関連するエンティティ オブジェクトを生成し、指定された XSD とサンプル XML ファイルのラウンド トリップ テストも実行します。ログ出力をキャプチャして、DDL ステートメントを自分で確認できます。少し微調整する必要がありましたが、これで基本的な設計図ができました。