简化/速记SQL数据定义语言?

11

有一些工具可以做相反的事情(例如制作图像,我不知道速记符号)。创建一个数据库(使用SQL语句或GUI),该工具可以绘制表格。请参见此问题。我认为那里的OP已经使用了Visio。我回答中的图片是使用MySQL Workbench制作的。 - ypercubeᵀᴹ
1
http://sqlfiddle.com/ 有一个非常简单的文本转DDL功能。 - biziclop
精简的 SELECT 指令 (非常棒):http://htsql.org/ - biziclop
2
这样的工具存在的问题在于它在支持功能方面本质上是有限的。如果它能够支持所有的SQL功能,那么它几乎会和SQL一样冗长。因此,你可能会找到人们的自定义脚本(参见下面的答案),但它将为该人的首选功能集量身定制,并要求你遵循他们的符号/设计约定。 - Alex Weitzer
http://www.andromeda-project.org/databasestructure.html - biziclop
显示剩余3条评论
2个回答

7

实际上,我刚刚完成了一个 PHP 脚本,可以完全实现这一功能,但是我希望能够找到更专业的解决方案......

我的转换器演示:

http://simpleddl.orgfree.com

输入示例:

= 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
那很酷。它也支持其他的数据库管理系统(例如PostgreSQL)吗? - user330315
以上链接已经过期。如果您有兴趣,请在此处留言 :) - biziclop
biziclop,我想看看你的代码和注释想法(目前我对Oracle的ddl很感兴趣),你有在公共存储库中吗? - plockc
@plockc 你可以在这里尝试:http://simpleddl.orgfree.com 在该页面的底部,你可以下载源代码,它是一堆非常不专业的混乱,不值得放在任何仓库中。但至少你可以玩一下 :) - biziclop

3

我看到您提到了可在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。我很乐意收到一些拉取请求!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接