Генерируем схему базы данных с DB Designer
14 января 2011
Меня давно подмывало написать заметку о том, как с помощью Dia и dia2code можно сгенерировать SQL-код из схемы базы данных. Или код на C++ из диаграммы классов. А тут на Хабре появилась заметка об онлайн-сервисе DB Designer, решающий первую из этих двух задач. И мне кажется, что он намного удобнее связки Dia + dia2code.
Сервис сделан на питоне и google app engine. Залогиниться в него можно имея аккаунт в гугле. Вкратце о сервисе: вы рисуете схему баз данных, а сервис создает вам код. На данный момент можно получить только для MySQL…
… но в скором времени обещают сделать поддержку и других СУБД. На практике это выглядит так. Рисуем схему базы данных:
Для примера я составил схему БД простого блог-движка. На это ушло минут пять.
Дополнение: Перечитывая заметку, я понял, что таблица post_comment, скорее всего, является лишней. Вряд ли тут нужна связь «многие ко многим».
Затем жмем на кнопку «SQL» и получаем код:
(
`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.
Метки: Разработка, СУБД.
Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.