Mysql workbench все про операторы. MySQL Workbench. Создание базы данных. Создание и редактирование модели данных

С появлением в составе MySQL программы MySQL Workbench был значительно упрощён процесс создания баз данных (БД). Ведь то, что раньше приходилось делать вручную с помощью SQL скрипта и командной строки, теперь можно сделать «в визуальном режиме» с помощью дружественного графического интерфейса.

Рассмотрим процесс создания БД с помощью MySQL Workbench более подробно.

На скриншоте ниже представлен общий вид окна программы MySQL Workbench.

Для того чтобы создать БД нужно в левой панели в области со списком БД (обозначена как SCHEMAS) кликнуть правой кнопкой мыши и в контекстном меню выбрать «Create Schema».

После этого появится вкладка, в которой следует указать название новой БД и указать параметры сортировки. БД, для примера, будет названа mynewdatabase. Параметры сортировки можно либо выбрать из выпадающего списка либо оставить те, что предлагаются по умолчанию (в данном примере оставлены параметры по умолчанию).

После этого, для продолжения создания БД, следует нажать кнопку «Apply”. В появившемся диалоговом окне будет показан сгенерирванный MySQL Workbench SQL скрипт создания БД. В случае необходимости, этот скрипт можно отредактировать прямо в этом окне.

В верхней части окна имеется область Online DDL. Она предназначена для установки параметров выполнения скрипта. Эти параметры могут быть полезны при манипуляциях с уже существующей БД. При создании БД рекомендуется оставить значения по умолчанию («Default»).

Цель данного поста - помочь начинающему разработчику быстро освоится и спроектировать простенькую базу с помощью инструмента для визуального проектирования баз данных MySQL Workbench от компании Oracle и получить её ER-модель и SQL-дамп.

Ну что же, меньше слов да больше смысла! Внешний вид окна программы, раздел «Моделирование данных» выглядит так:

Для того, чтобы открыть существующую модель надо нажать на ссылку: Open Existing EER Model , для создания новой модели – выбрать параметр: Create New EER Model , чтобы создать модель «сущность-связь» из существующей базы данных – нажать на параметр: Create EER Model From Existing Database , а для создания EER модели из SQL скрипта нужно выбрать: Create EER Model From SQL Script .
Для создания новой модели, воспользуемся ссылкой Create New EER Model, после нажатия на неё отобразится окно с параметрами:

Для начала необходимо создать таблицы, для этого нажмём на кнопку Add Table , появится следующая форма:

Сначала создадим таблицу users , которая будет хранить данные о пользователях информационной системы, в поле table Name впишем имя таблицы, в разделе формы Columns создадим поля таблицы:
- Первое поле id будет содержать уникальный номер пользователя, зададим ему свойства: Auto Increment, Not Null, Primary key и Unique , в разделе Data type выберем целочисленный тип integer.
- Второе поле fio, где будет хранится Ф.И.О. пользователя, установим полю свойства: Not Null , Primary key , в разделе Data type выберем строковый тип VARCHAR 255 .
- Третье поле login , будет содержать логин пользователя, оно должно быть уникальным, как и поле id , поэтому установим ему свойство Unique и зададим количество символов в 255 .
- Следующие поля: password содержащее пароль, e_mail содержащее адрес электронной почты и поле type содержащее тип пользователя будут без особых свойств, со строковым типом VARCHAR длинной в 255 символов, за исключением последнего поля type которому хватит с 45 символов.
После проделанных манипуляций форма с именем таблицы users будет выглядеть так:

На диаграмме появится таблица users c полями и индексами:

Аналогичным способом создадим таблицу settings с настройками доступа к базе данных ИС, содержащую поля id , host для указания имени хоста (адреса сервера), db – имени базы данных, user и password с именем пользователя и паролем, для установки ИС на удалённый сервер.

Далее по уже известному методу создадим таблицу shops которая будет хранить данные о магазинах в полях: id типа integer – ключевое, ненулевое, уникальное с автоинкрементом, поле name хранящее название магазина, поле address – его физический адрес, поле tel – телефон магазина, site – интернет сайт магазина и поле email с электронным адресом магазина.

Затем создадим таблицу products хранящую данные о продукции магазина в полях: id типа integer – ключевое, ненулевое, уникальное с автоинкрементом, поле name хранящее название магазина, ключевое, ненулевое поле целочисленного типа shop_id хранящее номер магазина, поле type_id с информацией о номере товара из таблицы видов продукции. Поле brand – брэнд изготовителя длинной в 255 символов, поле model – с моделью товара, поле data – с данными и характеристиками товара типа Tinytext , поле img с полным адресом до изображения товара длинной в 255 символов, и поля price с ценой товара и warranty с информацией о сроках гарантии на товар длинной в 45 символов.

