Модуль 2. Разработка базы данных по ER-диаграмме (MySQL через phpMyAdmin)
Цель: создать БД и таблицы по ER, настроить PK/FK/ограничения, затем импортировать Заказчики.json.
0. Важно перед стартом
-
Везде ниже используется один вариант выполнения: Конструктор (phpMyAdmin GUI)
-
Рекомендуемая структура: используем одну БД
dairy_demo. Отдельный namespaceappне создаётся — таблицы размещаются внутри базы данных.
1. Создание базы данных
- Запустите XAMPP Control Panel.
Рисунок 1 – Открытие XAMPP Control Panel
-
Включите модуль Apache:
-
нажмите кнопку Start в строке Apache;
- дождитесь, что статус изменится на Running (строка станет активной).
Рисунок 2 – Запуск Apache (статус Running)
-
Включите модуль MySQL:
-
нажмите кнопку Start в строке MySQL;
- дождитесь, что статус изменится на Running.
Рисунок 3 – Запуск MySQL (статус Running)
- Откройте phpMyAdmin одним из способов:
Вариант A (из XAMPP):
- нажмите кнопку Admin в строке MySQL.
Рисунок 4 – Открытие phpMyAdmin через кнопку Admin
Вариант B (через браузер):
- откройте браузер и перейдите по адресу:
http://localhost/phpmyadmin/
Рисунок 5 – Открытие phpMyAdmin через браузер (localhost)
- Убедитесь, что phpMyAdmin открылся без ошибок и вы видите главную страницу интерфейса (панель слева + рабочая область справа).
Рисунок 6 – Главная страница phpMyAdmin
-
Создайте базу данных:
-
Перейдите на вкладку Databases (Базы данных).
- В поле Create database введите:
dairy_demo. - В поле Collation выберите:
utf8mb4_unicode_ci(рекомендуется). - Нажмите Create.
Рисунок 7 – Создание базы данных dairy_demo
-
Проверьте, что база данных создана:
-
в левой панели (дереве) появилась БД dairy_demo;
- при клике по ней открывается вкладка Structure.
Рисунок 8 – База данных dairy_demo появилась в дереве phpMyAdmin
Примечание: если при открытии
http://localhost/phpmyadmin/появляется ошибка, проверьте, что Apache и MySQL действительно в статусе Running, и что порты не заняты другими программами (часто конфликтует порт 80 у Apache).
2. Логическое разделение app (как аналог схемы)
Все таблицы создаются в выбранной базе данных dairy_demo.
Если по требованиям нужно визуально отделять таблицы “приложения”, используйте префиксы имён:
app_counterparty,app_item,app_priceи т. д.
3. Создание таблиц по ER-диаграмме (через GUI)
Ниже перечислены основные сущности. Для каждой — описание через конструктор.
3.1. COUNTERPARTY (Контрагент)
-
Выберите базу данных
dairy_demoв левой панели phpMyAdmin. -
Перейдите на вкладку Structure (Структура) → нажмите Create table (Создать таблицу).
Рисунок 9 – Создание таблицы
-
Укажите:
-
Table name:
counterparty - Number of columns: 7
- Нажмите Go.
Рисунок 10 – Задание имени таблицы
- Добавьте поля (Columns):
| Field | Type | Length | Null | Default | Index | Extra |
|---|---|---|---|---|---|---|
| id | BIGINT | NO | PRIMARY | AUTO_INCREMENT | ||
| name | VARCHAR | 255 | NO | |||
| inn | VARCHAR | 32 | YES | NULL | ||
| address | VARCHAR | 255 | YES | NULL | ||
| phone | VARCHAR | 64 | YES | NULL | ||
| is_salesman | TINYINT | 1 | NO | 0 | ||
| is_buyer | TINYINT | 1 | NO | 0 |
Обратите внимание:
-
Для
id:- установите Index → PRIMARY
- включите A_I (Auto Increment)
-
Для
name:- снимите флаг
Null(то есть NOT NULL)
- снимите флаг
-
Для
is_salesmanиis_buyer:- тип
TINYINT(1) - Default =
0 - NOT NULL
Рисунок 11 – Настройка структуры таблицы
counterparty - тип
-
Внизу формы проверьте:
-
Storage Engine: InnoDB
-
Collation:
utf8mb4_unicode_ci -
Нажмите Save (или Go) для создания таблицы.
Рисунок 12 – Проверка PRIMARY KEY и AUTO_INCREMENT
Проверка
После сохранения:
- откройте таблицу
counterparty - вкладка Structure
-
убедитесь, что:
-
у поля
idуказан ключ 🔑 PRIMARY - в столбце Extra указано
AUTO_INCREMENT
При необходимости можно проверить через SQL:
SHOW CREATE TABLE counterparty;
В выводе должно присутствовать:
PRIMARY KEY (`id`)
и
`id` bigint NOT NULL AUTO_INCREMENT
3.2. ITEM (Номенклатура)
-
Create → Table… Name:
item -
Columns:
idtype: BIGINT NOT NULL AUTO_INCREMENTcodetype:text, Unique (см. Constraints)nametype:text, Not nullitem_typetype:text, Not nullunit_defaulttype:text
-
Constraints:
- Primary Key:
id - Unique:
code
- Primary Key:
-
Check constraint (вкладка Constraints → Check):
- Name:
chk_item_type - Expression:
item_type IN ('product','material')
- Name:
-
Save.
Рисунок 13 – ITEM
3.3. PRICE (Прайс-лист)
-
Create table
price -
Columns:
idBIGINT NOT NULL AUTO_INCREMENTitem_idbigint Not nullpricenumeric(12,2) Not nulleffective_fromdate (optional)effective_todate (optional)
-
Foreign Keys:
item_id→app.item(id)- On update: CASCADE
- On delete: RESTRICT
-
Check constraints:
price >= 0effective_to IS NULL OR effective_from IS NULL OR effective_to >= effective_from
-
Save.
Рисунок 14 – PRICE
3.4. SPECIFICATION и SPECIFICATION_MATERIAL
SPECIFICATION
-
Table
specification -
Columns:
idBIGINT NOT NULL AUTO_INCREMENTnametext Not nullproduct_item_idbigint Not nulloutput_qtynumeric(12,3) Not null default 1output_unittextmanufacturer_idtext
-
FK:
product_item_id→app.item(id)(RESTRICT)manufacturer_id→app.counterparty(id)(RESTRICT)
-
Check:
output_qty > 0 -
Save.
Рисунок 15 – SPECIFICATION
SPECIFICATION_MATERIAL
-
Table
specification_material -
Columns:
idBIGINT NOT NULL AUTO_INCREMENTspecification_idbigint Not nullmaterial_item_idbigint Not nullqtynumeric(12,3) Not nullunittext
-
FK:
specification_id→app.specification(id)ON DELETE CASCADEmaterial_item_id→app.item(id)ON DELETE RESTRICT
-
Unique constraint:
(specification_id, material_item_id)
-
Check:
qty > 0 -
Save.
Рисунок 16 – SPECIFICATION_MATERIAL
3.5. PRODUCTION_ORDER, PRODUCTION_PRODUCT_LINE, PRODUCTION_MATERIAL_LINE
Создайте три таблицы по аналогии с предыдущими:
PRODUCTION_ORDER
-
Table
production_order -
Columns:
-
idBIGINT NOT NULL AUTO_INCREMENT doc_noVARCHAR(64) NOT NULLdoc_dateDATE NULLmanufacturer_idBIGINT NULL-
noteTEXT NULL -
Indexes:
-
Primary Key:
id -
Index:
idx_prodorder_manufactureron (manufacturer_id) -
FK:
-
manufacturer_id→counterparty(id)- ON UPDATE CASCADE
- ON DELETE RESTRICT
-
Storage:
-
Engine:
InnoDB - Charset:
utf8mb4 -
Collation:
utf8mb4_unicode_ci -
Save.
Рисунок 17 – PRODUCTION_ORDER
- затем
production_product_lineиproduction_material_line(FK наproduction_orderиitem), - обязательно выставьте
ON DELETE CASCADEна строках документа.
PRODUCTION_PRODUCT_LINE
-
Table
production_product_line -
Columns:
-
idBIGINT NOT NULL AUTO_INCREMENT production_order_idBIGINT NOT NULLproduct_item_idBIGINT NOT NULLqtyDECIMAL(12,3) NOT NULL-
unitVARCHAR(32) NULL -
Indexes:
-
Primary Key:
id - Index:
idx_prodprod_orderon (production_order_id) -
Index:
idx_prodprod_itemon (product_item_id) -
FK:
-
production_order_id→production_order(id)- ON UPDATE CASCADE
- ON DELETE CASCADE
-
product_item_id→item(id)- ON UPDATE CASCADE
- ON DELETE RESTRICT
-
Recommended constraint (контроль бизнес-логики):
-
Check:
qty > 0(если используется MySQL 8.0.16+ можно добавить CHECK, иначе контролируется на уровне приложения) -
Storage:
-
Engine:
InnoDB - Charset:
utf8mb4 -
Collation:
utf8mb4_unicode_ci -
Save.
Рисунок 18 – PRODUCTION_PRODUCT_LINE
PRODUCTION_MATERIAL_LINE
-
Table
production_material_line -
Columns:
-
idBIGINT NOT NULL AUTO_INCREMENT production_order_idBIGINT NOT NULLmaterial_item_idBIGINT NOT NULLqtyDECIMAL(12,3) NOT NULL-
unitVARCHAR(32) NULL -
Indexes:
-
Primary Key:
id - Index:
idx_prodmat_orderon (production_order_id) -
Index:
idx_prodmat_itemon (material_item_id) -
FK:
-
production_order_id→production_order(id)- ON UPDATE CASCADE
- ON DELETE CASCADE
-
material_item_id→item(id)- ON UPDATE CASCADE
- ON DELETE RESTRICT
-
Recommended constraint (контроль бизнес-логики):
-
Check:
qty > 0(если используется MySQL 8.0.16+ можно добавить CHECK, иначе контроль реализуется на уровне приложения) -
Storage:
-
Engine:
InnoDB - Charset:
utf8mb4 -
Collation:
utf8mb4_unicode_ci -
Save.
Рисунок 19 – PRODUCTION_MATERIAL_LINE
3.6. CUSTOMER_ORDER и CUSTOMER_ORDER_LINE
CUSTOMER_ORDER
-
Table
customer_order -
Columns:
-
idBIGINT NOT NULL AUTO_INCREMENT doc_noVARCHAR(64) NOT NULLdoc_dateDATE NULLexecutor_idBIGINT NULLcustomer_idBIGINT NULL-
total_amountDECIMAL(12,2) NULL -
Indexes:
-
Primary Key:
id - Index:
idx_custorder_executoron (executor_id) -
Index:
idx_custorder_customeron (customer_id) -
FK:
-
executor_id→counterparty(id)- ON UPDATE CASCADE
- ON DELETE RESTRICT
-
customer_id→counterparty(id)- ON UPDATE CASCADE
- ON DELETE RESTRICT
-
Recommended constraints (контроль бизнес-логики):
-
total_amount >= 0(если используется MySQL 8.0.16+ можно добавить CHECK, иначе контроль реализуется на уровне приложения) -
Storage:
-
Engine:
InnoDB - Charset:
utf8mb4 -
Collation:
utf8mb4_unicode_ci -
Save.
Рисунок 20 – CUSTOMER_ORDER
CUSTOMER_ORDER_LINE
-
Table
customer_order_line -
Columns:
-
idBIGINT NOT NULL AUTO_INCREMENT customer_order_idBIGINT NOT NULLproduct_item_idBIGINT NOT NULLqtyDECIMAL(12,3) NOT NULLunitVARCHAR(32) NULLunit_priceDECIMAL(12,2) NULL-
line_amountDECIMAL(12,2) NULL -
Indexes:
-
Primary Key:
id - Index:
idx_custline_orderon (customer_order_id) -
Index:
idx_custline_itemon (product_item_id) -
FK:
-
customer_order_id→customer_order(id)- ON UPDATE CASCADE
- ON DELETE CASCADE
-
product_item_id→item(id)- ON UPDATE CASCADE
- ON DELETE RESTRICT
-
Recommended constraints (контроль бизнес-логики):
-
qty > 0 unit_price >= 0line_amount >= 0
(если используется MySQL 8.0.16+ можно добавить CHECK; иначе контроль реализуется на уровне приложения)
-
Storage:
-
Engine:
InnoDB - Charset:
utf8mb4 -
Collation:
utf8mb4_unicode_ci -
Save.
Рисунок 21 – CUSTOMER_ORDER_LINE
3.7. COST_CALCULATION и COST_CALCULATION_LINE
COST_CALCULATION
-
Table
cost_calculation -
Columns:
-
idBIGINT NOT NULL AUTO_INCREMENT calc_dateDATE NULLproduct_item_idBIGINT NOT NULLproduct_qtyDECIMAL(12,3) NOT NULL DEFAULT 1.000-
total_costDECIMAL(12,2) NULL -
Indexes:
-
Primary Key:
id -
Index:
idx_costcalc_producton (product_item_id) -
FK:
-
product_item_id→item(id)- ON UPDATE CASCADE
- ON DELETE RESTRICT
-
Recommended constraints (контроль бизнес-логики):
-
product_qty > 0 total_cost >= 0
(если используется MySQL 8.0.16+ можно добавить CHECK; иначе контроль реализуется на уровне приложения)
-
Storage:
-
Engine:
InnoDB - Charset:
utf8mb4 -
Collation:
utf8mb4_unicode_ci -
Save.
Рисунок 22 – CUSTOMER_ORDER_LINE
COST_CALCULATION_LINE
-
Table
cost_calculation_line -
Columns:
-
idBIGINT NOT NULL AUTO_INCREMENT cost_calculation_idBIGINT NOT NULLmaterial_item_idBIGINT NOT NULLqtyDECIMAL(12,3) NOT NULLunitVARCHAR(32) NULLunit_costDECIMAL(12,2) NULL-
line_costDECIMAL(12,2) NULL -
Indexes:
-
Primary Key:
id - Index:
idx_costline_calcon (cost_calculation_id) -
Index:
idx_costline_itemon (material_item_id) -
FK:
-
cost_calculation_id→cost_calculation(id)- ON UPDATE CASCADE
- ON DELETE CASCADE
-
material_item_id→item(id)- ON UPDATE CASCADE
- ON DELETE RESTRICT
-
Recommended constraints (контроль бизнес-логики):
-
qty > 0 unit_cost >= 0line_cost >= 0
(если используется MySQL 8.0.16+ можно добавить CHECK; иначе контроль реализуется на уровне приложения)
-
Storage:
-
Engine:
InnoDB - Charset:
utf8mb4 -
Collation:
utf8mb4_unicode_ci -
Save.
Рисунок 23 – CUSTOMER_ORDER_LINE
Ниже — раздел 3.8. Связывание таблиц (Foreign Keys) через конструктор phpMyAdmin с добавленными иллюстрациями. Нумерация рисунков начинается с 24.
3.8. Связывание таблиц (Foreign Keys) через конструктор phpMyAdmin
3.8.1. Где настраиваются связи
- Откройте таблицу (например,
price). - Перейдите во вкладку Structure.
- Внизу страницы нажмите Relation view.
Рисунок 24 – Переход к вкладке Relation view
3.8.2. PRICE → ITEM
ON UPDATE CASCADE
ON DELETE RESTRICT
- Таблица:
price -
Relation view → добавьте:
-
Column:
item_id - Referenced table:
item - Referenced column:
id - ON UPDATE:
CASCADE - ON DELETE:
RESTRICT
Рисунок 25 – Связь price → item
Нажмите Save.
3.8.3. SPECIFICATION → ITEM, COUNTERPARTY
Таблица: specification → Relation view
Связь 1: product_item_id → item(id)
- ON UPDATE: CASCADE
- ON DELETE: RESTRICT
Связь 2: manufacturer_id → counterparty(id)
- ON UPDATE: CASCADE
- ON DELETE: RESTRICT
Рисунок 26 – Связи specification
3.8.4. SPECIFICATION_MATERIAL → SPECIFICATION, ITEM
Таблица: specification_material → Relation view
Связь 1: specification_id → specification(id)
- ON UPDATE: CASCADE
- ON DELETE: CASCADE
Связь 2: material_item_id → item(id)
- ON UPDATE: CASCADE
- ON DELETE: RESTRICT
Рисунок 27 – Связи specification_material
3.8.5. PRODUCTION_ORDER → COUNTERPARTY
Таблица: production_order → Relation view
Связь:
- manufacturer_id → counterparty(id)
- ON UPDATE: CASCADE
- ON DELETE: RESTRICT
Рисунок 28 – Связь production_order
3.8.6. PRODUCTION_PRODUCT_LINE → PRODUCTION_ORDER, ITEM
Таблица: production_product_line → Relation view
Связь 1: production_order_id → production_order(id)
- ON UPDATE: CASCADE
- ON DELETE: CASCADE
Связь 2: product_item_id → item(id)
- ON UPDATE: CASCADE
- ON DELETE: RESTRICT
Рисунок 29 – Связи production_product_line
3.8.7. PRODUCTION_MATERIAL_LINE → PRODUCTION_ORDER, ITEM
Таблица: production_material_line → Relation view
Связь 1: production_order_id → production_order(id)
- ON UPDATE: CASCADE
- ON DELETE: CASCADE
Связь 2: material_item_id → item(id)
- ON UPDATE: CASCADE
- ON DELETE: RESTRICT
Рисунок 30 – Связи production_material_line
3.8.8. CUSTOMER_ORDER → COUNTERPARTY
Таблица: customer_order → Relation view
Связь 1: executor_id → counterparty(id)
- ON UPDATE: CASCADE
- ON DELETE: RESTRICT
Связь 2: customer_id → counterparty(id)
- ON UPDATE: CASCADE
- ON DELETE: RESTRICT
Рисунок 31 – Связи customer_order
3.8.9. CUSTOMER_ORDER_LINE → CUSTOMER_ORDER, ITEM
Таблица: customer_order_line → Relation view
Связь 1: customer_order_id → customer_order(id)
- ON UPDATE: CASCADE
- ON DELETE: CASCADE
Связь 2: product_item_id → item(id)
- ON UPDATE: CASCADE
- ON DELETE: RESTRICT
Рисунок 32 – Связи customer_order_line
3.8.10. COST_CALCULATION → ITEM
Таблица: cost_calculation → Relation view
- product_item_id → item(id)
- ON UPDATE: CASCADE
- ON DELETE: RESTRICT
Рисунок 33 – Связь cost_calculation
3.8.11. COST_CALCULATION_LINE → COST_CALCULATION, ITEM
Таблица: cost_calculation_line → Relation view
Связь 1: cost_calculation_id → cost_calculation(id)
- ON UPDATE: CASCADE
- ON DELETE: CASCADE
Связь 2: material_item_id → item(id)
- ON UPDATE: CASCADE
- ON DELETE: RESTRICT
Рисунок 34 – Связи cost_calculation_line
Проверка корректности связей
После создания всех связей:
- Откройте таблицу → Structure
- Перейдите в Relation view
- Убедитесь, что отображаются все Foreign Key ограничения
Дополнительно можно проверить через SQL:
SHOW CREATE TABLE production_product_line;
В выводе должны присутствовать строки:
FOREIGN KEY (...) REFERENCES ...
ON UPDATE CASCADE
ON DELETE CASCADE / RESTRICT
4. Импорт Заказчики.json (только через конструктор phpMyAdmin)
В данном разделе используется исключительно графический интерфейс phpMyAdmin, без вкладки SQL и без ручного написания запросов.
Важное ограничение
phpMyAdmin не поддерживает прямой импорт JSON-массива в структуру таблицы.
Поэтому корректный способ работы через конструктор:
JSON → CSV → Import (через вкладку Import)
Это полностью графический и устойчивый способ.
4.1. Подготовка файла
Шаг 1. Откройте Заказчики.json
Используйте один из инструментов:
- Microsoft Excel (Power Query)
- Visual Studio Code
- Notepad++
- LibreOffice Calc
Преобразование через Microsoft Excel (Power Query)
Подходит для пользователей без навыков программирования. Работает в Excel 2016+ / Microsoft 365.
1. Открытие JSON в Excel
- Откройте Microsoft Excel.
- Перейдите во вкладку Данные (Data).
- Нажмите:
Получить данные → Из файла → Из JSON
- Выберите файл
Заказчики.json. - Нажмите Импортировать (Import).
2. Преобразование массива в таблицу
После импорта откроется окно Power Query Editor.
-
Если JSON — это массив (
[ {...}, {...} ]), появится тип List. -
Нажмите To Table (Преобразовать в таблицу).
-
В появившемся окне нажмите OK.
-
В колонке нажмите кнопку расширения (двойная стрелка ⬍).
-
Выберите поля:
-
id
- name
- inn
- addres ⚠ (именно так называется поле в JSON)
- phone
- salesman
-
buyer
-
Нажмите OK.
3. Приведение структуры к таблице БД
Теперь необходимо привести названия к структуре таблицы counterparty.
3.1. Переименовать столбцы
В Power Query:
addres→ addresssalesman→ is_salesmanbuyer→ is_buyer
3.2. Тип поля id
⚠ ВАЖНО
Если таблица в MySQL использует BIGINT AUTO_INCREMENT, то id импортировать НЕ нужно.
Рекомендуемый вариант:
- удалить столбец
idперед сохранением CSV (MySQL создаст его автоматически)
Если вы всё же импортируете id как число:
- Выделите столбец
id. - Тип данных → Целое число (Whole Number).
- Убедитесь, что:
000000003 → 3
(ведущие нули должны исчезнуть)
3.3. Логические поля
В столбцах:
is_salesmanis_buyer
Замените:
- TRUE → 1
- FALSE → 0
Используйте Replace Values.
3.4. Пустые значения ИНН
Если inn = "", оставьте пустым
(при импорте MySQL сохранит как NULL).
4. Загрузка данных в Excel
- Нажмите Закрыть и загрузить (Close & Load).
- Таблица появится на листе Excel.
5. Сохранение в CSV
- Файл → Сохранить как.
- Тип файла:
CSV UTF-8 (разделители — запятые)
- Назовите файл:
Заказчики.csv
⚠ Обязательно проверьте:
- Кодировка — UTF-8
- Первая строка — заголовки столбцов
- Логические значения — 1/0
- Нет ведущих нулей в id (если id используется)
Итоговая структура CSV (для BIGINT id)
Если id импортируется как число:
id,name,inn,address,phone,is_salesman,is_buyer
3,ООО "Ромашка",4140784214,"г. Омск, ул. Строителей, 294",+79882584546,0,1
Рекомендуемый вариант (если id AUTO_INCREMENT)
Удалите колонку id перед сохранением.
Тогда CSV будет:
name,inn,address,phone,is_salesman,is_buyer
ООО "Ромашка",4140784214,"г. Омск, ул. Строителей, 294",+79882584546,0,1
4.2. Импорт через вкладку Import (конструктор)
- Откройте phpMyAdmin.
- Выберите базу данных
dairy_demo. - Выберите таблицу
counterparty. - Перейдите во вкладку Import.
Рисунок 35 – Переход во вкладку Import
Настройка импорта
-
В разделе File to import:
-
нажмите Choose file
-
выберите
Заказчики.csv -
Format:
-
выберите CSV
-
Отметьте параметры:
-
✔ The first line of the file contains the table column names
-
Character set of the file: utf-8
-
Укажите разделитель:
-
,или;(в зависимости от файла)
Рисунок 36 – Настройка параметров CSV-импорта
- Нажмите Go.
4.3. Проверка результата
После успешного импорта появится сообщение:
Import has been successfully finished
Проверка через интерфейс
- Откройте таблицу
counterparty. -
Перейдите во вкладку Browse.
-
Убедитесь, что:
-
записи добавлены,
- значения корректно распределены по колонкам,
- нет NULL там, где не должно быть.
4.4. Если импорт не проходит
Частые причины
| Ошибка | Причина | Решение |
|---|---|---|
| Неверная кодировка | Файл не в UTF-8 | Пересохранить как UTF-8 |
| Смещение столбцов | Неправильный разделитель | Проверить , или ; |
| Дублирование PK | Повторяются id |
Удалить дубликаты |
| Тип boolean | В CSV указано true/false |
Использовать 1/0 |
4.5. Результат
После выполнения раздела:
- таблица
counterpartyзаполнена данными; - структура не нарушена;
- внешние ключи сохраняют целостность;
- используется только графический интерфейс.
4.6. Заполнение таблиц
Внимание! Заполните таблицы логическими данными, чтобы можно было все правильно отработать.
5. Проверка своей базы данных
Для проверки своей БД после создания таблиц сформируйте визуальную проверку структуры (таблицы/связи) средствами интерфейса.
5.1. Проверка таблиц и связей
- Откройте вкладку Structure у базы данных
dairy_demo - Убедитесь, что все таблицы присутствуют
- Для таблиц со связями откройте Structure → Relation view и проверьте внешние ключи
- Расставьте все элементы, чтобы они не пересекались
Рисунок 37 – Проверка структуры и связей
5.3. Сохранение результата проверки
Результат проверки можно зафиксировать скриншотами структуры БД и вкладки Relation view (как подтверждение наличия PK/FK).
Рисунок 38 – Пример фиксации результата (выгрузка в pdf)
5.4. Как получить файл
- В phpMyAdmin выберите БД
dairy_demo - Вкладка Export
- Format: SQL
- Выполните экспорт и сохраните файл как
dairy_demo_mysql.sql
6. Скачать пример готовой базы данных
dairy_demo.sql




































