Меня давно подмывало написать заметку о том, как с помощью Dia и dia2code можно сгенерировать SQL-код из схемы базы данных. Или код на C++ из диаграммы классов. А тут на Хабре появилась заметка об онлайн-сервисе DB Designer, решающий первую из этих двух задач. И мне кажется, что он намного удобнее связки Dia + dia2code.

Сервис сделан на питоне и google app engine. Залогиниться в него можно имея аккаунт в гугле. Вкратце о сервисе: вы рисуете схему баз данных, а сервис создает вам код. На данный момент можно получить только для MySQL…

… но в скором времени обещают сделать поддержку и других СУБД. На практике это выглядит так. Рисуем схему базы данных:

Для примера я составил схему БД простого блог-движка. На это ушло минут пять.

Дополнение: Перечитывая заметку, я понял, что таблица post_comment, скорее всего, является лишней. Вряд ли тут нужна связь «многие ко многим».

Затем жмем на кнопку «SQL» и получаем код:

CREATE TABLE `posts`
(
`pid` INT NOT NULL AUTO_INCREMENT ,
`title` CHAR ( 64 ) ,
`message` TEXT ,
`slug` CHAR ( 64 ) ,
`comments_num` INT ,
`created` DATETIME ,
`comments_closed` INT ,
PRIMARY KEY ( `pid` )
) ;

CREATE TABLE `tags`
(
`tid` INT NOT NULL AUTO_INCREMENT ,
`name` CHAR ( 64 ) ,
`slug` CHAR ( 64 ) ,
PRIMARY KEY ( `tid` )
) ;

CREATE TABLE `post_tag`
(
`pid` INT NOT NULL AUTO_INCREMENT ,
`tid` INT NOT NULL AUTO_INCREMENT ,
PRIMARY KEY ( `pid` , `tid` )
) ;

CREATE TABLE `comments`
(
`cid` INT NOT NULL AUTO_INCREMENT ,
`author` CHAR ( 64 ) ,
`email` CHAR ( 64 ) ,
`url` CHAR ( 64 ) ,
`message` TEXT ,
`created` DATETIME ,
PRIMARY KEY ( `cid` )
) ;

CREATE TABLE `post_comment`
(
`pid` INT NOT NULL AUTO_INCREMENT ,
`cid` INT NOT NULL AUTO_INCREMENT ,
PRIMARY KEY ( `pid` , `cid` )
) ;

ALTER TABLE `post_tag` ADD CONSTRAINT `post_tag_fk1`
FOREIGN KEY ( `pid` ) REFERENCES posts ( `pid` ) ;

ALTER TABLE `post_tag` ADD CONSTRAINT `post_tag_fk2`
FOREIGN KEY ( `tid` ) REFERENCES tags ( `tid` ) ;

ALTER TABLE `post_comment` ADD CONSTRAINT `post_comment_fk1`
FOREIGN KEY ( `pid` ) REFERENCES posts ( `pid` ) ;

ALTER TABLE `post_comment` ADD CONSTRAINT `post_comment_fk2`
FOREIGN KEY ( `cid` ) REFERENCES comments ( `cid` ) ;

Не знаю, как вам, а мне приятнее нарисовать пять прямоугольников, чем писать 50 строк кода. А если бы таблиц было штук 12, по десятку полей в каждой?

К сожалению, в настоящее время DB Designer довольно сыроват. Например, в нем не работают некоторые элементы управления (во всяком случае, у меня, во FreeBSD), а в сгенерированном коде после половины запросов ALTER TABLE не хватало точки с запятой.

Еще один косяк DB Designer — после копирования в буфер обмена код теряет форматирование. Но это легко исправить с помощью другого веб-сервиса — Instant SQL Formatter .

Несмотря на свои недостатки, сервис очень удобен и позволяет сэкономит много времени. Вот бы еще найти аналогичный редактор диаграмм классов, позволяющий получить на выходе C++/Java/Perl/Python/PHP код…

Дополнение: Вас также могут заинтересовать статьи Как спроектировать схему базы данных и Построение UML-диаграмм с помощью PlantUML .

admin

Share
Published by
admin

Recent Posts

После включения диагностического запуска не удается войти в Windows — как исправить?

Некоторые пользователи, экспериментируя с конфигурацией системы в окне msconfig могут столкнуться с ситуацией, когда после…

1 неделя ago

WinScript — очистка и настройка Windows 11 и 10

На сайте не раз публиковались обзоры программ, предназначенных для очистки или настройки последних версий Windows.…

1 неделя ago

Предварительный просмотр накопительного обновления не устанавливается — решение

При установке некоторых обновлений Windows 11, имеющих в названии «Предварительный просмотр накопительного обновления», многие пользователи…

1 неделя ago

FixExec — восстановление ассоциаций .exe, .bat и .com файлов

Некоторые пользователи Windows 11, 10 и предыдущих версий системы могут столкнуться с ситуацией, когда исполняемые…

1 неделя ago

Ошибка 0x800705b4 при обновлении Windows 11 и 10 — как исправить?

При установке обновлений Windows 11/10 некоторые пользователи могут столкнуться с ошибкой с кодом 0x800705b4 и…

1 неделя ago

Обслуживание вашей версии Windows 11 окончено — что делать?

Пользователи Windows 11 могут столкнуться с сообщением «Обслуживание вашей версии Windows окончено» (Your version of…

1 неделя ago