Созданные нами таблицы settings, shops и products выглядят следующим образом:

Далее нам понадобится таблица хранящая тип продуктов product_type , она состоит из уникального, ненулевого, ключевого поля id с автоинкрементом целочисленного типа, и уникального поля name длинной в 255 символов, которое содержит название вида продуктов.

Вид таблицы таков:

Последние две таблицы это orders и deliveries , первая содержит информацию о заказах клиентов, а последняя данные о доставке продукции.

Поля таблицы orders : id ключевое, ненулевое, уникальное поле целочисленного типа с автоинкрементом, поле shop_id содержащее номер магазина – ключевое, ненулевое целочисленного типа, поле product_id хранящее номер продукта – ключевое, ненулевое целочисленного типа, поле fio date c датой заказа – типа DATE , поле quantity с количеством заказанных товаров – целочисленного типа, поле tel с номером телефона заказчика – строкового типа длинной в 255 символов и поле confirm содержащее информацию о подтверждении заказа – логического типа.

Поля таблицы deliveries : order_id с номером заказа - ключевое, ненулевое, уникальное поле целочисленного типа с автоинкрементом, поле поле fio с номером пользователя совершившего заказ - ключевое, ненулевое целочисленного типа, поле address хранящее адрес доставки товара указанный клиентом – строкового типа длинной в 255 символов, поле time хранящее желаемое время доставки товара – строкового типа длинной в 255 символов, поле date с датой совершения заказа клиентом – типа DATE и поле логического типа confirm хранящее информацию о доставке товара.

Таблицы orders и deliveries выглядят так:

Связи таблиц

Мы создали базу данных, состоящую из семи таблиц, теперь необходимо связать таблицы, мы уже создали ключевые поля целочисленного типа, они и станут основой для связывания.
Для того чтобы связать две таблицы к примеру products и product_type , необходимо дважды щёлкнуть левой кнопкой мыши на диаграмму с таблицей products и выбрать вкладку Foreign keys (внешние ключи ), далее в поле Foreign key name ввести уникальное имя внешнего ключа, дважды щёлкнуть по вкладке Referenced table и выбрать таблицу product_type , затем в форме расположенной правее выбрать ссылающееся поле type_id и выбрать в всплывающем списке поле id .

Таким образом, оба поля таблицы оказываются связанны, затем нужно задать тип отношений связи между таблицами, откроем окно, кликнув на появившуюся связь между таблицами, и выберем вкладку Foreign Key и в разделе Cardinality выберем тип связи один ко многим, и закроем окно. На диаграмме отобразится связь таблиц:

Аналогичным образом связываем все ключевые поля в таблицах, чтобы они были логически взаимосвязаны, далее нам необходимо убедится, что спроектированная база данных соответствует третьей нормальной форме.

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

В реляционной модели отношение всегда находится в первой нормальной форме по определению понятия отношение. Что же касается различных таблиц, то они могут не быть правильными представлениями отношений и, соответственно, могут не находиться в первой нормальной форме. Переменная отношения находится во второй нормальной форме тогда и только тогда, когда она находится в первой нормальной форме и каждый не ключевой атрибут неприводимо (функционально полно) зависит от её потенциального ключа. База данных будет находиться в третьей нормальной форме, если она приведена ко второй нормальной форме и каждый не ключевой столбец независим друг от друга.

Таким образом наша база находится в третьей нормальной форме, т.к. каждый не ключевой столбец независим друг от друга. Это наглядно видно на диаграмме нашей базы данных:

Большинство таблиц находятся в отношении один-ко-многим, за исключением таблиц deliveries и orders находящихся в отношении одни-к-одному, т.к. доставлен, может быть только одни заказ, т.е. у одного заказа только одна доставка. Остальные связи наглядно указаны выше.

Теперь загрузим нашу базу данных на сервер. Для этого создадим новое подключение к базе данных, щёлкнув по ссылке New connection в стартовом окне программы:

Затем заполним поля в открывшимся окне:

Укажем имя соединения в поле Connection Name , выберем метод соединения в списке Connection Method , зададим имя хоста и порт во вкладке Parameters , укажем имя пользователя и пароль если он есть и нажмём на кнопку ОК. Затем откроем вкладку EER Diagram , в панели выберем пункт Database и нажмём на параметр Forward Engineer :

