2012-03-09 10 views
11

CREATE TABLEステートメントを使用するのではなく、単純なテキスト形式でデータベース構造を記述したい人もいます。いくつかの例:簡体字/略語SQLデータ定義言語?

あなたは、実際のSQL文に省略表記のこの種を変換するソフトウェアについて知っていますか?

http://simpleddl.orgfree.com

:私のコンバータの

デモ...

+0

反対に行うことができるツールがいくつかあります(画像として、私は省略表現を知らない)。 (SQLステートメントまたはGUIを使用して)データベースを作成すると、ツールはテーブルの描画を行います。 [この質問](http://stackoverflow.com/questions/8895806/how-to-implement-polymorphic-associations-in-an-existing-database/9​​449031#9449031)を参照してください。私はそこのOPがVisioを使っていると思う。私の答えのイメージは私のMySQL Workbenchでした。 –

+0

はい、クリック数が多いので、マウスを使わずに動作するデータベースはほとんどありません。 – biziclop

+0

私が使ったほとんどのツールは、古き良き平野のSQLを読むことができます。また、多くのツールには、既存のデータベースからテーブル作成SQLを取得するリバースエンジニアリング機能があります。素敵なダイアグラムを描くことができます。 –

答えて

7

は実は、私はまさにこれを行うPHPスクリプトを作成終え、私はそこに、より専門的な何かがあると思います例入力:

= ID id P AI 

person 
    ID 
    mother_id -> person 
    father_id -> person 
    !FK mother_id, father_id -> family U:C, D:C 

family 
    P female_id -> person 
    P male_id -> person 

出力:

CREATE TABLE IF NOT EXISTS person (
    id   INT NOT NULL AUTO_INCREMENT, 
    mother_id INT NOT NULL, 
    father_id INT NOT NULL, 
    PRIMARY KEY (id) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; 

CREATE TABLE IF NOT EXISTS family (
    female_id INT NOT NULL, 
    male_id INT NOT NULL, 
    PRIMARY KEY (female_id, male_id) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

ALTER TABLE person ADD FOREIGN KEY (mother_id) REFERENCES person(id); 
ALTER TABLE person ADD FOREIGN KEY (father_id) REFERENCES person(id); 
ALTER TABLE person ADD FOREIGN KEY (mother_id, father_id) REFERENCES family(female_id, male_id) ON DELETE CASCADE ON UPDATE CASCADE; 

ALTER TABLE family ADD FOREIGN KEY (female_id) REFERENCES person(id); 
ALTER TABLE family ADD FOREIGN KEY (male_id) REFERENCES person(id); 
+1

これはかなりクールです。他のDBMS(PostgreSQLなど)もサポートしていますか? –

+0

一方、上記のリンクは期限切れです。興味があればコメントをここにドロップしてください:) – biziclop

+0

biziclop私はあなたのコードと表記法のアイデアを見たいのですが(私は現時点でオラクルのddlに興味があります)、これはどこでも公開リポジトリにありますか? – plockc

2

http://sqlfiddle.comで利用可能なtext-to-ddlツールに言及しました。これは実際に私が構築したツールです(sqlfiddle.comは私のサイトです)。具体的にはStackOverflowの質問にテキストテーブルを投稿して、それらを実際のDDLにすばやく変換することをJavaScriptで簡単に行うようにしています。私はそれがテキストテーブルフォーマットの一般的なバリエーションのかなりの量のためにかなりうまくいくと思うが、私はそれがより多くの多様性を扱うためにいくつかの仕事を使うことができると確信している。私は、それぞれ別々のhandlebars.jsテンプレート(MS SQL、Oracle、PostgreSQL、MySQL、SQLite)用の異なるDDLタイプをサポートしています。

ライブラリ全体がJavaScriptで書かれているので、誰かが私の手助けをしたいと考えている場合は、あなたの貢献が大好きです。 Fork me on githubを開き、javascripts/ddl_builder.jsファイルを探します。私はいくつかのプルの要求を持っているのが大好きです!

+0

こんにちは、あなたの答えとsqlfiddleありがとう! :) – biziclop