MySQL Workbench: практическое руководство по проектированию БД MySQL Workbench: практическое руководство по проектированию БД

Практически любой современный сайт работает с базами данных, если не считать различные продающие страницы, так называемые одностраничники (landing page). И если в случае готовых CMS база данных формируется автоматически при установке системы, то при разработке сайта с нуля БД необходимо проектировать, а для этого есть удобный и мощный инструмент — MySQL Workbench.

Говоря о разработке сайта с нуля, я имею в виду не только сайты на голом PHP, но и на тех же фреймворках, например, Yii-фреймворк. Конечно, и в случае готовых CMS часто приходится корректировать БД и добавлять ее новыми таблицами, но тем не менее основа там уже реализована.

Примечание: в этом посте я говорю про MySQL Workbench исключительно в контексте разработки сайтов. Однако никто вам не запрещает использовать программу для проектирования баз данных для прикладного ПО.

Начало работы

Первым делом идем на страницу загрузки и качаем программу. К большому счастью всех разработчиков программа доступна для скачивания не только под Windows, но и для Unix-систем. А пока вы качаете, я расскажу немного о том, что же может Workbench, и как он способен ускорить процесс проектирования БД.

Первое, что стоит отметить — Workbench дает возможность визуально проектировать вашу базу данных, т.е. составлять схему БД. Визуальное представление вашей базы данных всегда дает куда большую информацию, чем сухой список таблиц. В таком варианте вы сразу видите, каким образом связаны между собой таблицы, можете группировать таблицы по каким-либо параметрами и отражать это на схеме. При этом визуальное проектирование удобно не только для того, чтобы кому-то рассказывать о проектируемой БД, но и для личного использования.

Во-вторых, программа имеет встроенный редактор SQL-кода, с помощью которого можно быстро внести любые правки в SQL-запросы. При этом возможно строить запросы любой сложности, получать различные выборки из таблиц, связывать их, создавать новые таблицы и редактировать существующие, работать с ключами, полями, связями. Одним словом — полноценный SQL-редактор.

В-третьих, MySQL Workbench позволяет осуществлять синхронизацию локальной схемы БД с реальной базой на вашем локальном или рабочем сервере. Благодаря этому после проектирования не требуется вручную создавать таблицы в базе на вашем сервере, достаточно сделать несколько простых действий в программе, после чего на рабочем сервере будет создана полноценная база данных со всеми указанными связями и параметрами.

Ну, и важно отметить, что программа дает подробную статистику по работе базы данных.

Это лишь краткий список основных возможностей, подробней о которых я расскажу чуть ниже. А сейчас — пару слов об установке MySQL Workbench.

Как установить MySQL Workbench на Windows

Тут особых хитростей нет. Заходите на оффициальный сайт (ссылка указана выше), качаете установочный файл (MSI Installer) и ставите. При установке просто следуйте инструкциям, там всё просто.

Как установить MySQL Workbench на Linux

Здесь может быть чуть сложнее, если вы начнете читать многочисленные мануалы в интернете. На самом деле, столько способов описывают, и автор каждого явно хочет усложнить эту задачу. Я плюнул на все эти способы и поступил намного проще. Открываете Центр приложений, вводите в поиск «MySQL Workbench» и устанавливаете найденную программу.

Установка MySQL Workbench

На момент написания статьи у меня стоит Linux Ubuntu 14.04 LTS, установка Workbench прошла без ошибок, все компоненты исправно работают. Поэтому если у вас будут какие-то проблемы или вопросы, то указывайте в комментариях, какую ось используете.

Примечание: если будете скачивать через установку архива, скаченного с официального сайта, то обратите внимание на версию MySQL Workbench. Дело в том, что в случае с Ubuntu 14.04 в настоящее время нет версии для ОС для 32-разрядного процессора, только для 64. Поэтому либо ищите там же на сайте прежние версии программы, либо можете попробовать установить версию для Ubuntu 12.04.

На этом установка закончена. Запускаем приложение и приступаем к работе.

Создание новой модели данных

