Mysql workbench как создать базу данных
Mysql workbench как создать базу данных
Основы работы с MySQL Workbench: быстрый старт, управление схемой данных
В первой части обзора я расскажу о самых основах работы с программой, так что, можете использовать эту статью как руководство начинающего пользователя. Вторая часть будет посвящена использованию Workbench в бою при работе с удалённым сервером. В ней я дам базовые инструкции и рекомендации по настройке подключения сервера и синхронизации с ним.
MySQL Workbench — инструмент для визуального проектирования баз данных, интегрирующий проектирование, моделирование, создание и эксплуатацию БД в единое бесшовное окружение для системы баз данных MySQL.
Должен сказать, что программа действительно великолепная. Она позволяет быстро и с удовольствием накидывать схемы данных проекта, проектировать сущности и связи между ними, безболезненно внедрять изменения в схему и так же быстро и безболезненно синхронизировать её с удалённым сервером. А графический редактор EER-диаграмм, напоминающих забавных таракашек, позволяет увидеть общую картину модели данных и насладиться её лёгкостью и элегантностью 🙂 После первой же пробы этот инструмент становится незаменимым помощником в боевом арсенале веб-программиста.
Скачать 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 Key Options» настраиваем поведение внешнего ключа при изменении соответствующего поля (ON UPDATE) и удалении (ON DELETE) родительской записи:
В приведённом примере я добавил к дочерней таблице UserProfile внешний ключ для связи с родительской таблицей User. При редактировании поля userId и удалении позиций из таблицы User аналогичные изменения будут автоматически происходить и со связанными записями из таблицы UserProfile.
Наполнение таблицы базовыми данными
При создании проекта в базу данных часто нужно добавлять стартовые данные. Это могут быть корневые категории, пользователи-администраторы и т.д. В управлении таблицами MySQL Workbench для этого существует вкладка «Inserts»:
Как видно из примера, в случае, если перед записью в базу данных к данным нужно применить какую-то функцию MySQL, это делается с помощью синтаксиса \func functionName(‘data’), например, \func md5(‘password’).
После ввода данных необходимо сохранить их в локальную базу данных нажатием на кнопку «Apply Changes».
Создание 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, о которых я расскажу в продолжении данного обзора.
Демо-проект из статьи доступен для скачивания по этой ссылке. Желаю успехов и красивых таракашек схем!
От модели к физической БД в MySQL WorkBench
Внимание, поскольку WorkBench обновился, то я написал новую статью, которая состоит из теории и практики построения БД из WorkBench.
Итак, в прошлом посте, мы создали физическую базу данных и первую таблицу в базе данных, при помощи программы MySQL Workbench (в дословном переводе “Рабочая скамья” )))).
В этом посте мы узнаем, что такое модели в программе WorkBench и как с их помощью создавать взаимосвязанные таблицы (с внешними ключами), а заодно – усовершенствуем нашу базу данных для последующих экспериментов. Предыдущим методом мы могли из Workbench создавать только базу данных и какие-то отдельные таблицы.
Итак, в программе MySQL WorkBench жмем File New Model (Ctrl + N) и перед нами открывается такая картина…
Итак, все, что мы создадим сейчас будет называться моделью, программа поможет нам сформировать скрипт, который и создаст реальную базу данных.
1 Создание базы данных (схемы) в модели
Итак, начнем, с редакции имени базы данных. Терминологическое отступление. Вообще база данных ещё называется “Schema”, это синонимы, насколько я помню из книги Д. Осипова, “Базы данных и Delphi”, это произошло не сразу, а после очередного собрания “стандартизаторов” баз данных. Чтобы отредактировать название “Схемы”, нужно проделать следующее…
Перед нами открывается такое окно…
Я назвал базу данных, схему – MyDataBase1, кодировку не менял, в комментарии указал – “Первая база данных, учебная”;
После этого – жмём на крестик, на вкладке возле названия “MyDataBase1” и возвращаемся к предыдущему окну.
2 Создание таблиц в базе данных (схеме)
Итак, для того, чтобы создать таблицы – нам нужно определиться какую ситуацию будет отражать база данных. Я предлагаю сделать всё на примере студентов – все учились, всем будет понятно.
Каждый студент учится на каком-то одном факультете, поэтому, для начала предлагаю создать таблицу “Students” и таблицу “Departments”…
2 раза кликаем на AddTable и видим такую картину… Заполняем поле Table Name…
Заполняем имя таблицы. Обратите внимание на вкладки внизу, сейчас мы находимся на “Coloumns”. Для таблицы студентов разработаем несколько полей…
-Primary_key (уникальный ключ записей данной таблицы)
-Department_id (Внешний ключ, каждый студент учится на каком-то факультете, соответственно будем отмечать это в данном поле);
Итак, “PK” – поставил только у главного ключа, это поле является частью формирования уникального ключа таблицы (насколько я понял, в формировании такого ключа может участвовать несколько полей, но это в дальнейших исследованиях).
NN – Not Nulled – отсутствие нулевых полей, так как у всех студентов есть Имя, Фамилия, Возраст, Пол…
AI – автоинкрементное поле – с добавлением новой записи значение в этом поле будет увеличиваться как минимум на единицу.
Аналогично создадим и настроим таблицу Departments. В ней я создал 2 поля Primary_key и Department_name, в терминологии баз данных, получилось так..
Здесь сделаю небольшое пояснение, Deparment_id в таблице students и Primary_key, в таблице departments это практически одно и тоже, разница лишь в том, что значения внешнего ключа Deparment_id разбросаны по таблице, а Primary_key автоинкрементен в своей таблице.
3 Стартовое заполнение созданных таблиц
Для того, чтобы нам с Вами делать какие-то дальнейшие эксперименты с IDE Delphi, языком SQL и др. вещами – нужно сделать стартовое заполнение, то есть, внести хоть какие-то записи. Для этого, на каждой из таблиц переходим во вкладку Inserts. Она внизу….
Для таблицы Departments – я сделал 5 факультетов – Physics, Mathematics, History, Philosophy, Art.
Для таблицы Students 10 произвольных записей. Если будете повторять пример – можете написать, что угодно, главное, соблюдать тип данных и в автоинкрементных полях писать по порядку.
После ввода записей, не забывайте нажать “Apply Updates”
Создание связи между таблицами
Для создания связи между таблицами, сначала разберемся в типе связи. В нашей ситуации на одном факультете может учиться несколько студентов, значит связь – один ко многим. Открываем вкладку Foreign Keys, дописываем “ручками” имя ключа, я написал “MyForeignKey1”, в Referenced table выбрал Departments, а в правой части таблицы – выбрал в колонке Coloumn Department_id, поскольку это было имя внешнего ключа для таблицы Students и соответствующее поле в другой таблице Primary Key
Можно также ещё заполнить Foreign Key Options. По описанию из блога Mithandrir
В разделе “Foreign Key Options” настраиваем поведение внешнего ключа при изменении соответствующего поля (ON UPDATE) и удалении (ON DELETE) родительской записи:
Сохранение из модели в реальную / физическую базу данных
“File → Export→ Forward Engineer MySQL Create Script…”
Отмечаем необходимые галочки, мне нужна была только одна Generate INSERT Statements for Tables. Если нужно сохранить скрипт в файл – пропишите директорию в поле сверху.
В следующем окне можно настроить – какие объекты мы будем экспортировать. Если внимательно присмотреться, то у нас создано всего 2 таблицы.
Жмем далее… и получаем такой вот скрипт…
Копируем в буфер, но что дальше? Нужно этот скрипт где-то выполнить…
Выполнение скрипта – создания базы данных и таблиц
Жмем на “домик” в верхнем левом углу программы…
Потом 2 раза кликаем на MyConnection….
Перед нами открывается такая вкладка…
Это наше соединение с сервером, здесь мы и будем выполнять наш скрипт. Обратите внимание, слева базы данных, которые были созданы в программе WorkBench….
Далее, File New Query Tab… Вставляем скрипт в полученный Tab…
Теперь, нужно дать команду этот скрипт исполнить, для этого жмем в верхнем меню, Query Execute (All or Selection)
Итак, если все нормально, то в нижнем окне output, вы увидите все “зеленые галочки”. А когда нажмете Refresh в контекстном меню в списке баз данных, то увидите, вновь созданную базу mydatabase1.
Напоследок, построим ER диаграмму. ER расшифровывается как Entity Relation – удачная модель “Сущность – связь”, которая, в частности разрабатывалась Питером Ченом. Итак, возвращаемся на вкладку модели и жмем на Add Diagramm…
Далее, переносим таблицы в область диаграммы…
Мы создали связь один ко многим. На одном факультете могут учиться несколько студентов. Обратите внимание, связь возле таблицы Students расщепляется – это означает “ко многим”.
Итак, мы создали модель, из неё через выполнение скрипта – реальную базу с таблицами. А также создали диаграмму ER.
Mysql workbench как создать базу данных
Как создать структуру базы данных MySQL? Как создавать таблицы MySQL? Программа для создания базы данных MySQL Workbench!
Как создать структуру базы данных MySQL, используя MySQL Workbench
Хотите, создать свою собственную базу данных, но вы устали от создания таблиц и связей между ними с помощью SQL? Используйте свободное программное обеспечение MySQL Workbench, которая была создана, чтобы визуально создавать базы данных.
MySQL Workbench позволяет моделировать базу данных MySQL, используя визуальное представление таблиц. Это устраняет необходимость кропотливо описывать структуру базы данных, в SQL, программа MySQL Workbench будет генерировать код за вас! Скачать программу можно бесплатно на веб-сайте: http://www.mysql.com/downloads/workbench, вы можете скачать как установочную версию, так и ту, которая требует только распаковки (доступные системы включают в себя: Windows, Ubuntu Linux, Fedora, Mac OS Х).
Как использовать программу для создания базы данных MySQL?
Заполните соответствующие поля: имя таблицы, атрибуты (помните, что один из них должен быть главным ключом – обозначенным флажком, PK «первичный ключ».).
Когда вы создаете таблицы, вы должны думать о том, как они будут связаны друг с другом.
Если вы заполнили все таблицы, нажмите на кнопку «Добавить диаграмму», чтобы определить отношения между субъектами.
Вы увидите окно, похожее на приведенное ниже, в котором показана созданная таблица В рабочей области диаграммы.
Моя структура базы данных не будет правильной, так как здесь я лишь показываю, как моделировать структуру базы данных. Поэтому можно развернуть таблицы в рабочей области.
Теперь объедините таблицу, с тем, чтобы сформировать отношения.
Предположим они будут выглядеть таким образом:
— Книга, может принадлежать к одному читателю
— Читатель может занять несколько книг
— Книга может иметь только одного автора
— Автор может опубликовать множество книг
Как правило, используются три опции, которые позволяют создать журнал (1: 1, 1 для многих, и многие ко многим):
Таким образом, мы создаем соединения, как показано на рисунке:
Если вы дважды щелкните на отношения, вы сможем установить дополнительные параметры.
Работа с СУБД MySQL. Использование инструмента MySQL Workbench.
Откройте меню Пуск и наберите ‘Workbench’. В списке выберите MySQL Workbench.
Откроется окно, называемое домашним экраном.
Домашний экран
В верхней части Вы можете видеть список соединений с СУБД. Эти элементы управления используются для подключения к СУБД и прямого управления.
В нижней части находится список моделей. Модели используются для визуального проектирования баз данных.
Подключения
При наведении курсора мыши на подключение, у “плитки” отгибается уголок. Если нажать на этот “уголок”, отобразится информация о подключении: версия СУБД, дата последнего использования, адрес сервера СУБД, логин, и т.п.
Информация о подключении
В правом нижнем углу есть кнопка ‘Connect’, которая откроет данное подключение.
Подключение так же можно открыть, нажав на саму “плитку”.
Откройте первое подключение в списке.
Редактор SQL-запросов
После открытия подключения, открывается окно редактора SQL-запросов.
Окно редактора SQL-запросов
В центре мы видим окно редактирования запроса.
Обратно к домашнему экрану можно вернуться, нажав на иконку в левом верхнем углу окна.
Слева находится навигатор, отображающий основные задачи и список объектов БД.
В левом нижнем углу находится окно информации о выбранном объекте.
Справа находится окно помощи.
Внизу – окно истории запросов.
В правом верхнем углу находятся элементы управления, позволяющие скрыть или отобразить боковые панели.
Выполнение запросов
Вы так же можете выбрать активную базу, выполнив запрос
Для начала, запросим список таблиц в выбранной базе. Для этого, в окне редактирования SQL-запроса, напишем
При введении запроса, окно помощи автоматически отображает подсказки по синтаксису вводимого запроса, если эта возможность включена. Чтобы включить автоматическую подсказку, нажмите на третью слева кнопку панели в окне помощи.
Другие кнопки панели окна SQL-запроса
Слева направо, кнопки:
Open an SQL Script File: Загружает содержимое ранее сохраненного запроса из файла.
Save SQL Script to File: Сохраняет запрос в файл
Execute SQL Script: Выполняет выделенную часть запроса, или весь запрос, если ничего не выделено.
Execute Current SQL script: Выполняет выражение, на котором находится текстовый курсор.
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: Ограничение количества результатов запроса.
Save Snippet: Сохранить текущее выражение или выбранный фрагмент для быстрого использования.
Beautify SQL: Форматировать текст запроса.
Find panel: Отобразить панель поиска в тексте запроса.
Invisible characters: Отображать “невидимые” символы.
Wrapping: Включить перенос по словам.
Откроется окно результата запроса.
В центре окна результата находится результат запроса – в нашем случае, список названий таблиц. Справа – кнопки выбора стиля отображения:
и выберем стиль отображения результата Field Types.
Запуск запроса на выполнение запускает все выражения, которые написаны в окне запроса. Если в окне запроса написано несколько выражений, разделенных точкой с запятой, они выполнятся последовательно. Поэтому, удаляйте либо комментируйте уже выполненные запросы.
Комментарии в SQL начинаются с двойного дефиса, например:
В данный момент нас интересуют атрибуты (колонки) Name – названия страны и LifeExpectancy – средняя продолжительность жизни граждан.
Выведем список стран со средней продолжительностью жизни граждан более 80 лет. Для этого выполним запрос
Другой запрос, который можно выполнить к таблице Country – количество стран по форме правления.
Создание базы данных
Для создания базы данных можно выполнить запрос
Создайте базу данных с названием myFirstDatabase :
Выберите myFirstDatabase как активную.
Создание таблицы
Проверим, что таблица создалась:
Выведем содержимое таблицы:
Добавление и редактирование данных
Поле id оставьте пустым.
еще раз, чтобы в этом убедиться.
Замечание Можно так же добавлять и редактировать записи в табличном отображении результата.
Удаление данных
Другой способ – выполнение SQL-запроса
Например, удалим из таблицы People запись с каким-либо значением id :
Подставьте вместо 1 какое-то из существующих значений.
Импорт и экспорт
Экспорт
Выберите Export to Self-Contained File и файл, в который будет сохранен экспорт.
Импорт
Быстрый старт: Визуальное проектирование базы данных в MySQL Workbench
Цель данного поста — помочь начинающему разработчику быстро освоится и спроектировать простенькую базу с помощью инструмента для визуального проектирования баз данных 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 коде не содержится ошибок, то после исполнения кода мы увидим окно со списком таблиц, иначе выведется сообщение об ошибке. Теперь наша база загружена на сервер.
Благодарю за внимание, скачать саму программу можно здесь.
по совету одного из пользователей я приведу небольшое пояснение о том как изменить вид связей и таблиц, для этого необходимо выбрать следующий параметр в разделе меню Relationship Notation:
После этого связи таблиц примут вид:
Также есть возможность изменить вид таблиц, для этого нужно поставить галочку в вышеуказанном разделе меню и в нижеследующем Object Notation:
Вот так выглядит таблица на диаграмме приведенная к стандарту IDEF1X:
MySQL Workbench, учебное пособие: полное руководство по инструменту СУБД
MySQL Workbench от Oracle — это графический инструмент для работы с базами данных MySQL. MySQL — это система управления реляционными базами данных с открытым исходным кодом, и это самая популярная система баз данных, используемая с PHP. Он доступен в Windows, Linux и Mac OS X.
MySQL Workbench — мощный визуальный инструмент для администраторов баз данных, архитекторов баз данных и разработчиков MySQL. Этот инструмент предлагает моделирование данных, разработку SQL и инструменты администрирования для настройки и администрирования сервера.
В этом руководстве мы познакомим вас с MySQL Workbench и покажем, как начать работу с этим мощным инструментом.
Что такое MySQL Workbench?
MySQL Workbench — это кроссплатформенный инструмент проектирования реляционных баз данных с открытым исходным кодом, который добавляет функциональность и упрощает разработку MySQL и SQL. Он объединяет проектирование, разработку, создание, администрирование и обслуживание SQL, а также предлагает графический интерфейс для структурированной работы с вашими базами данных.
MySQL Workbench предоставляет возможности для управления моделями баз данных, такими как:
Существует несколько систем управления реляционными базами данных, таких как Microsoft SQL Server, Microsoft Access, Oracle и DB2. MySQL Workbench предлагает некоторые преимущества, которые следует учитывать при выборе инструмента.
MySQL поддерживает несколько механизмов хранения, каждый со своими спецификациями, в отличие от других инструментов. Он также предлагает высокую производительность благодаря своему дизайну и простоте.
Он также известен своей рентабельностью. Версия сообщества бесплатна для пользователей, а корпоративная версия имеет низкую лицензионную плату.
Основные особенности рабочей среды MySQL
В этом разделе будут рассмотрены некоторые важные функции MySQL Workbench.
Моделирование и дизайн
Моделирование — отличный способ визуализировать требования и создавать хорошо работающие базы данных, которые могут не отставать от постоянно меняющихся требований к данным. MySQL Workbench позволяет создавать модели и управлять ими, преобразовывать динамическую базу данных в модель, а также создавать и редактировать таблицы и вставлять данные.
Вы можете преобразовать диаграммы ER в операторы SQL и отправить их на сервер SQL. Вы также можете создавать модели из целевой базы данных или даже из импортированных файлов SQL.
Инструмент разработки SQL
MySQL Workbench позволяет создавать, управлять и настраивать подключения и параметры подключения к серверам баз данных MySQL. Он также позволяет выполнять SQL-запросы к этим соединениям с помощью встроенного редактора.
Редактор Visual SQL позволяет создавать, редактировать и выполнять запросы. Он имеет автозаполнение и цветные выделения, которые помогают легко писать и отлаживать операторы SQL.
Визуальное представление
MySQL Workbench предлагает различные инструменты, которые позволяют просматривать и улучшать производительность. Панель управления производительностью дает вам быстрый обзор различных показателей производительности. Отчеты о производительности позволяют анализировать производительность ваших баз данных.
Перенос базы данных
MySQL Workbench упрощает процесс миграции. Он позволяет выполнять миграцию с Microsoft SQL Server, SQLite, Microsoft Access и многих других. Он также позволяет настраивать, планировать, редактировать и выполнять проекты миграции.
Управление подключением
MySQL Workbench позволяет создавать, управлять и организовывать подключения к базе данных. Управление объектами Обозреватель объектов MySQL Workbench позволяет визуально выбирать таблицы и столбцы. Вы можете легко перемещаться между схемами, выбирать таблицы и поля, создавать новые или отбрасывать их.
Администрирование пользователей
MySQL Workbench значительно упрощает управление пользователями. Вы легко можете:
Конфигурация сервера
MySQL Workbench позволяет точно настраивать серверы MySQL, позволяя просматривать и редактировать расширенные параметры. Вы также можете просматривать журналы сервера, чтобы быстрее выявлять проблемы и отслеживать изменения в базе данных. Вы можете указать имя хоста MySQL, чтобы определить, где разместить вашу базу данных MySQL.
Экспорт и импорт
MySQL Workbench позволяет легко экспортировать или импортировать данные, выбирая схемы или таблицы базы данных в обозревателе объектов.
Нравится статья? Прокрутите вниз, чтобы подписаться на нашу бесплатную новостную рассылку, выходящую два раза в месяц.
Как установить MySQL Workbench
В этом разделе мы узнаем, как установить MySQL Workbench. В этой статье используется Windows, но процесс установки для других операционных систем очень похож.
Как использовать MySQL Workbench
В этом разделе мы рассмотрим использование MySQL Workbench. Первым шагом будет установка соединения, для этого выполните следующие действия.
Давайте посмотрим на это окно, прежде чем перейти к другим вещам. Как вы можете видеть на изображении ниже, у нас есть следующие основные разделы:
Теперь, когда ваша MySQL Workbench запущена и работает, давайте приступим к созданию баз данных и извлечению данных. Предположим, у вас есть пекарня, и вы хотите отслеживать разные вещи, например, сколько вы продаете за день или ваш инвентарь.
Вы можете легко сделать это, создав базу данных с несколькими таблицами, добавив данные в эти таблицы, а затем получив соответствующую информацию.
Создание базы данных
Давайте начнем с создания нашей базы данных с помощью команды: create database bakery. Выполните команду с помощью кнопки «Выполнить». При успешном выполнении команды вы должны увидеть зеленую галочку рядом с элементом действия.
Вы можете просмотреть все свои базы данных на панели «Навигатор». Следуй этим шагам:
Теперь, когда наша база данных готова, давайте добавим наши таблицы.
Создание таблицы
Синтаксис для создания таблицы следующий:
Для нашей первой таблицы Menu у нас будут следующие столбцы:
Команда для создания этой таблицы будет:
Выполните команду, и вы должны увидеть сообщение об успешном завершении в разделе » Вывод действия » внизу. Вы также увидите таблицу меню в пекарне после обновления схем.
Вы можете просмотреть пустую таблицу меню, щелкнув значок таблицы рядом с меню, как показано ниже.
Вставка данных в таблицу
Добавим данные в нашу таблицу, а перед этим посмотрим на синтаксис. При использовании вставки в у вас есть два варианта:
Этот первый вариант используется, когда вы вводите данные в каждый столбец таблицы.
Этот второй вариант используется, когда вы хотите ввести данные в определенные столбцы. Поскольку мы добавляем одну строку, это будет:
Если вы просмотрите свою таблицу сейчас, вы увидите, что данные были добавлены.
Если вы хотите добавить несколько строк, используйте:
Получение данных из таблицы
Попробуем получить данные из этой таблицы. Допустим, мы хотим посмотреть, какие товары мы продаем в нашей пекарне. Для этого нам нужно отобразить все данные в нашей таблице, используя:
Если мы хотим узнать, какой из предметов самый дорогой, мы бы использовали:
Эта команда сортирует таблицу по предметам с самой высокой ценой.
Как установить и использовать MySQL Workbench
Введение
При помощи SQL-скриптов довольно просто создать базу данных из нескольких таблиц. В ней легко ориентироваться и всю схему можно держать в голове. Такие БД встречаются только в небольших или учебных проектах.
В реальных системах базы данных содержат десятки и сотни таблиц, процедур, представлений и триггеров. Невозможно удержать все эти объекты и связи между ними в голове. И когда в такую схему нужно добавить новую таблицу или разобраться в существующей структуре, хочется увидеть все таблицы перед глазами.
С этим может помочь инструмент MySQL Workbench. Он упрощает многие аспекты работы с БД: создание таблиц и связей между ними, создание триггеров и процедур, визуальное представление схемы, настройка БД и создание резервных копий.
В статье мы покажем, как работать с MySQL Workbench. Мы создадим кластер СУБД MySQL, установим Workbench и подключимся к кластеру. Затем попробуем разные способы создания таблиц и работы с данными. Также создадим бекап базы данных и восстановим его. Все это на пошаговых примерах с описанием и скриншотами.
Что такое MySQL Workbench
MySQL Workbench — универсальный инструмент для работы и управления базами данных. С его помощью можно создавать и редактировать таблицы и другие объекты, управлять доступом пользователей и полноценно администрировать БД. Workbench может пригодиться разработчикам, администраторам БД и архитекторам систем.
Несмотря на название, он может работать не только с MySQL, но и с другими СУБД: Oracle Database, Microsoft SQL Server, PostgreSQL и другими.
Одна из главных особенностей Workbench — визуальное моделирование. Оно позволяет увидеть все таблицы и связи между ними в наглядном виде. Это намного упрощает проектирование базы данных.
Перейдем к практике.
Создать облачную СУБД MySQL
Перед началом работы с Workbench нужно установить и запустить MySQL. Мы создадим кластер на платформе Selectel, это позволит быстро развернуть БД и не заниматься установкой и настройкой сервера.
Облачные базы данных
В панели управления заходим в раздел «Облачная платформа» — «Базы данных», нажимаем кнопку «Создать кластер».
На экране создания кластера выбираем параметры. Мы покажем лишь некоторые параметры, остальные можно оставить по умолчанию. Выбираем «СУБД» — MySQL 8, «Конфигурация нод» — «Фиксированная», 2 vCPU, 4 ГБ оперативной памяти и 32 ГБ места на диске. В разделе «Сеть» нужно выбрать публичную подсеть, чтобы к кластеру можно было подключаться из интернета.
После этого внизу страницы нажимаем кнопку «Создать». Кластер будет создаваться несколько минут, и после того, как он перейдет в статус ACTIVE, можно продолжать настройку. Нажимаем на имя кластера.
На первой вкладке нам нужно записать IP-адрес кластера, чтобы позже подключиться к нему. Также подключаться можно и по DNS-имени.
Затем переходим на вкладку «Пользователи». Нужно создать нового пользователя, для этого нажимаем на соответствующую кнопку.
Интерфейс платформы автоматически предложит имя пользователя и пароль. Не забудьте сохранить пароль, потому что его нельзя восстановить и можно только поменять.
Далее создадим базу данных, в которой мы потом будем создавать таблицы. Перейдите на вкладку «Базы данных», нажмите кнопку «Создать базу данных» и укажите имя.
Все, наш удаленный сервер MySQL готов к работе.
Установить MySQL Workbench и подключиться к кластеру
Теперь установим MySQL Workbench и подключимся к созданному кластеру. Перейдите на страницу загрузки, выберите вашу операционную систему. Мы покажем, как установить MySQL Workbench на примере Windows. Если у вас Linux или MacOS, то после выбора ОС из списка появятся соответствующие инструкции, воспользуйтесь ими.
Нажимаем кнопку Download, и на следующем экране нам предложат войти в аккаунт Oracle или создать его. Отказываемся, нажимаем кнопку No thanks, just start my download, и просто скачиваем установщик.
Запускаем скачанный файл, во всех диалоговых окнах оставляем значения по умолчанию. После установки запускаем MySQL Workbench. При первом запуске нас встретит приветственное окно. Для начала нужно добавить подключение к нашему кластеру. Для этого нажимаем на кнопку «+», рядом с текстом MySQL Connections.
Откроется экран настройки.
Эти настройки сохранятся и в дальнейшем их не нужно будет вводить заново. Нажимаем кнопку OK и в следующем диалоговом окне вводим пароль.
Мы подключились к кластеру MySQL. В левой части экрана перейдя на вкладку Schemas, вы увидите БД, которую мы создавали ранее в интерфейсе Selectel. Обратите внимание, что в интерфейсе Workbench это называется «схема», но это одно и то же.
Создать таблицы
Мы покажем два разных способа, как это сделать. Сначала создадим две таблицы справочников:
Затем создадим еще одну таблицу, в ней будет храниться связь: в каких магазинах какие товары продаются.
Дважды кликнем на названии схемы, чтобы она выделилась жирным шрифтом. Это означает, что теперь все действия по умолчанию мы выполняем в этой схеме. Затем в панели инструментов нажимаем на иконку создания новой таблицы.
Откроется окно создания новой таблицы. Нужно заполнить несколько полей:
Далее нажимаем кнопку Apply. Workbench отобразит скрипт, который он сгенерировал для создания этой таблицы. Перед применением скрипт можно проверить или изменить.
Затем по такому же принципу создаем вторую таблицу — справочник магазинов.
Теперь наполним справочники данными. Нажмите правой кнопкой мыши на таблице products и выберите пункт Select Rows.
Откроется окно, в верхней части которого можно писать SQL-запрос, а в нижней отобразится результат. Добавлять новые записи в таблицу можно как при помощи SQL, так и графического представления.
Мы воспользуемся графическим интерфейсом: в нижней части окна создадим несколько строк. Достаточно указать названия товаров, а идентификатор заполнится автоматически. Затем нажмем кнопку Apply.
Workbench снова покажет скрипт перед тем, как применить действия. Его можно проверить или изменить.
Точно также добавим несколько записей в таблицу stores.
Создать модель
Теперь перейдем к другому, более наглядному способу работы с БД — моделям. Модель — это способ графического представления таблиц и связей между ними. В этом режиме все таблицы будто нарисованы на листе бумаги, а стрелки между ними показывают взаимосвязи. Но в отличие от листа бумаги, таблицы можно легко добавлять, изменять, удалять и перемещать.
Например, вот схема небольшого, но реального проекта. В крупных проектах схемы БД могут быть во много раз больше.
Модель можно создать несколькими способами.
Мы воспользуемся вторым способом: импортируем наши таблицы, а затем в одну из них добавим новое поле и создадим еще одну таблицу для связи.
В главном меню Workbench выбираем Database — Reverse Engineer. Дальше — выберем созданное ранее подключение и в следующем окне отметим, что нужно импортировать нашу схему.
Во всех последующих окнах оставляем значения по умолчанию, нажимая кнопку Next.
В результате появится модель с нашими таблицами. На ней отображается название таблиц, поля и их типы.
Мы уже знаем, как самим создавать таблицу в MySQL Workbench. А теперь посмотрим, как это можно сделать автоматически. Нам нужна еще одна таблица, в которой будет храниться связь: какой товар в каком магазине продается. Самый простой способ это сделать — использовать инструмент n:m Relationship. Выбираем его на панели инструментов, а потом по очереди кликнем на каждую таблицу.
MySQL Workbench сам создаст новую таблицу, даст ей имя и добавит в нее поля.
Обратите внимание, что поля stores_id и products_id являются одновременно и первичными (primary key), и вторичными ключами (foreign key). Это означает, что в эту таблицу можно будет добавить только те товары и магазины, которые есть в справочниках. К тому же, в таблице нельзя будет создать две одинаковые записи. Это как раз то, что нам нужно.
Теперь добавим в справочник магазинов поле с адресом. Для этого два раза кликнем на таблице Stores, и в нижней части окна появится область для редактирования полей. Эта область аналогична той, с которой мы работали при создании первых двух таблиц. Создадим новое поле Address.
Мы внесли изменения, которые хотели. Но если сейчас посмотреть на схему, то мы увидим, что на самом деле в таблицах ничего не поменялось. Нет ни новой таблицы, ни нового поля. Это потому, что модель не связана с БД явно. В процессе импорта мы создали модель на основе существующей схемы, но они никак между собой не связаны. Схема может жить своей жизнью, а модель — своей. Чтобы перенести изменения из модели в схему, нужно сделать это явно.
Для этого в главном меню Workbench выбираем пункт Database — Synchronize Model, в открывшемся окне выбираем соединение. Далее во всех окнах оставляем значения по умолчанию и нажимаем кнопку Next.
Затем Workbench проанализирует различия в модели и схеме и сгенерирует скрипты для обновления схемы. На скриншоте видно, что создастся одна новая таблица, и в существующую таблицу добавится новое поле.
Применим этот скрипт. Чтобы проверить, что все получилось, возвращаемся в схему и видим, что в ней появились наши изменения.
Импорт и экспорт данных
Рассмотрим еще две полезные функции MySQL Workbench — экспорт и импорт. Они позволяют экспортировать схему со всеми таблицами и данными, и затем импортировать в новую БД. Это может быть полезно для создания резервных копий или переноса БД на другой сервер.
Сначала мы экспортируем схему, потом удалим все таблицы в ней и затем восстановим таблицы из бекапа.
В главном меню Workbench выберем пункт Server — Data Export. В открывшемся окне выберите схему и все таблицы в ней. Затем укажите путь, куда сохранить файлы и нажмите кнопку Start Export. В окне есть и другие дополнительные опции, но для нашего примера достаточно значений по умолчанию.
Чтобы показать процесс восстановления, мы удалим все существующие таблицы. Для этого выделите их и в контекстном меню нажмите Drop 3 Tables.
В открывшемся диалоговом окне выберите вариант Drop Now. Теперь у нас снова пустая схема, как было в самом начале.
Теперь будем восстанавливать данные. Зайдем в главное меню Workbench, Server — Data Import. Выбираем директорию, где мы сохранили дамп, отмечаем схему и все таблицы. Затем нажимаем кнопку Start Import.
Сразу после окончания импорта мы не увидим таблицы, сначала нужно обновить схему. Для этого в контекстном меню выбираем пункт Refresh All.
Видим, что все таблицы восстановились. Проверим данные в них — все на месте. Значит импорт прошел успешно.
Этот сценарий может использоваться для создания резервных копий и их восстановления.
Но так как мы пользуемся управляемой СУБД на платформе Selectel, нам не нужно заботиться о создании бэкапов, это делается автоматически.
Заключение
Мы познакомились с инструментом MySQL Workbench и узнали, для чего он используется. Научились создавать таблицы, добавлять в них поля и указывать их свойства. Также поработали со схемами — удобным графическим способом представления таблиц. Напоследок узнали, как с помощью MySQL Workbench экспортировать базу данных, и затем восстановить ее.
Теперь вы можете подключаться к своим рабочим проектам или создавать новую архитектуру БД с нуля.
MySQL Workbench
• резервное копирование и восстановление базы данных (также полезно для переноса базы данных на другой компьютер).
• настройки для подключения к удаленной базе данных.
• просмотр статистики базы данных.
Если база данных была установлена согласно инструкциям в предыдущем разделе, то MySQL Workbench был установлен вместе с MySQL, в противном случае ее можно скачать по этой ссылке: http://dev.mysql.com/downloads/workbench/
Введите пароль пользователя root (который был придуман при настройке MySQL):
После подключения к серверу MySQL мы увидим стартовую страницу:
Создание базы данных
Вам необходимо создать базу данных вручную:
Откройте закладку «Schemas». Нажмите иконку «Create a new schema in the connected server»:
Введите «Name» имя схемы и нажмите Apply:
Затем нажмите «Finish»:
Изменить часовой пояс сервера
Если при первом запуске TeslaSCADA2 IDE или TeslaSCADA2 Runtime появляется сообщение об ошибке, подобное этому:
Вы можете исправить это двумя способами:
1. Установить глобально с помощью запроса SQL (это временное решение, после перезапуска сервера MySQL проблема вернется).
Для этого вам необходимо настроить часовой пояс для своего сервера My SQL, чтобы сделать это, откройте MySQL Workbench и щелкните значок «Create a new SQL tab for executing queries»:
Введите: SET GLOBAL time_zone = ‘+3:00’ ;
Где вместо ‘+3:00’ вам необходимо ввести ваш часовой пояс. И затем нажать иконку «Execute. «:
Теперь вы можете снова попробовать Запустить проект TeslaSCADA2 в TeslaSCADA2 IDE или в TeslaSCADA2 Runtime.
2. Изменить файл my.ini (Windows) или файл my.inf (Linux).
2.1 Найдите файл my.ini или my.inf. Это файл инициализации для сервера MySQL. Обычно он помещается в C:/ProgramData/MySQL/MySQL Server 8.0/:
2.2. Откройте файл my.ini и добавьте эту строку: default-time-zone=’+03:00′ Где вместо ‘+3: 00’ нужно указать свой часовой пояс.
2.3. Сохраните файл (ваш текущий пользователь должен иметь доступ к этой папке).
2.4. Перезагрузите сервер MySQL.
Теперь вы можете снова попробовать запустить проект TeslaSCADA2 в TeslaSCADA2 IDE или в TeslaSCADA2 Runtime.
Настройки, необходимые для подключения к удаленной базе данных
1. Выберите пункт «Users and Privileges».
2. Выберите пользователя «root».
3. В поле «Limit to Hosts Matching» введите «%».
4. Сохраните настройки нажав кнопку «Apply».
Теперь вы можете подключиться к базе данных с удаленного ПК.
Изменение пути сохранения базы данных
Чтобы изменить путь для сохранения базы данных, необходимо сделать следующее:
• остановить службу MySQL через службы Windows.
Далее вам необходимо запустить MySQL Workbench «as administrator» и изменить параметр «datadir» на новое расположение директории «data»:
MySQL. Workbench. Проектируем БД. Теория и практика
Данная статья посвящена проектированию БД. Основана на книге Д. Осипова “Базы данных и Delphi” и некотором личном опыте. В качестве инструмента БД я буду использовать программу MySQL Workbench 6.3 CE.
Теория
Согласно Дмитрию Осипову при проектировании БД мы можем использовать как минимум 2 подхода.
Первый – модель ER или по другому сущность-связь.
И второй подход – нормализация.
Модель сущность-связь (ER модель Питера Чена)
Алгорим проектирования БД в псевдокоде можно изобразить, например так
–Выделить все сущности, подлежащие хранению в БД (отделы, сотрудники, заказы)
–Выявить атрибуты (у отделов – название, у сотрудников – имя, фамилия, зарплата, у заказов – имя, количество)
–Выявить взаимосвязи между сущностями – отсутствие, один к одному (1:1), один ко многим (1:M), многие ко многим (M:N). Связь один ко многим это когда в одном отделе работает несколько сотрудников, у одного поставщика несколько контрактов и так далее).
–Разделить сущности на сильные (независимые) и слабые (зависимые) – если есть взаимосвязь и одна сущность зависит от другой, то говорят, что зависимая сущность – слабая, независимая сильная. Пример – отделы и сотрудники.
–Полученную схему отобразить в диаграммах MySQL Workbench и сделать ForwardEngeneering для создания реальной физической базы данных.
Нотации ER моделей
-Нотация Питера Чена
-Нотация Crow’s foot (“Воронья лапка”)
Нотация Питера Чена
Что касается нотации Питера Чена (схематического изображения), то она может выглядеть так…
Вот принятые обозначения в нотации Питера Чена
Более сложный пример мог бы выглядеть так. Пример из английской Википедии
Нотация Gordon Everest (Гордона Эверста). Под назаванием Crow’s Foot или Fork (вилка).
Самый простой пример мог бы выглядеть так. Как видите справа у нас “воронья лапка”, означающая связь один ко многим. Один артист может спеть несколько песен. Этот пример также из английской Википедии, который есть почти во всех русских блогах на эту тему 🙂
А вот пример из книги Дмитрия Осипова. Одна вертикальная черта означает “один”, воронья лапка справа “ко многим”.
Нормализация базы данных
В книге Д.Осипова говорится о 5 нормальных формах, для практической работы, на мой взгляд, достаточно четырех
1NF – атомарность или 1 поле 1 значение.
2NF – каждой таблице свой уникальный ключ.
3NF – 1 сущность 1 таблица (моя интерпретация)
4NF – каждую связь M:N (многие ко многим) разбить на многие к одному.
В своей книге Дмитрий приводит такой пример, берет вот такую таблицу и последовательно приводит её к 4 нормальной форме.
Как видно таблица – “плохая” в качестве БД, в одном поле несколько значений, уникального ключа нет, да и вообще все данные, все сущности в одной таблице, есть связи многие ко многим (авторы и жанры, и так далее). В общем, ни одной нормальной формы не соблюдено.
Повторим за Дмитрием вкратце его шаги
Приведение к 1NF – одно поле одно значение
Приведение ко 2NF – прописывание уникального ключа таблице. На рисунке ниже указаны ключ и поля таблицы.
Приведение к 3NF – разбиение на отдельные, независимые таблицы. Как видно из рисунка выше – все поля у нас в одной таблице, какие-то поля являются атрибутами для других, если смотреть при помощи модели Питера Чена. С точки зрения пользователя БД это очень, очень неудобно. На 3 шаге сделаем следующее – разобьем 1 большую таблицу на несколько таблиц, соответствующих сущностям и свяжем их. Атрибуты сгруппируем по сущностям. Каждой таблице пропишем свой уникальный ключ. В результате, по книге Дмитрия Осипова, у нас получится следующее.
4NF – разбить каждую зависимость многие ко многим на 2 зависимости 1 ко многим. Это можно сделать введя искусственную коммутационную таблицу.
-1 автор может написать несколько книг. И также можно сказать – несколько авторов могли написать 1 книгу. Поэтому вводим тип сущности WRITERS_BOOKS
-В 1 жанре может быть несколько книг. 1 книга может быть написана в нескольких жанрах. Вводим GENRES_BOOKS
В принципе этот ряд можно было бы и продолжить
-1 поставщик может иметь несколько контрактов. В 1 контракте может быть несколько поставщиков. Но тут наверное всё зависит от реальной задачи и ситуации. Нельзя угодить на все случаи жизни. А, конечно хочется)))
Но остановимся на том, что написано в книге Дмитрия. Для понимания, думаю, этого достаточно.
Пример из жизни – разные сотрудники выполняют разные заказы. Дмитрий в своей книге делает вот так, что вполне логично.
Практика
Итак, попробуем решить ту же задачу самостоятельно, используя все накопленные знания. Для начала – поймем, что у нас на входе и что требуется получить на выходе.
На входе
В приведенном к 1NF виде
На выходе
Готовая реляционная БД MySQL, соответствующая 4 нормальным формам.
Рисуем ER диаграмму
Идём по алгоритму, описанному выше, позволю себе его напомнить
Алгорим проектирования БД в псевдокоде можно изобразить, например так
–Выделить все сущности, подлежащие хранению в БД (отделы, сотрудники, заказы)
–Выявить атрибуты (у отделов – название, у сотрудников – имя, фамилия, зарплата, у заказов – имя, количество)
–Выявить взаимосвязи между сущностями – отсутствие, один к одному (1:1), один ко многим (1:M), многие ко многим (M:N). Связь один ко многим это когда в одном отделе работает несколько сотрудников, у одного поставщика несколько контрактов и так далее).
–Разделить сущности на сильные (независимые) и слабые (зависимые) – если есть взаимосвязь и одна сущность зависит от другой, то говорят, что зависимая сущность – слабая, независимая сильная. Пример – отделы и сотрудники.
–Полученную схему отобразить в диаграммах MySQL Workbench и сделать ForwardEngeneering для создания реальной физической базы данных.
В реальной ситуации о полях таблицы (атрибутах сущностей) мы будем догадываться, например, у человека есть руки, у клиентов есть заказы, у складов есть товары и так далее, у книжного магазина есть книги, продавцы, клиенты, поставщики, филиалы, да что угодно! Список это можно перечислять до бесконечности.
Важно при проектировании БД выделять те атрибуты, которые непосредственно относятся к решению задачи в техническом задании иначе из проектирования БД можно вообще не вылезти)))
В нашем учебном случае – все немного проще и наш список атрибутов мы можем составить из тех атрибутов, которые даны в таблице. Но это не отменяет первого этапа – поиска сущностей. Итак, поехали.
1 и 2 Этап – поиск сущностей и атрибутов
Cущности (в скобках атрибуты)
2. Contracts (ContrDate)
5. Book (Titile) // NewModel >AddDiagram
2 раза кликаем по AddDiagram. И перед нами открывается поле для действий.
Начинаем заполнять. Сначала добавим все сущности с атрибутами. А потом установим взаимосвязи.
Как добавить хотя бы 1 таблицу и заполнить её?
Заполняем таблицу так как нам надо…
Создадим таким образом все таблицы, которые нам нужны. Всего 8 таблиц как и заказывали.
Перед тем как мы будем налаживать взаимосвязи, разберемся в следующем.
В чем разница между identifying and non-identifying relationships?
Теперь, собственно попробуем наладить взаимосвязи! Но прежде, разберемся с пунктирными и непунктирными линиями во взаимосвязях.
Классные объяснения на английском находятся здесь. Больше всего мне понравилось вот это объяснение
A book belongs to an owner, and an owner can own multiple books. But the book can exist also without the owner and it can change the owner. The relationship between a book and an owner is a non-identifying relationship.
A book however is written by an author, and the author could have written multiple books. But the book needs to be written by an author it cannot exist without an author. Therefore the relationship between the book and the author is an identifying relationship.
Если книга может существовать без владельца, а она может, тогда non-identifying relationship
Если книга не может существовать без автора,а она не может, тогда identifying relationship
Технически это отражается следующим образом
Mysql workbench как создать базу данных
Практическое задание №4 по дисциплине «Основы построения баз данных», ВШЭКН ЮУрГУ, 2020/2021 учебный год
В ходе выполнения практического задания 4 необходимо опираться на практическое задание 2, в котором вы создавали базу данных Деканат, включающую в себя несколько таблиц.
Задание 1. Создание базы данных «Деканат» с использованием языка SQL
Для того чтобы остановить запись в файл, используйте команду
Используйте команду SELECT NOW(); для вывода на экран текущего времени.
Создайте новую базу данных DekanatXX, где XX – номер варианта студента. Для создания базы данных используйте выражение CREATE SCHEMA или CREATE DATABASE. Переключитесь на нее с помощью команды USE.
Создайте новую таблицу Students, которая будет содержать данные студентов. Определите следующие названия полей и их типы данных:
Обратите внимание на поля, значение которых не может быть NULL, а также на ключевое поле. В поле Stipend (стипендия) необходимо добавить значение по умолчанию ‘Нет’.
Создайте новую таблицу Courses, которая будет содержать дисциплины. Определите следующие названия полей и их типы данных:
Создайте новую таблицу Lecturers, которая будет содержать данные преподавателей. Определите следующие названия полей и их типы данных:
Вместо того, чтобы написать новую команду для создания таблицы Lecturers, вы можете использовать команду для создания таблицы Lecturers из первой части четвертого практического задания. В этом случае ваша таблица будет иметь поле Course (Дисциплина), который можно удалить, а вместо него добавить новое поле CourseID (КодДисциплины), используя оператор ALTER:
Если вы захотите поменять местами некоторые столбцы, то можете воспользоваться следующей командой
Создайте новую таблицу Marks, которая будет содержать оценки. Определите следующие названия полей и их типы данных:
Обратите внимание, в этой таблице первичным ключом будет не одно, а два поля, поскольку значения в каждом отдельном поле могут повторяться, но для каждого студента по одной дисциплине может быть только одна оценка. Добиться этого можно, указав при создании таблицы выражение PRIMARY KEY(StudentID, CourseID).
Проверьте структуру созданных таблиц с помощью выражения DESCRIBE.
Установите связи между таблицами, задайте каскадное обновление и каскадное удаление связанных записей. В MS Access вы использовали графический интерфейс для редактирования схемы данных. В MySQL для этой цели служит оператор ALTER, который позволяет установить связи между таблицами путем создания правил целостности FOREIGN KEY (внешний ключ). Внешний ключ устанавливается для столбцов из зависимой, подчиненной таблицы, и указывает на один из столбцов из главной таблицы. Как правило, внешний ключ указывает на первичный ключ из связанной главной таблицы. Общий синтаксис установки внешнего ключа на уровне таблицы:
Для создания ограничения внешнего ключа после FOREIGN KEY указывается столбец таблицы, который будет представляет внешний ключ. А после ключевого слова REFERENCES указывается имя связанной таблицы, а затем в скобках имя связанного столбца, на который будет указывать внешний ключ. После выражения REFERENCES идут необязательные выражения ON DELETE и ON UPDATE, которые задают действие при удалении и обновлении строки из главной таблицы соответственно. При установлении каскадного обновления и каскадного удаления используется выражение CASCADE. Внешние ключи можно указывать и при создании таблиц. Подробнее прочесть про FOREIGN KEY можно в официальной документации по ссылке: https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html. В вашей базе данных необходимо установить следующие связи:
Проверьте созданные внешние ключи, используя команду SHOW CREATE TABLE table_name
Проверьте внесенные данные в таблицы с помощью команды
Если какие-то данные внесены неправильно, можете изменить их с помощью оператора UPDATE.
Задание 2. Составление запросов
Создайте запросы на информацию о студентах с заданным условием из одной таблицы. Получите информацию о студентах определенной группы с помощью запроса
Самостоятельно составьте следующие запросы:
Выражение имя_таблицы.имя_столбца позволяет избежать двусмысленности, если разные таблицы содержат столбцы с одинаковыми именами. Для того чтобы избежать частого написания длинных названий используются подстановочные имена (алиасы), которые можно задать при помощи выражения AS:
Выражение AS можно опустить и написать такой запрос, аналогичный двум предыдущим:
Самостоятельно составьте запрос на получение оценок по всем дисцилинам для конкретного студента (указывается его фамилия).
Составьте запросы, использующие функции агрегирования (в нижеприведенных примерах замените «номер_группы» и другие выражения на свои значения соответствующих полей). Более подробную информацию об использовании функций агрегирования можете найти в лекционном материале. В данной работе вы будете использовать функцию AVG(), которая возвращает среднее значение. Для группировки результатов выборки и применение функции к выборкам, соответствующим каждой группе, применяется выражение GROUP BY. Условия выборки при использовании функций агрегирования устанавливают с помощью выражения HAVING. Например, запрос, в результате которого создастся выборка, отражающая средний балл по дисциплинам по всем студентам в группах:
Запрос, в результате которого создастся выборка, отражающая средний балл по дисциплинам в определенной группе:
В некоторых случаях может потребоваться использование подзапросов для решения поставленной задачи. Запрос, в результате которого создастся выборка, отражающая средний балл по дисциплинам по всем студентам и по каждой группе
В вышеприведенном примере использованы алиасы для подзапросов, что фактически означает создание временных таблиц с новыми именами.
Увеличьте стаж работы преподавателей на M лет, при условии, что он составляет меньше N лет, используя оператор UPDATE. Вместо M и N вставьте свои числа.
Самостоятельно составьте команду, которая увеличит стаж работы доцентов на некоторую величину.
Удалите студентов из таблицы Students. Так как удаление является чувствительной операцией, мы должны быть уверены, что удаляем именно того студента, которого должны, поэтому в условии необходимо указать полное ФИО и номер группы удаляемого студента.
Проверьте, что студент удален (таблица Students), а также, что его оценки также удалены из-за каскадного удаления (таблица Marks). Используйте для этой цели оператор SELECT.
Создайте новую таблицу, в которой будет информация об отличниках. Сначала сформируйте запрос на выборку отличников:
Теперь создайте новую таблицу на основе этого запроса:
Используйте команду SELECT NOW(); для вывода на экран текущего времени, завершите запись команд в файл «L4-P2-XXXФамилия.log», который необходимо отправить на проверку (в элементе курса «Сдать на проверку Практическое задание 4»).
Задание 3. Знакомство с MySQL Workbench
Вы уже познакомились с тем, как работать с СУБД MySQL, используя консоль. Теперь вам предстоит познакомиться с программой MySQL Workbench, которая представляет собой официальный инструмент с графическим пользовательским интерфейсом для работы с сервером и базами данных MySQL. Подробное справочное руководство по работе с MySQL Workbench доступно по ссылке: https://dev.mysql.com/doc/workbench/en/.
MySQL Workbench позволяет создавать соединения с серверами баз данных и управлять ими. Помимо возможности настройки параметров подключения, MySQL Workbench предоставляет возможность выполнять SQL-запросы по подключениям к базе данных с помощью встроенного редактора SQL. Также важной функциональной областью MySQL Workbench является возможность моделирования данных, поскольку он позволяет графически создавать схемы баз данных, осуществлять обратную и прямую связь между схемой и базой данных, а также редактировать все аспекты базы данных с помощью комплексного редактора таблиц.
Во вкладке «EER Diagram» вы видите интерфейс для создания схемы данных, похожий на соответствующий инструмент MS Access, который вы использовали для создания схемы базы данных «Деканат» во второй практической работе. Последовательность этапов (создание структуры таблиц, связей и т.п.) также похожа на то, что вы делали во второй практической работе в программе MS Access. MySQL Workbench позволяет сначала разработать схему баз данных, чтобы по ней далее создать уже саму базу данных.
Вы попадете в режим Reverse Engineer Database, который позволяет создать диаграмму на основе существующей базы данных. Он предполагает несколько шагов. Нажмите Next (Далее).
На этапе «Select Schemas» выберите вашу базу данных DekanatXX.
Завершите создание схемы (Finish).
Источники информации:
- http://digital-flame.ru/2015/07/31/mysql-workbench-sozdanie-modeli-i-fizicheskoy-bd/
- http://juice-health.ru/program/428-how-to-create-a-database-mysql
- http://wiki.livid.pp.ru/students/dbms/labs/01_Workbench.html
- http://habr.com/ru/post/175985/
- http://bestprogrammer.ru/baza-dannyh/uchebnoe-posobie-po-mysql-workbench-polnoe-rukovodstvo-po-instrumentu-subd
- http://selectel.ru/blog/tutorials/mysql-workbench-installation/
- http://teslascada.com/HTMLRU/mysql-workbench.html
- http://digital-flame.ru/2016/02/22/mysql-workbench-proektiruem-bd-teoriya-i-praktika/
- http://github.com/oubush/MySQL_examples/blob/master/Lab4-Part2.md