После того как появится окно, нажимаем на кнопку “Next” , выбираем параметр Export MySQL Table Objects и нажимаем на кнопку “Next” :

После нажатия кнопки появится вкладка с SQL кодом, можно сохранить его нажав кнопку “Save to file” если это необходимо, а затем нажать на кнопку “Next” . Появится окно с параметрами соединения:

Проверяем, верны ли параметры подключения и нажимаем на кнопку “Execute” , если в SQL коде не содержится ошибок, то после исполнения кода мы увидим окно со списком таблиц, иначе выведется сообщение об ошибке. Теперь наша база загружена на сервер.

Благодарю за внимание, скачать саму программу .

UPD :

Некоторых хабравчан интересовала возможность отображения линий связей таблиц в режиме поле-к-полю

по совету одного из пользователей я приведу небольшое пояснение о том как изменить вид связей и таблиц, для этого необходимо выбрать следующий параметр в разделе меню Relationship Notation :

После этого связи таблиц примут вид:

Также есть возможность изменить вид таблиц, для этого нужно поставить галочку в вышеуказанном разделе меню и в нижеследующем Object Notation :

Вот так выглядит таблица на диаграмме приведенная к стандарту IDEF1X:

Благодарю за дельные комментарии!

Откройте меню Пуск и наберите ‘Workbench’. В списке выберите MySQL Workbench.

Откроется окно, называемое домашним экраном.

Домашний экран

В верхней части Вы можете видеть список соединений с СУБД. Эти элементы управления используются для подключения к СУБД и прямого управления.

В нижней части находится список моделей . Модели используются для визуального проектирования баз данных.

Подключения

“Плитка” подключения

При наведении курсора мыши на подключение, у “плитки” отгибается уголок. Если нажать на этот “уголок”, отобразится информация о подключении: версия СУБД, дата последнего использования, адрес сервера СУБД, логин, и т.п.


Информация о подключении

В правом нижнем углу есть кнопка ‘Connect’, которая откроет данное подключение.

Подключение так же можно открыть, нажав на саму “плитку”.

Откройте первое подключение в списке.

Редактор SQL-запросов

После открытия подключения, открывается окно редактора SQL-запросов.


Окно редактора SQL-запросов

В центре мы видим окно редактирования запроса.

Обратно к домашнему экрану можно вернуться, нажав на иконку в левом верхнем углу окна.

Слева находится навигатор, отображающий основные задачи и список объектов БД.

В левом нижнем углу находится окно информации о выбранном объекте.

Справа находится окно помощи.

Внизу – окно истории запросов.

В правом верхнем углу находятся элементы управления, позволяющие скрыть или отобразить боковые панели.

Выполнение запросов


Редактор SQL – Панель SQL-запроса

Выполним запрос к базе world . Во-первых, выберем базу данных world как активную.

Для этого, найдите объект world в навигаторе, и выберете его двойным кликом, либо нажав правой кнопкой мыши и в контекстном меню выбрав Set as Default Schema .

Теперь можно выполнять запросы к базе world .

Замечание

Вы так же можете выбрать активную базу, выполнив запрос

USE schema_name;

Например,

USE world;

Для начала, запросим список таблиц в выбранной базе. Для этого, в окне редактирования SQL-запроса, напишем

SHOW TABLES ;

При введении запроса, окно помощи автоматически отображает подсказки по синтаксису вводимого запроса, если эта возможность включена. Чтобы включить автоматическую подсказку, нажмите на третью слева кнопку панели в окне помощи.

Затем нажмем на кнопку выполнения запроса (желтая молния), или выберем в меню Query → Execute (All or Selection) . Клавиатурное сокращение – ctrl + shift + enter

Другие кнопки панели окна SQL-запроса

SQL Editor - Toolbar

Слева направо, кнопки:

    Open an SQL Script File : Загружает содержимое ранее сохраненного запроса из файла.

    Save SQL Script to File : Сохраняет запрос в файл

    Execute SQL Script : Выполняет выделенную часть запроса, или весь запрос, если ничего не выделено.

    Execute Current SQL script : Выполняет выражение, на котором находится текстовый курсор.

