は実は、私はまさにこれを行う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);
反対に行うことができるツールがいくつかあります(画像として、私は省略表現を知らない)。 (SQLステートメントまたはGUIを使用して)データベースを作成すると、ツールはテーブルの描画を行います。 [この質問](http://stackoverflow.com/questions/8895806/how-to-implement-polymorphic-associations-in-an-existing-database/9449031#9449031)を参照してください。私はそこのOPがVisioを使っていると思う。私の答えのイメージは私のMySQL Workbenchでした。 –
はい、クリック数が多いので、マウスを使わずに動作するデータベースはほとんどありません。 – biziclop
私が使ったほとんどのツールは、古き良き平野のSQLを読むことができます。また、多くのツールには、既存のデータベースからテーブル作成SQLを取得するリバースエンジニアリング機能があります。素敵なダイアグラムを描くことができます。 –