Thực ra, tôi vừa hoàn thành việc tạo ra một kịch bản php, mà thực hiện chính xác này, nhưng tôi hy vọng có cái gì đó chuyên nghiệp hơn ngoài kia ...
Demo của chuyển đổi của tôi:
http://simpleddl.orgfree.com
Ví dụ đầu vào:
= 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
Output:
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);
Có một số công cụ có thể làm ngược lại (dưới dạng hình ảnh, tôi không biết ký hiệu viết tắt). Tạo một cơ sở dữ liệu (với các câu lệnh SQL hoặc với GUI) và công cụ tạo một bản vẽ các bảng. Xem [câu hỏi này] (http://stackoverflow.com/questions/8895806/how-to-implement-polymorphic-associations-in-an-existing-database/9449031#9449031). Tôi nghĩ rằng OP đã sử dụng Visio. Hình ảnh trong câu trả lời của tôi đã được làm cho MySQL Workbench của tôi. –
Có, có rất nhiều giải pháp cơ sở dữ liệu của bạn, nhưng rất ít (nếu có?) Hoạt động mà không cần sử dụng chuột của bạn. – biziclop
Hầu hết các công cụ tôi đã sử dụng đều có thể đọc được những câu lệnh SQL cũ đơn giản. Và nhiều công cụ có kỹ thuật đảo ngược truy xuất SQL tạo bảng từ cơ sở dữ liệu hiện có. Và có thể vẽ các sơ đồ đẹp. –