Для создания небольшой базы данных достаточно составить небольшой SQL-скрипт. Но такие базы данных редко покидают категорию «учебных» и переходят в разряд «реальных». Базы данных, пусть даже в небольших проектах, состоят из десятков таблиц и представлений, с которыми очень сложно работать только с помощью SQL. Удержать в голове десятки сущностей и не запутаться — очень сложно. Одно из решений этой проблемы — MySQL Workbench.
MySql Workbench — это программное обеспечение для создания и проектирования баз данных с помощью схем и других визуальных средств. Сегодня мы покажем, что это такое, как установить Workbench и подключиться к кластеру, как создавать таблицы и модели, как делать импорт и экспорт данных.
Для установки необходимо перейти на официальный сайт и среди продуктов выбрать MySQL Enterprise Edition ->Workbench. Или можно перейти по этой ссылке.
Кликаем на «Download Now» и переходим на страницу с выбором параметров:
Здесь мы выбираем операционную систему и её разрядность. В нашем случае это Windows 10 64-bit. После загрузки и установки приложение готово к работе.
Прежде чем перейти к непосредственному созданию БД, определимся с сущностями и их атрибутами. Давайте придумаем БД для абстрактного хостинга с тремя таблицами: клиенты, серверы, услуги.
В «Клиенты» будут следующие столбцы: номер договора как первичный ключ, ФИО клиента, id услуги, id сервера.
Столбцы таблицы «Серверы» будут отображать информацию о самих серверах: его id, IP-адрес, размер как оперативной, так и постоянной памяти, характеристики процессора и видеокарты.
В услугах мы укажем их стоимость, название и суть.
Разумеется, наша база данных не будет охватывать весь спектр теоретической деятельности хостинга, однако для введения такой БД будет достаточно.
Для создания базы данных в главном меню выбираем пункт «File»->«New Model»:
Теперь мы можем перейти к непосредственному созданию БД.
В mysql создание таблиц реализуется несколькими способами. «Клиенты» мы создадим без использования визуальной модели. Для этого в меню нашей БД нажимаем «Add Table», после чего откроется меню с настройками.
Аналогичным образом создаем таблицу «Серверы». В этой части рассказа мы сосредоточимся на атрибутах столбцов и их выборе.
Для разнообразия, создадим «Услуги» с помощью визуального функционала MySQL Workbench. Для этого над названием нашей БД «TimeWeb» нажимаем на кнопку «Add Diagram». Теперь кликаем по появившейся диаграмме и попадаем на новую для нас вкладку.
В левом меню «Catalog Tree» можно увидеть уже созданные «Клиенты» и «Серверы». Мы можем их перенести на визуальную диаграмму:
Для добавления новой таблицы на диаграмму выбираем в левом меню «Place a New Table» или нажимаем «T». Кликнув два раза по появившемуся окну, мы перейдем к настройкам:
Наша таблица «Услуги» будет содержать столбцы «Id услуги», «Название», «Суть» и «Цена»:
Визуальная диаграмма поможет показать таблицы mysql. Прямо-таки база данных с графическим интерфейсом.
Базу данных, которую мы создаем, принято называть реляционной, от английского relation — «отношение», «зависимость», «связь». Таблицы не существуют в вакууме и связаны между собой практически: клиент арендует определенный сервер или приобретает определенную услугу. Необходимо, чтобы эта связь прослеживалась и в нашей БД.
На практике это реализуется с помощью атрибута столбца foreign key (FK) или внешнего ключа. FK определяет множество возможных значений столбца в строке как множество значений столбца из другой таблицы. Предположим, что у нас есть две таблицы: «Сотрудники» и «Смены». В «Смены» есть столбцы «Время» и «Сотрудник (FK)». Так вот, в столбец «Сотрудник (FK)» мы можем поставить только того сотрудника, который есть в таблице «Сотрудники».
Создать связи MySQL совсем несложно. Для того, чтобы связать две таблицы, необходимо определить тип связи между ними. Наши таблицы будут связаны между собой, но они не будут идентифицировать друг друга. На практике это означает, что FK не является PK. Поэтому мы будем использовать связь «Non-Identifying». Перейдем непосредственно к созданию связей.
DBaaS
Клиенты-Серверы
Связующим столбцом здесь будет выступать «Id сервера». Может ли один и тот же сервер быть у нескольких клиентов в нашей БД? Да, может, но не одновременно. Для того, чтобы создать такую связь мы выбираем «Place a New 1:n Non-Identifying Relationship» в левом меню и кликаем сначала на «Клиенты» (к чему идет связь), а потом на «Серверы» (откуда идет связь). После этого приходим к такому результату:
В MySQL Workbench связи между таблицами отображаются пунктирными и сплошными линиями
Мы получили новый столбец в «Клиенты», но нам хотелось бы привязать связь к уже существующему столбцу. Для этого кликаем правой кнопкой по «Клиенты» и выбираем «Edit Клиенты», после чего переходим на вкладку «Foreign Keys».
Здесь мы можем выбрать в качестве «Foreign key» столбец «id сервера», после чего удалить возникший столбец. Аналогичную процедуру проводим со связью Клиенты-Услуги. По итогу получаем такую картину:
Схема данных отображает связи между таблицами
В левом меню вы могли заметить раздел «Views». Views или представления — это отображение необходимых данных на основе имеющихся таблиц. Например, вам может понадобится информация о клиентах и стоимости используемых ими услуг. В этом случае вам пригодится View. Попробуем создать такое отображение.
Для начала нам необходимо заполнить БД информацией. Для этого переходим в параметры таблицы и переходим на вкладку «Inserts». Заполненные «Услуги» выглядит так:
Чтобы посмотреть таблицу MySQL, достаточно кликнуть по ней дважды
Аналогичным способом заполняем «Серверы» и «Клиенты».
После того, как таблицы заполнены, добавляем на диаграмму View, с помощью кнопки «Place a New View» или клавиши «V»:
Нажимаем дважды на «view1» и в появившемся окне пишем запрос SQL, соответствующий нашему отображению:
CREATE VIEW `ФИО + Услуги` AS
SELECT ФИО, Название, Цена From Клиенты
JOIN Услуги ON Клиенты.id_услуги = Услуги.id_услуги;
Представления mysql
Но для того, чтобы увидеть результат работы запроса, необходимо подключиться к кластеру и импортировать туда нашу БД.
Первое, что для этого необходимо — наличие кластера. Если у вас его нет, то вот вам наводка — на timeweb.cloud можно по выгодным ценам выбрать себе облачную СУБД. У нас уже есть кластер, к нему и будем подключаться. Для того, чтобы создать подключение нужно перейти на главную страницу и нажать плюсик:
В появившемся окне нас будут интересовать следующие настройки:
MySql Workbench: подключение к базе
Нажимаем «OK», и, если всё в порядке, то вы подключитесь к кластеру.
Для работы с БД и выполнения SQL-запросов сначала нужно импортировать её в кластер. Для этого на вкладке с диаграммой жмем на кнопку «File» и в выпавшем меню выбираем «Export»->«Forward Engineering SQL CREATE Script»:
Для того, чтобы не потерять заполненные таблицы не забываем нажать в соответствующих полях галочки. Полученный скрипт позволит нам импортировать базу данных в кластер.
Возвращаемся на вкладку с кластером, выбираем «Data Import/Restore» в меню «Management»:
MySQL Workbench: импорт базы данных
Здесь нам необходимо выбрать вариант «Import from Self-Contained File», выбрать скрипт и нажать «Start Import».
View «ФИО + Услуги»
Для создания дампа необходимо нажать «Data Export» в разделе «Management» и выбрать нужные параметры:
Мы сохраним всю БД: её логическую структуру и хранящиеся данные. Для завершения процесса нажимаем «Start Export».
Разверните облачную базу MySQL в один клик
В рамках этой статьи мы познакомились с основным функционалом программы, создали небольшую БД и импортировали её на сервер. Разумеется, мы не смогли охватить весь перечень возможностей. Но этого перечня знаний достаточно для того, чтобы начать создавать свои БД MySQL с нуля и глубже изучить этот инструмент.