В днешния урок ще научите как да използвате визуална програма за моделиране на база данни, за да начертаете диаграма на база данни и автоматично да генерирате SQL. По-конкретно, ще прегледаме как да използваме MySQL Workbench, междуплатформен визуален инструмент за проектиране на база данни.
Какво е MySQL Workbench?
MySQL Workbench е мощен инструмент, разработен от MySQL с три основни области на функционалност:
- Разработка на SQL :Заменя браузъра за заявки MySQL. Позволява на потребителя да се свърже със съществуваща база данни и да редактира и изпълнява SQL заявки.
- Моделиране на данни :Пълен визуален дизайн и моделиране на база данни.
- Администриране на база данни :Заменя администратора на MySQL. Графичен интерфейс за стартиране/спиране на сървъри, създаване на потребителски акаунти, редактиране на конфигурационни файлове и др.
В този урок ще се съсредоточим върху Моделирането на данни аспект, за да създадете база данни от нулата, а след това просто разгледайте SQL редактора, за да изпълните нашия генериран SQL скрипт и да създадете базата данни в MySQL.
MySQL Workbench е наличен за Windows, Linux и Mac OSX. Има две различни издания:Community OSS Edition и комерсиалното Стандартно издание . Изданието на общността е лицензирано с отворен код и GPL, както бихте очаквали. Той е напълно функционален и е този, който ще използваме в тази статия. Търговското издание добавя някои допълнителни функции, като валидиране на схема и модел или генериране на документация.
Забележка:този урок се базира на Community OSS Edition версия 5.2 (5.2.16), понастоящем в бета версия към момента на писане (април 2010 г.).
Планиране на нашата база данни
За да научим как да използваме MySQL Workbench, ще използваме много проста база данни за онлайн класове като пример. Да предположим, че група учители искат да предлагат онлайн класове по няколко предмета, като използват Skype или друг софтуер за видеоконферентна връзка. За нашия малък проект решихме, че трябва да съхраняваме следната информация:
Когато рисуваме нашата диаграма, ще трябва да знаем и връзките между тези групи данни; така че по-добре да помислим за това сега!
- Един учител може да преподава много предмети
- Един предмет може да се преподава от много учители
- Всеки клас има само един учител
- Един учител може да преподава много класове
- Един ученик може да посещава много класове
- Един клас има много ученици
- Един клас може да има няколко часа (на седмица)
- В един конкретен ден и час може да има няколко класа
- Класът е около един предмет
- Един предмет може да се преподава в много класове
В този момент имаме цялата информация, която ни е необходима, за да се срещнем със звездата на това шоу...
Изпратете в MySQL Workbench
Време е да стартирате Workbench. В частта за моделиране на данни на началния екран щракваме върху „Създаване на нов модел EER“ и се появява следният екран:
Когато създаваме нов модел на база данни, той съдържа схемата по подразбиране mydb. Можем да го преименуваме и да го използваме като наша DB схема. Моделът на база данни може да има няколко различни схеми.
Каталогът вдясно ще покаже всеки елемент в нашата схема и ще ни позволи да плъзгаме и пускаме елементи към диаграми, ако е необходимо.
Наличието на отделни секции за физически схеми и EER диаграми и възможността за включване на няколко схеми в един модел на база данни може да бъде объркващо. Следващият раздел обяснява тези понятия и как са свързани.
Изясняване на понятия
Физическата схема съдържа всички необходими елементи за дефиниране на базата данни:таблици, колони, типове, индекси, ограничения и т.н. Това е, което ние наистина дефинираме. Всеки обект, добавен в графичния модел, също се показва във физическата схема. Това всъщност е визуален начин да дефинираме нашата схема.
Можем да имаме няколко схеми за един и същ модел на база данни по същия начин, както можем да имаме няколко бази данни в MySQL сървър. Всяка схема ще бъде MySQL база данни. Например, в следващия екран имаме два раздела за схема:
Ако генерираме SQL скрипта, ще имаме два отделни оператора CREATE DATABASE – всъщност ще имаме CREATE SCHEMA, което е просто синоним.
CREATE SCHEMA IF NOT EXISTS `schema1`; CREATE SCHEMA IF NOT EXISTS `schema2`;
„EER означава Разширена (или подобрена) връзка между субекти . EER диаграмите са просто начин за моделиране на данните и връзките между данните с помощта на стандартни символи"
Те ще бъдат изброени като бази данни в хоста на MySQL сървъра, когато използвате SHOW DATABASES.
Сега, какво е EER диаграма? EER означава Разширена (или подобрена) връзка между обекти>. EER диаграмите са просто начин за моделиране на данните и връзките между данните с помощта на стандартни символи. EER моделите могат да бъдат сложни, но MySQL Workbench използва само подмножество от всички възможни графични елементи, тъй като целта на тази диаграма (в този инструмент) е всеки елемент да бъде съпоставен с физическата схема.
Можем да използваме EER диаграма, за да дефинираме цялата база данни или само малки части. Например, можем да имаме схема с дефинирани пет таблици и след това да създадем нова диаграма, за да дефинираме още две таблици с помощта на визуалния редактор. Диаграмата ще съдържа само две таблици, но тези две таблици също ще бъдат включени в схемата, заедно с предишните пет.
Създаване на нашите таблици
Обратно към нашия първоначален пример; трябва да преименуваме схемата по подразбиране, като щракнем двукратно върху името. В този момент имаме две възможности:можем да започнем да добавяме таблици към нашата физическа схема с помощта на иконата за добавяне на таблица или можем да стартираме EER диаграма и да добавим всички таблици там.
Предпочитам да добавя нова диаграма от самото начало и да създам схемата си визуално; обаче, за да покажем как да го направим и с двата метода, ще създадем първите две таблици в раздела на схемата и след това ще продължим с EER диаграмата.
Когато щракнете върху Добавяне на таблица икона, редакторът на таблицата се отваря като раздел по-долу:
С помощта на редактора на таблицата променяме името на таблицата и преминаваме към раздела колони (в разделите под редактора), за да влезем в нашите колони. Можем да изберем типа данни (има падащ списък с всички типове данни на MySQL), да зададем стойност по подразбиране, ако е необходимо, и имаме седем квадратчета за отметка на някое от следните свойства:
- PK – Първичен ключ
- NN – Не е нула
- UQ – Уникален
- BIN – двоичен
- UN – Неподписан
- ZF – Нулево запълване
- AI – Автоматично увеличаване
Отидете на Visual
Това е един от начините да добавим нашите таблици, въпреки че можем да ги създадем и с помощта на диаграмите. Ако щракнем върху Добавяне на диаграма икона сега, ще започнем нова, празна диаграма, а това не е това, което искаме. Искаме двете таблици, които току-що създадохме, да бъдат в диаграмата.
Ако отидем в менюто, изберете Model/Create Diagram from Catalog Objects , сега имаме нашата диаграма и сме готови да продължим.
Изберете иконата на таблицата вляво; показалецът се променя на ръка с малка масичка. След това щракнете навсякъде в платното, за да създадете нова таблица.
Сега просто трябва да щракнете двукратно върху таблицата и се появява разделът на редактора, за да редактирате името, колоните, типове и т.н. – по същия начин, както направихме преди.
След като въведете подробностите за колоните за новите таблици, ще сме готови да започнем да рисуваме връзките.
Връзки с чертежи
Във вертикалната лента с инструменти отляво имаме шест налични инструмента за създаване на връзки.
Не се притеснявайте за последното, ще го обясним по-късно. За връзките 1:1 и 1:n имаме два различни типа символи:идентифициращи и неидентифицирани. Какво означава това?
Връзката се счита за идентифицираща, когато съществуването на една таблица е изцяло зависима от другата.
Връзката се счита за идентифицираща, когато съществуването на една таблица е изцяло зависима от другата. Ред в тази таблица зависи от ред в другата таблица. Често срещан пример е да имате отделна таблица за съхраняване на телефони за потребителите. Може да се наложи да го има в друга таблица, защото може да има няколко телефона за един потребител, но всеки ред в тази таблица зависи изцяло от потребителя - той принадлежи на потребителя.
Трябва да сте наясно, че отношенията имат някои последици. Ако искаме да създадем физическите таблици в MySQL, връзките трябва да бъдат картографирани по някакъв начин. Има няколко правила за картографиране на връзки в таблици:
- Взаимоотношения 1:1 . Първичният ключ за една от таблиците е включен като външен ключ в другата таблица.
- 1:n отношения . Първичният ключ на таблицата от страната „1“ се добавя като външен ключ в таблицата от страната „n“.
- n:m отношения . Създава се нова таблица (таблица за присъединяване). Първичният ключ се състои от първичните ключове от двете оригинални таблици.
Идентифициращите релации обикновено се използват за свързващите таблици, създадени от релация много към много. Тези нови таблици зависят изцяло от двете оригинални таблици.
Също така, в случай на идентифициращи връзки 1:1 и 1:n, въведеният външен ключ ще бъде част от първичния ключ за тази таблица, образувайки съставен първичен ключ.
Добрата новина е, че MySQL Workbench познава тези правила по-добре от повечето от нас. Ние просто рисуваме линиите си и външните ключове или таблиците за присъединяване ще бъдат създадени автоматично. Можем също да изберем да го направим ръчно, както ще видим скоро.
За да начертаете връзка, щракнете върху иконата и след това щракнете върху двете таблици, за да се свържете. За връзки един към много, щракнете първо върху страничната маса "много", а след това върху страничната маса "едно". Нека видим как да го направим за връзката n:m учители-предмети и за 1:n учители-класове.
Името по подразбиране, присвоено за външните ключове и за таблиците за свързване, може да бъде променено глобално в Редактиране/Предпочитания/Раздел Модел , или само за настоящия проект в Опции за модел/модел .
Ако не искаме таблици и външни ключове да се генерират по този начин, можем да използваме мистериозния „шести символ“.
"Шестият символ" създава връзка, използвайки съществуващи колони, което означава, че вече сте включили необходимите външни ключове във вашите таблици и сте създали необходимите таблици за свързване (n:m таблици за преобразуване). Тъй като вече сме създали тези Join таблици, нямаме нужда от n:m релации; наличен е само 1:n.
Когато имаме дефинирани всички наши взаимоотношения, нашата диаграма трябва да изглежда така:
Имайте предвид, че използваме нотация на MySQL Workbench по подразбиране за диаграмите, но можете да промените това в Нотация на модел/обект и Нотация на модел/връзка. Това е пример за нашия модел в класическа нотация:
В този момент нашият модел е готов и можем да генерираме SQL, за да създадем MySQL базата данни.
Генериране на SQL
Изберете File/Export/Forward Engineer SQL CREATE Script . Само три екрана на съветника ни делят от генерирането на нашия файл!
Имаме дори опцията да прегледаме и редактираме генерирания SQL, преди да го запазим:
И това е. Щракнете върху завършване, SQL скриптът ще бъде генериран и запазен. Сега можем да го използваме по какъвто и да е начин. Можем да го заредим с помощта на mysql клиента от командния ред:
mysql> SOURCE scriptName.sql
Или можем да използваме MySQL Workbench, за да завършим работата, да се свържем с нашия MySQL сървър и да изпълним скрипта.
Свързване към MySQL сървър
Изберете База данни/Управление на връзки от менюто и щракнете върху НОВО .
Ако не искате да задавате паролата тук, ще бъдете подканени да я въведете, когато е необходимо. Щракнете върху „Тест на връзката“, за да проверите дали параметрите ви са правилни, и след това щракнете върху затваряне.
Сега, за да заредим скрипта, ще използваме SQL редактора. В главното меню изберете База данни/База данни за заявки; прозорец ви подканва да изберете връзка и след това се отваря разделът SQL редактор.
Сега щракнете върху иконата на светкавица, за да изпълните SQL скрипта и вашата база данни ще бъде генерирана!
Бихме могли също така да генерираме базата данни MySQL директно от модела, без да препращаме към действителния файл, като използваме База данни/Препращащ инженер от менюто; обаче намирам за полезно да генерирам скрипта и след това да го използвам, както искам.