Для создания новой модели выбери в меню File->New Model или нажмите на плюсик внизу в списке всех моделей. Появится окно для построения таблиц, представлений, схем, ролей, скриптов и т.д. Несмотря на всю эту автоматизацию, я всё равно сначала примерно набрасываю список таблиц на бумаге, опираясь на предметную область, на поставленную задачу и специфику проекта. После этого создаю таблицы в Workbench, а затем уже составляю диаграмму.

Для создания новой таблицы на вкладке физической схемы (Physical Schemas) выберите «Add Table» и заполняйте поля — название таблицы, сравнение, движок и комментарий к таблице.

Создание новой таблицы в MySQL Workbench

Далее переходим на вкладку «Columns» и создаем поля таблицы. Я не вдаюсь в подробности этого процесса, тут всё просто — вводите название поля, тип данных, параметры и комментарий к нему. Если не знаете, какой тип лучше использовать для тех или иных полей, то лучше сначала почитайте книги по БД, хотя бы одну, вместо того, чтобы делать абы как. На Хабре на этот счет тоже не мало статей.

Примечание: При выборе типа данных для поля изначально не указывается нигде поля для задания размерности. Но это не значит, что этого сделать нельзя. Советую указывать длину, не стоит отмечать тип поля просто INT, например. Укажите в скобках его размер (к примеру, INT (11)). Т.е. выбираете типа данных и в скобках уже сами дописываете его размер.

Заполнение таблицы в MySQL Workbench

После того, как вы создадите несколько таблиц, можно переходить к созданию связей между ними. Сделать это можно либо через вкладку «Foreign Keys» у необходимой таблицы, либо непосредственно при рисовании диаграммы вашей базы данных.

Если делаете через вкладку «Foreign Keys» (я делаю именно там), то переходите на эту вкладку, вводите название вашего ключа и выбираете таблицу для связи. Дальше в правой части формы, где указана таблица с полями у нужного поля выбираете поля указанной ранее таблицы, т.е. здесь как раз указывается связь между полями. В случае с расхождением типов у этих полей будет выведено соответствующее сообщение, поэтому накосячить тут точно нельзя. Вот простейший пример ключа:

Создание связей в MySQL Workbench

Я не рассматриваю создание представлений, поскольку там нет никаких сложных форм. Кликните «Add View», откроется вкладка нового представления, в которой будет вставлен SQL-редактор. В нем пишите уже код для создания любого нужного вам представления.

Создание диаграммы БД

Для создания диаграммы используем меню Model->Add Diagram (Ctrl+T) либо на вкладке «EER Diagrams» кликаем по кнопке добавления новой диаграммы. У вас откроется клетчатое поле для рисования. Выбираем слева в списке таблиц нужные таблицы и перетаскиваем их мышью на эту клетчатую область. В результате сразу же будет построена полная диаграмма этих таблиц с учетом созданных нами ранее связей.

Создание схемы БД в MySQL Workbench

Вот и всё рисование. Ничего сложного. :)

Как вы могли заметить здесь есть панель инструментов, в которой можно выбрать создание новой таблицы, изображения, блоки комментариев, блоки для объединения таблиц и различные варианты связей между таблицами (один к одному, один ко многим и т.п.). Кстати, если будете здесь создавать новую таблицу визуально, то она сразу же добавится и в саму модель, т.е. дублировать ничего не нужно будет.

Синхронизация с сервером

Это самый вкусный элемент программы, по-моему. Всё, что вы сделали в Workbench можно буквально в пару кликов перенести на сервер без необходимости писать кучу кода самому. Связать модель можно как с рабочим сервером, так и с вашим локальным.

И так, выбираете в меню Database->Synchronize Model… и в появившемся окне вводите параметры вашего сервера. Я показываю на примере локального сервера (какой, кстати, вариант сервера вы при этом используете — не важно, у меня установлен XAMPP).

Синхронизации модели с БД в MySQL Workbench

После этого идете дальше, будет проверено подключение и, если все ок, то сможете перейти к выбору модели для синхронизации. Здесь выбираете вашу модель, а внизу выбираете базу данных на вашем сервере. Снова идете дальше, где опять будет проверка все ваших данных.

