День добрый, дорогие читатели.
Сегодня я решил отступить от обычного своего перемалывания костей обществу, и написать о чем-то, относящемся непосредственно к моей компетенции :). Речь пойдёт о замечательном инструменте MySQL Workbench — инструменте разработки, проектирования и обслуживания баз данных MySQL. Это настоящая находка для программиста PHP, да и не только PHP, которому приходится зачастую, помимо выполнения прямых обязанностей ещё и выступать в роли архитектора баз данных. Этот продукт позволяет создавать новую БД, вносить изменения в уже существующие, устанавливать связи, выполнять запросы — в реальном времени и наглядном виде. Если кто-то пользовался DbDesigner от fabforce — то это почти то же самое, только намного, намного лучше. Достаточно сказать, что связи между таблицами — теперь показываются на EER диаграмме, какие именно поля используются, а заодно, по вашему желанию, создаёт индексы там, где требуется для нормальной и быстрой работы связей. Также есть возможность Reverse Engineer‘инга таблиц из уже рабочей базы. Разработчиком этого продукта является Sun Microsystems, а версия MySQL Workbench Community Edition — полностью бесплатна и доступна для скачивания по этой ссылке:
Итак, главное окно MySQL Workbench при открытии выглядит примерно так (В версии 5.22):

Как видите, там у меня уже есть парочка БД, и сохранённое соединение в левом столбце. Соединение это необходимо, чтобы выполнять запросы на сервер БД в реальном времени, ну и синхронизировать модель с «боевой» базой.
Оболочка поддерживает множество типов таблиц БД, по умолчанию там установлена InnoDB, но мне больше нравится MyISAM, потому в пункте Edit -> Preferences я меняю тип по-умолчанию (иначе все экспортируемые запросы будут в InnoDb с кучей лишних параметров, типа CONSTRAINT и т. д.). Впрочем, никто не мешает вам работать с InnoDb, если вам требуется повышенная устойчивость транзакций, либо какие-то другие особенности этого движка.

Затем, стоит рассмотреть такую возможность как MySQL Reverse Engineer. Он позволяет открыть любую БД на сервере, и без труда восстановить структуру таблиц, которая в ней существует. Скажем, в рабочем проекте у меня количество таблиц в БД приближается уже к 70. Workbench спокойно их восстанавливает и представляет на диаграмме. Правда, поскольку они в MyISAM — связи приходится проставлять вручную :)
Кстати говоря, давайте сейчас попробуем провести «реверсивный инженеринг» для стандартной базы движка WordPress. У большинства стоит Денвер для отладки и тестирования приложений (что, в принципе, моветон, ИМХО, но для относительно несложных скриптов, например, не использующих возможности mysqldump и иных подобных утилит, вполне достаточно). Для входа на MySQL сервер там используется пользователь root без пароля. Я и сам его часто использую, задействуя собственную сборку из полноценного apache + php + mysql в случаях относительно сложных скриптов.
Итак, вначале требуется тыкнуть тычку «File -> New model», дабы создать проект, куда мы будем восстанавливать таблицы из базы:
Затем тыкаем «Database -> Reverse Engineer» и пред ваши очи предстанет окошко примерно такого вида:

Для денвера настройки по умолчанию подходят, потому кликаем Next, пока не попадём в такое вот окошко (некоторые таблицы я затёр, от греха подальше, у вас таких белых строчек с пустыми квадратиками не будет, само собой):

Здесь нам предлагается выбрать базу, которую мы будет выдирать, выбираем нужную, тыкаем дальше, и ждём, пока шайтан-машина сделает все операции. Затем, жмём дальше — ну, сами разберётесь, в результате работы данного мастера мы получим окошко, в котором, будто карты в слегка рассыпанной колоде, будут помещены таблицы. На скриншоте ниже я таки уже разбросал их по диаграмме, и даже проставил несколько связей, для демонстрации:

Как видите, ничего сложного здесь нет. Визуальный редактор SQL таблиц позволяет добавлять/редактировать/удалять поля, индексы, триггеры, и прочее, что только душе угодно. Основное преимущество данной MySQL Workbench — наглядность базы, потому как держать базы всех своих проектов в голове — можно сойти с ума. Я стараюсь даже названия полей в таблицах не запоминать, дабы не засорять память :) В этом я некоторым образом поддерживаю древних эпикурейцев, которые считали, что не следует создавать себе лишние проблемы, если можно их избежать. Иначе говоря, имея возможность избежать страданий, вызванных профессиональными заболеваниями программиста, типа склероза, и рассеянности — надо эту возможность использовать.
Ещё очень и очень приятная возможность — это выполнение запросов к БД прямо из оболочки. Здесь сия возможность намного, намного удобнее реализована, нежели выполнение оных в отдельном окошечке phpMyAdmin’а. Даже подсветка SQL синтаксиса есть. Выглядит это примерно так:

Примерно в таком же окошке идёт прямое редактирование данных, находящихся в нужной таблице. Для отладки каких-нибудь сложных SQL запросов это идеальная среда. Также она поддерживает плагины.
В целом, я описал здесь те возможности MySQL Workbench, которые использую сам чаще всего. Я уверен, что их намного и намного больше. Скажем, я здесь не затронул возможности визуального редактирования EER моделей, хотя они наверняка будут использоваться чаще всего. В целом, учитывая ориентированность материала на коллег, ну или хотя бы достаточно подкованных пользователей, я практически уверен, что они сами до всего докопаются. Логикус очень любит исследовать трудные вещи :)
Таким образом, можно сделать вывод, что MySQL Workbench — отличный инструмент, бесплатный и довольно удобный.
Gents,
ровно год назад я поиграл с эти проиложением (версия 5.2.33 под MAC OS X 10.6)
Сейчас возникла потребность порисовать диаграммы и я вернулся к этому продукту, просмотрев свои старые комментарии.
В целом, впечатление осталось тогда хорошим.
Наиболее серьезным (для меня) недостатком было то, что связи прорисовываются не между конкретными полями (PK — FK), а просто между таблицами. На мой взгляд это снижает наглядность.
Возможно, я просто «не умею готовить кошек»? :)
Не, там есть и между полями конкретными. Правда я как-то всё меньше им пользуюсь — мало стало mysql в деятельности, больше оракл… И то эпизодически весьма. Так что сказать, что там ныне поменялось наверное и не смогу))
Взгляните на более лучший инструмент — Valentina Studio 5.x, который вышел буквально пару месяцев назад. Я юзаю уже месяц – до сих пор нахожу новые фишки.
http://www.valentina-db.com/valentina-studio-overview
Ну, я на самом деле уже давно использую Navicat, штука хорошая. Учитывая, что я свожу к минимуму количество MySQL в своей жизни :)