有些人喜欢用简单的文本方式来描述他们的数据库结构,而不是使用CREATE TABLE语句。以下是一些例子:
你知道是否有任何软件可以将这种简短的标记转换为实际的SQL语句吗?
你知道是否有任何软件可以将这种简短的标记转换为实际的SQL语句吗?
实际上,我刚刚完成了一个 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 );
我看到您提到了可在http://sqlfiddle.com使用的文本转DDL工具。实际上,这是我(sqlfiddle.com是我的网站)用JavaScript构建的一个工具,旨在更轻松地将人们在StackOverflow问题中发布的文本表快速转换为真正的DDL。我认为它对于常见的文本表格格式变化来说效果相当不错,但我肯定需要努力处理更多种类的表格。我通过每个DDL类型的单独handlebars.js模板来支持不同的DDL类型(MS SQL、Oracle、PostgreSQL、MySQL和SQLite)。
整个库都是以JavaScript编写的,因此如果有人想帮助我使其更好,我非常欢迎您的贡献。请在github上fork me并查找文件javascripts/ddl_builder.js。我很乐意收到一些拉取请求!
SELECT
指令 (非常棒):http://htsql.org/ - biziclop