有些人喜欢用简单的文本方式描述他们的数据库结构,而不是使用CREATE TABLE
语句。举几个例子:
你知道任何将这种速记符号转换为实际SQL语句的软件吗?
答案 0 :(得分: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 :(得分:2)
我看到你提到了http://sqlfiddle.com上提供的text-to-ddl工具。这实际上是我在JavaScript中构建的工具(sqlfiddle.com是我的网站),专门用于尝试使人们更容易将人们在StackOverflow问题中发布的文本表转换为更快速地将其转换为真正的DDL。我认为它对于相当多的文本表格式的常见变化非常有效,但我确信它可以使用一些工作来处理更多种类。我通过单独的handlebars.js模板支持不同的DDL类型(MS SQL,Oracle,PostgreSQL,MySQL和SQLite)。
整个图书馆都是用JavaScript编写的,所以如果有人想帮助我做得更好,我会很乐意为你做出贡献。 Fork me on github并查找文件javascripts / ddl_builder.js。我很乐意提出一些拉动请求!