- **Explain (All or Selection)**: Отображает для выбранной части запроса или всего запроса информацию о работе оптимизатора.

    Stop the query being executed : Прерывает выполнение текущего запроса.

    Toggle whether execution of SQL script should continue after failed statements : Переключает поведение при ошибках в выражениях. Если на кнопке отображен красный кружок, то выполнение запроса прерывается при ошибке выполнения одного из выражений.

    Иначе, если отображена зеленая стрелка, выражения с ошибками пропускаются и выполнение запроса продолжается.

    Commit : Подтверждает текущую транзакцию

    Rollback : Отменяет текущую транзакцию

    Toggle Auto-Commit Mode : Если включено, каждое выражение будет автоматически подтверждено.

    Set Limit for Executed Queries : Ограничение количества результатов запроса.

    Beautify SQL : Форматировать текст запроса.

    Find panel : Отобразить панель поиска в тексте запроса.

    Invisible characters : Отображать “невидимые” символы.

    Wrapping : Включить перенос по словам.

Откроется окно результата запроса.

В центре окна результата находится результат запроса – в нашем случае, список названий таблиц. Справа – кнопки выбора стиля отображения:

  • Result Grid – в виде таблицы (по умолчанию)
  • Form Editor – в виде формы. Каждая запись открывается на отдельной странице, в верхней части окна есть стрелки для навигации по записям.
  • Field Types – отображает типы атрибутов результата.
  • Query Stats – отображает различную статистику запроса
  • Execution Path – показывает алгоритм работы оптимизатора

Посмотрим, как устроена таблица Country . Для этого, выполним команду

SELECT * FROM Country;

и выберем стиль отображения результата Field Types .

Замечание

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

Комментарии в SQL начинаются с двойного дефиса, например:

Комментарий -- SHOW TABLES; SELECT * FROM Country;

В данный момент нас интересуют атрибуты (колонки) Name – названия страны и LifeExpectancy – средняя продолжительность жизни граждан.

Выведем список стран со средней продолжительностью жизни граждан более 80 лет. Для этого выполним запрос

Другой запрос, который можно выполнить к таблице Country – количество стран по форме правления.

SELECT GovernmentForm, COUNT (Name) FROM Country GROUP BY GovernmentForm;

Создание базы данных

Для создания базы данных можно выполнить запрос

CREATE DATABASE db_name;

Создайте базу данных с названием myFirstDatabase:

CREATE DATABASE myFirstDatabase;

Чтобы отобразить созданную БД в списке объектов, нажмите на пустое место в списке правой кнопкой мыши и выберете Refresh All .

Выберите myFirstDatabase как активную.

Создание таблицы

Создадим таблицу People , состоящую из колонок id , name , birthday:

CREATE TABLE People ( id BIGINT AUTO_INCREMENT PRIMARY KEY , name TINYTEXT NOT NULL , birthday DATE );

Замечание Существует графический инструмент создания таблиц. Разберем его, когда будем работать с инструментом графического проектирования БД.

Проверим, что таблица создалась:

SHOW TABLES ;

* FROM People;

Добавление и редактирование данных

При выборе всех столбцов таблицы, Workbench позволяет редактировать записи непосредственно через интерфейс результата запроса. Выберите стиль отображения результата Form Editor , и введите значения атрибутов name и birthday . Последнее вводится в формате YYYY-MM-DD , например для 1 сентября 2015 года введите 2015-09-01 .

Поле id оставьте пустым.

В правом нижнем углу окна результата можно увидеть кнопки Apply и Revert . Первая сгенерирует и выполнит SQL-запрос INSERT , а вторая отменит изменения.

Нажмите на Apply , посмотрите сгенерированный запрос, и примените его. Если все сделано правильно, то в таблицу вставлена новая запись. Выполните запрос

SELECT * FROM People;

еще раз, чтобы в этом убедиться.

Замечание Можно так же добавлять и редактировать записи в табличном отображении результата.

Удаление данных

Данные можно удалять из окна результатов, используя кнопку панели Delete selected rows .

Другой способ – выполнение SQL-запроса

Например, удалим из таблицы People запись с каким-либо значением id:

Подставьте вместо 1 какое-то из существующих значений.

Замечание По умолчанию, Workbench выполняет запросы с параметром SQL_SAFE_UPDATES . Этот параметр не позволяет производить запросы UPDATE и DELETE без указания условия WHERE с первичным ключом (в данном случае id).

Импорт и экспорт

Экспорт

В навигаторе выберите Data Export . Выберите базы данных и таблицы, которые хотите экспортировать. При необходимости, отметте другие объекты, которые хотите экспортировать: Dump Stored Procedures and Functions , Dump Events , Dump Triggers .