Синхронизация модели с БД в MySQL Workbench

После этого вы уже попадете на список таблиц в вашей моделе в программе и в БД на сервере. Важно, что данный способ синхронизации полностью синхронизирует данные, т.е. не только загружает на сервер новые таблицы, но и, наоборот, может загрузить таблицы с сервера в программу. Для этого достаточно выбрать таблицы в базе и нажать кнопку «Update Model», чтобы они загрузились в модель при синхронизации. Также какие-то таблицы можно запретить к загрузке. Для наглядности я взял реальную базу данных, при синхронизации четко видно куда грузятся какие таблицы, а какие запрещены для загрузки.

Синхронизация модели с БД в MySQL Workbench

После этого вам будет показан SQL-код по созданию новых таблиц, представлений и т.д. Можете его сохранить, скопировать или изменить. Ну, и наконец, снова жмете кнопку «Next» , после чего осуществляется непосредственная загрузка данных. Если по какой-либо причине возникнут ошибки, то вы их сразу же увидите. В противном случае все ок, закрываете окно и можете работать с таблицами уже на сервере.

Заключение

Я показал здесь основные моменты в работе с MySQL Workbench. По крайней мере, этого вполне хватает, чтобы проектировать базы данных для проектов различной сложности. В своей работе я использую программу в основном только в тех случаях, когда требуется проектировать с нуля всю базу данных. Если же требуется создать 1-2 небольших таблички, то иногда можно быстрее сделать через phpMyAdmin или аналогичные инструменты. Вопрос выбора лишь в сложности таблиц и самой базы.

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

Не много программ подобного рода я пробовал за свой опыт работы, однако на данный момент, по-моему, это лучшая программа для проектирования БД. Если знаете лучше — пишите в комментариях, будет очень любопытно познакомиться с ними.

13 комментария(ев) к записи “MySQL Workbench: практическое руководство по проектированию БД”

  1. San4es:

    Отличная статья. Как раз MySQL и Workbench изучаю. Один вопрос, можно ли с помощью Workbench наполнить базу данных? по типу как в access?

    • Да, там у каждой таблицы есть вкладка Inserts, в которой можно добавлять строки таблицы. Но как по мне, это удобно для добавления каких-то данных по умолчанию. А, к примеру, все крупные таблицы лучше заполнять либо через веб-интерфейс на разрабатываемом сайте, либо импортировать, если уже есть готовый набор данных.

      • Андрей:

        Что-то никак не «наполняется» база данных данными внесенными в Inserts (в MySQL Workbench). Ну сперва я, как понял, ошибся, думая, что «Forward Engineering» их может Forward’нуть, но теперь тоже делаю «И так, выбираете в меню Database->Synchronize Model…» а данные как не попадали из Inserts в базу, так и не попадают. Есть предположения, отчего это может быть? Так или же как-то по другому их возможно из инсертс в базу отправить? Через окружные костыли не хотелось бы, это ж инструмент, он должен работать по предназначению…

        • Met:

          После ввода данных нажали зеленую галочку (apply changes)?

        • lizzy:

          У меня тоже не переносит данные с помощью Database->Synchronize Model. Forward Engineering переносит только структуру, но не данные. Галочку (apply changes), конечно же, ставила. получилось разобраться?

  2. Marcell:

    Интересное руководство. Советую попользоваться dbForge Studio for MySQL http://www.devart.com/ru/dbforge/mysql/studio/

    Который кстати доступен в бесплатной версии, если запросить его через программу xChange.

  3. Спасибо за материал. Искал нечто похожее на Сикуэл для удобной работы с БД под Linux. Это кажется подойдет, хотя и, как кажется, слишком монструозно выглядит.

  4. bairon:

    интересная программа, но мне кажется не нужная, если только не для винды пригодится

  5. Я полностью согласен с вами по поводу того, что эта лучшая программа для проектирования БД. На своем опыте убедился.

  6. Спасибо хорошая статья из нее можно многое узнать о проектировании базы данных MySQL

  7. ant-coding:

    Информативно, доступно, полезно. Спасибо

Оставить комментарий к записи bairon

(обязательно)

(обязательно)