Выберите Export to Self-Contained File и файл, в который будет сохранен экспорт.

Не отмечайте Include Create Schema: эта опция включит в экспорт выражение CREATE DATABASE .

Нажмите на кнопку Start Export .

Импорт

В навигаторе выберите Data Import/Restore . Выберите Import from Self-Contained File .

Выберите базу данных, в которую будет произведен импорт в выпадающем списке Default Target Schema . Можно так же создать новую БД, нажав на кнопку New…

Нажмите Start Import .

Удаление таблиц

Для удаления таблиц используется запрос

DROP TABLE tbl_name;

Удалим таблицу People

DROP TABLE People;

Удаление БД

Для удаления БД используется запрос

DROP DATABASE tbl_name;

Удалим таблицу myFirstDatabase

DROP DATABASE myFirstDatabase;

Внимание, поскольку WorkBench обновился, то я написал , которая состоит из теории и практики построения БД из WorkBench.

В разделе “Foreign Key Options” настраиваем поведение внешнего ключа при изменении соответствующего поля (ON UPDATE) и удалении (ON DELETE) родительской записи:

  • RESTRICT – выдавать ошибку при изменении / удалении родительской записи
  • CASCADE – обновлять внешний ключ при изменении родительской записи, удалять дочернюю запись при удалении родителя
  • SET NULL – устанавливать значение внешнего ключа NULL при изменении / удалении родителя (неприемлемо для полей, у которых установлен флаг NOT NULL! )
  • NO ACTION – не делать ничего, однако по факту эффект аналогичен RESTRICT

Сохранение из модели в реальную / физическую базу данных

“File → Export→ Forward Engineer MySQL Create Script…”

Отмечаем необходимые галочки, мне нужна была только одна Generate INSERT Statements for Tables. Если нужно сохранить скрипт в файл – пропишите директорию в поле сверху.

В следующем окне можно настроить – какие объекты мы будем экспортировать. Если внимательно присмотреться, то у нас создано всего 2 таблицы.

Выполнение скрипта – создания базы данных и таблиц

Жмем на “домик” в верхнем левом углу программы…

Потом 2 раза кликаем на MyConnection….

Перед нами открывается такая вкладка…

Это наше соединение с сервером, здесь мы и будем выполнять наш скрипт. Обратите внимание, слева базы данных, которые были созданы в программе WorkBench….

Теперь, нужно дать команду этот скрипт исполнить, для этого жмем в верхнем меню, Query Execute (All or Selection)

Итак, если все нормально, то в нижнем окне output, вы увидите все “зеленые галочки”. А когда нажмете Refresh в контекстном меню в списке баз данных, то увидите, вновь созданную базу mydatabase1.

Напоследок, построим ER диаграмму. ER расшифровывается как Entity Relation – удачная модель “Сущность – связь”, которая, в частности разрабатывалась Питером Ченом. Итак, возвращаемся на вкладку модели и жмем на Add Diagramm…

Мы создали связь один ко многим. На одном факультете могут учиться несколько студентов. Обратите внимание, связь возле таблицы Students расщепляется – это означает “ко многим”.

Итак, мы создали модель, из неё через выполнение скрипта – реальную базу с таблицами. А также создали диаграмму ER.

Веб-разработчик растёт вместе с проектами, которые он создаёт и развивает. С ростом проектов увеличивается сложность программной части, неизбежно возрастает количество обрабатываемых ею данных, а так же сложность схемы данных . Общение с другими вебщиками показывает, что огромной популярностью среди нас пользуются базы данных MySQL, а для управления ими - небезызвестный PHPMyAdmin . Переходя от маленьких проектов к большим, от cms к фреймворкам, многие, как и я, остаются верны MySQL. Однако для проектирования сложной базы данных с большим количеством таблиц и связей, возможностей PHPMyAdmin катастрофически не хватает. Поэтому я решил написать обзор MySQL Workbench - замечательной бесплатной десктопной программы для работы с MySQL.

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

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

Должен сказать, что программа действительно великолепная. Она позволяет быстро и с удовольствием накидывать схемы данных проекта , проектировать сущности и связи между ними, безболезненно внедрять изменения в схему и так же быстро и безболезненно синхронизировать её с удалённым сервером. А графический редактор EER-диаграмм , напоминающих забавных таракашек, позволяет увидеть общую картину модели данных и насладиться её лёгкостью и элегантностью:) После первой же пробы этот инструмент становится незаменимым помощником в боевом арсенале веб-программиста.

Скачать MySQL Workbench

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

  • Microsoft Windows (доступны MSI Installer и ZIP архив)
  • Ubuntu Linux
  • Fedora
  • Red Hat Enterprise Linux / Oracle Linux
  • Mac OS X

После выбора платформы вам предлагают зарегистрироваться или авторизоваться в Oracle. Если не хотите, внизу есть ссылка "No thanks, just start my download" - жмите на неё ;)

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

Стартовый экран программы отражает основные направления её функциональности - проектирование моделей баз данных и их администрирование:

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

Создание и редактирование модели данных

Для добавления модели нажимаем плюсик рядом с заголовком "Models" или выбираем "File → New Model" (Ctrl + N):

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

Добавление и редактирование таблицы

Список баз данных проекта и список таблиц в пределах базы данных будет располагаться во вкладке "Physical Schemas". Чтобы создать таблицу, дважды кликаем на "+Add Table":

Откроется удобный интерфейс для редактирования списка полей и их свойств. Здесь мы можем задать название поля, тип данных, а так же установить для полей различные атрибуты: назначить поле первичным ключом (PK) , пометить его Not Null (NN) , бинарным (BIN) , уникальным (UQ) и другие, установить для поля авто-инкремирование (AI) и значение по умолчанию (Default) .

Управление индексами

Добавлять, удалять и редактировать индексы таблиц можно во вкладке "Indexes" интерфейса управления таблицей:

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

Связи между таблицами

Установка внешних ключей и связывание таблиц возможно только для таблиц InnoDB (эта система хранения данных выбирается по умолчанию). Для управления связями в каждой таблице находится вкладка "Foreign Keys":

Для добавления связи открываем вкладку "Foreign Keys" дочерней таблицы , вводим имя внешнего ключа и выбираем таблицу-родителя . Далее в средней части вкладки в графе Column выбираем поле-ключ из дочерней таблицы, а в графе Referenced Column - соответствующее поле из родительской таблицы (тип полей должен совпадать). При создании внешних ключей в дочерней таблице автоматически создаются соответствующие индексы .

В разделе "Foreign Key Options" настраиваем поведение внешнего ключа при изменении соответствующего поля (ON UPDATE) и удалении (ON DELETE) родительской записи:

  • RESTRICT - выдавать ошибку при изменении / удалении родительской записи
  • CASCADE - обновлять внешний ключ при изменении родительской записи, удалять дочернюю запись при удалении родителя
  • SET NULL - устанавливать значение внешнего ключа NULL при изменении / удалении родителя (неприемлемо для полей, у которых установлен флаг NOT NULL! )
  • NO ACTION - не делать ничего, однако по факту эффект аналогичен RESTRICT

В приведённом примере я добавил к дочерней таблице UserProfile внешний ключ для связи с родительской таблицей User . При редактировании поля userId и удалении позиций из таблицы User аналогичные изменения будут автоматически происходить и со связанными записями из таблицы UserProfile .

При создании проекта в базу данных часто нужно добавлять стартовые данные. Это могут быть корневые категории, пользователи-администраторы и т.д. В управлении таблицами MySQL Workbench для этого существует вкладка "Inserts":

Как видно из примера, в случае, если перед записью в базу данных к данным нужно применить какую-то функцию MySQL, это делается с помощью синтаксиса \func functionName("data") , например, \func md5("password") .

Создание EER диаграммы (диаграммы "сущность-связь")

Для представления схемы данных, сущностей и их связей в графическом виде в MySQL Workbench существует редактор EER-диаграмм. Для создания диаграммы в верхней части экрана управления базой данных дважды кликаем на иконку "+Add Diagram":

В его интерфейсе можно создавать и редактировать таблицы, добавлять между ними связи различных типов. Чтобы добавить уже существующую в схеме таблицу на диаграмму, просто перетащите её из панели "Catalog Tree" .

Для экспорта схемы данных в графический файл выберите "File → Export" , а затем один из вариантов (PNG, SVG, PDF, PostScript File) .

Импорт существующей схемы данных (из SQL дампа)

Если у нас уже есть схема данных, её можно без труда импортировать в MySQL Workbench для дальнейшей работы. Для импорта модели из SQL файла выбираем "File → Import → Reverse Engineer MySQL Create Script..." , после чего выбираем нужный SQL файл и жмём "Execute >"

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

Демо-проект из статьи доступен для скачивания по этой ссылке . Желаю успехов и красивых таракашек схем!