Перейти к содержанию

Модуль 2. Разработка базы данных по ER-диаграмме (MySQL через phpMyAdmin)

Цель: создать БД и таблицы по ER, настроить PK/FK/ограничения, затем импортировать Заказчики.json.


0. Важно перед стартом

  • Везде ниже используется один вариант выполнения: Конструктор (phpMyAdmin GUI)

  • Рекомендуемая структура: используем одну БД dairy_demo. Отдельный namespace app не создаётся — таблицы размещаются внутри базы данных.


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

  1. Запустите XAMPP Control Panel.

Открытие XAMPP Control Panel

Рисунок 1 – Открытие XAMPP Control Panel

  1. Включите модуль Apache:

  2. нажмите кнопку Start в строке Apache;

  3. дождитесь, что статус изменится на Running (строка станет активной).

Запуск Apache

Рисунок 2 – Запуск Apache (статус Running)

  1. Включите модуль MySQL:

  2. нажмите кнопку Start в строке MySQL;

  3. дождитесь, что статус изменится на Running.

Запуск MySQL

Рисунок 3 – Запуск MySQL (статус Running)

  1. Откройте phpMyAdmin одним из способов:

Вариант A (из XAMPP):

  • нажмите кнопку Admin в строке MySQL.

Открыть phpMyAdmin через Admin

Рисунок 4 – Открытие phpMyAdmin через кнопку Admin

Вариант B (через браузер):

  • откройте браузер и перейдите по адресу:
http://localhost/phpmyadmin/

Открыть phpMyAdmin через браузер

Рисунок 5 – Открытие phpMyAdmin через браузер (localhost)

  1. Убедитесь, что phpMyAdmin открылся без ошибок и вы видите главную страницу интерфейса (панель слева + рабочая область справа).

Главная страница phpMyAdmin

Рисунок 6 – Главная страница phpMyAdmin

  1. Создайте базу данных:

  2. Перейдите на вкладку Databases (Базы данных).

  3. В поле Create database введите: dairy_demo.
  4. В поле Collation выберите: utf8mb4_unicode_ci (рекомендуется).
  5. Нажмите Create.

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

Рисунок 7 – Создание базы данных dairy_demo

  1. Проверьте, что база данных создана:

  2. в левой панели (дереве) появилась БД dairy_demo;

  3. при клике по ней открывается вкладка 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 (Контрагент)

  1. Выберите базу данных dairy_demo в левой панели phpMyAdmin.

  2. Перейдите на вкладку Structure (Структура) → нажмите Create table (Создать таблицу).

Create table

Рисунок 9 – Создание таблицы

  1. Укажите:

  2. Table name: counterparty

  3. Number of columns: 7
  4. Нажмите Go.

counterparty

Рисунок 10 – Задание имени таблицы

  1. Добавьте поля (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) для создания таблицы.

Primary Key

Рисунок 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 (Номенклатура)

  1. Create → Table… Name: item

  2. Columns:

    • id type: BIGINT NOT NULL AUTO_INCREMENT
    • code type: text, Unique (см. Constraints)
    • name type: text, Not null
    • item_type type: text, Not null
    • unit_default type: text
  3. Constraints:

    • Primary Key: id
    • Unique: code
  4. Check constraint (вкладка Constraints → Check):

    • Name: chk_item_type
    • Expression: item_type IN ('product','material')
  5. Save.

ITEM

Рисунок 13 – ITEM


3.3. PRICE (Прайс-лист)

  1. Create table price

  2. Columns:

    • id BIGINT NOT NULL AUTO_INCREMENT
    • item_id bigint Not null
    • price numeric(12,2) Not null
    • effective_from date (optional)
    • effective_to date (optional)
  3. Foreign Keys:

    • item_idapp.item(id)
    • On update: CASCADE
    • On delete: RESTRICT
  4. Check constraints:

    • price >= 0
    • effective_to IS NULL OR effective_from IS NULL OR effective_to >= effective_from
  5. Save.

PRICE

Рисунок 14 – PRICE


3.4. SPECIFICATION и SPECIFICATION_MATERIAL

SPECIFICATION

  1. Table specification

  2. Columns:

    • id BIGINT NOT NULL AUTO_INCREMENT
    • name text Not null
    • product_item_id bigint Not null
    • output_qty numeric(12,3) Not null default 1
    • output_unit text
    • manufacturer_id text
  3. FK:

    • product_item_idapp.item(id) (RESTRICT)
    • manufacturer_idapp.counterparty(id) (RESTRICT)
  4. Check: output_qty > 0

  5. Save.

PSPECIFICATIONE

Рисунок 15 – SPECIFICATION

SPECIFICATION_MATERIAL

  1. Table specification_material

  2. Columns:

    • id BIGINT NOT NULL AUTO_INCREMENT
    • specification_id bigint Not null
    • material_item_id bigint Not null
    • qty numeric(12,3) Not null
    • unit text
  3. FK:

    • specification_idapp.specification(id) ON DELETE CASCADE
    • material_item_idapp.item(id) ON DELETE RESTRICT
  4. Unique constraint:

    • (specification_id, material_item_id)
  5. Check: qty > 0

  6. Save.

SPECIFICATION_MATERIAL

Рисунок 16 – SPECIFICATION_MATERIAL


3.5. PRODUCTION_ORDER, PRODUCTION_PRODUCT_LINE, PRODUCTION_MATERIAL_LINE

Создайте три таблицы по аналогии с предыдущими:

PRODUCTION_ORDER

  1. Table production_order

  2. Columns:

  3. id BIGINT NOT NULL AUTO_INCREMENT

  4. doc_no VARCHAR(64) NOT NULL
  5. doc_date DATE NULL
  6. manufacturer_id BIGINT NULL
  7. note TEXT NULL

  8. Indexes:

  9. Primary Key: id

  10. Index: idx_prodorder_manufacturer on (manufacturer_id)

  11. FK:

  12. manufacturer_idcounterparty(id)

    • ON UPDATE CASCADE
    • ON DELETE RESTRICT
  13. Storage:

  14. Engine: InnoDB

  15. Charset: utf8mb4
  16. Collation: utf8mb4_unicode_ci

  17. Save.

PRODUCTION_ORDER

Рисунок 17 – PRODUCTION_ORDER

  • затем production_product_line и production_material_line (FK на production_order и item),
  • обязательно выставьте ON DELETE CASCADE на строках документа.

PRODUCTION_PRODUCT_LINE

  1. Table production_product_line

  2. Columns:

  3. id BIGINT NOT NULL AUTO_INCREMENT

  4. production_order_id BIGINT NOT NULL
  5. product_item_id BIGINT NOT NULL
  6. qty DECIMAL(12,3) NOT NULL
  7. unit VARCHAR(32) NULL

  8. Indexes:

  9. Primary Key: id

  10. Index: idx_prodprod_order on (production_order_id)
  11. Index: idx_prodprod_item on (product_item_id)

  12. FK:

  13. production_order_idproduction_order(id)

    • ON UPDATE CASCADE
    • ON DELETE CASCADE
  14. product_item_iditem(id)

    • ON UPDATE CASCADE
    • ON DELETE RESTRICT
  15. Recommended constraint (контроль бизнес-логики):

  16. Check: qty > 0 (если используется MySQL 8.0.16+ можно добавить CHECK, иначе контролируется на уровне приложения)

  17. Storage:

  18. Engine: InnoDB

  19. Charset: utf8mb4
  20. Collation: utf8mb4_unicode_ci

  21. Save.

PRODUCTION_PRODUCT_LINE

Рисунок 18 – PRODUCTION_PRODUCT_LINE

PRODUCTION_MATERIAL_LINE

  1. Table production_material_line

  2. Columns:

  3. id BIGINT NOT NULL AUTO_INCREMENT

  4. production_order_id BIGINT NOT NULL
  5. material_item_id BIGINT NOT NULL
  6. qty DECIMAL(12,3) NOT NULL
  7. unit VARCHAR(32) NULL

  8. Indexes:

  9. Primary Key: id

  10. Index: idx_prodmat_order on (production_order_id)
  11. Index: idx_prodmat_item on (material_item_id)

  12. FK:

  13. production_order_idproduction_order(id)

    • ON UPDATE CASCADE
    • ON DELETE CASCADE
  14. material_item_iditem(id)

    • ON UPDATE CASCADE
    • ON DELETE RESTRICT
  15. Recommended constraint (контроль бизнес-логики):

  16. Check: qty > 0 (если используется MySQL 8.0.16+ можно добавить CHECK, иначе контроль реализуется на уровне приложения)

  17. Storage:

  18. Engine: InnoDB

  19. Charset: utf8mb4
  20. Collation: utf8mb4_unicode_ci

  21. Save.

PRODUCTION_MATERIAL_LINE

Рисунок 19 – PRODUCTION_MATERIAL_LINE


3.6. CUSTOMER_ORDER и CUSTOMER_ORDER_LINE

CUSTOMER_ORDER

  1. Table customer_order

  2. Columns:

  3. id BIGINT NOT NULL AUTO_INCREMENT

  4. doc_no VARCHAR(64) NOT NULL
  5. doc_date DATE NULL
  6. executor_id BIGINT NULL
  7. customer_id BIGINT NULL
  8. total_amount DECIMAL(12,2) NULL

  9. Indexes:

  10. Primary Key: id

  11. Index: idx_custorder_executor on (executor_id)
  12. Index: idx_custorder_customer on (customer_id)

  13. FK:

  14. executor_idcounterparty(id)

    • ON UPDATE CASCADE
    • ON DELETE RESTRICT
  15. customer_idcounterparty(id)

    • ON UPDATE CASCADE
    • ON DELETE RESTRICT
  16. Recommended constraints (контроль бизнес-логики):

  17. total_amount >= 0 (если используется MySQL 8.0.16+ можно добавить CHECK, иначе контроль реализуется на уровне приложения)

  18. Storage:

  19. Engine: InnoDB

  20. Charset: utf8mb4
  21. Collation: utf8mb4_unicode_ci

  22. Save.

CUSTOMER_ORDER

Рисунок 20 – CUSTOMER_ORDER

CUSTOMER_ORDER_LINE

  1. Table customer_order_line

  2. Columns:

  3. id BIGINT NOT NULL AUTO_INCREMENT

  4. customer_order_id BIGINT NOT NULL
  5. product_item_id BIGINT NOT NULL
  6. qty DECIMAL(12,3) NOT NULL
  7. unit VARCHAR(32) NULL
  8. unit_price DECIMAL(12,2) NULL
  9. line_amount DECIMAL(12,2) NULL

  10. Indexes:

  11. Primary Key: id

  12. Index: idx_custline_order on (customer_order_id)
  13. Index: idx_custline_item on (product_item_id)

  14. FK:

  15. customer_order_idcustomer_order(id)

    • ON UPDATE CASCADE
    • ON DELETE CASCADE
  16. product_item_iditem(id)

    • ON UPDATE CASCADE
    • ON DELETE RESTRICT
  17. Recommended constraints (контроль бизнес-логики):

  18. qty > 0

  19. unit_price >= 0
  20. line_amount >= 0

(если используется MySQL 8.0.16+ можно добавить CHECK; иначе контроль реализуется на уровне приложения)

  1. Storage:

  2. Engine: InnoDB

  3. Charset: utf8mb4
  4. Collation: utf8mb4_unicode_ci

  5. Save.

CUSTOMER_ORDER_LINE

Рисунок 21 – CUSTOMER_ORDER_LINE


3.7. COST_CALCULATION и COST_CALCULATION_LINE

COST_CALCULATION

  1. Table cost_calculation

  2. Columns:

  3. id BIGINT NOT NULL AUTO_INCREMENT

  4. calc_date DATE NULL
  5. product_item_id BIGINT NOT NULL
  6. product_qty DECIMAL(12,3) NOT NULL DEFAULT 1.000
  7. total_cost DECIMAL(12,2) NULL

  8. Indexes:

  9. Primary Key: id

  10. Index: idx_costcalc_product on (product_item_id)

  11. FK:

  12. product_item_iditem(id)

    • ON UPDATE CASCADE
    • ON DELETE RESTRICT
  13. Recommended constraints (контроль бизнес-логики):

  14. product_qty > 0

  15. total_cost >= 0

(если используется MySQL 8.0.16+ можно добавить CHECK; иначе контроль реализуется на уровне приложения)

  1. Storage:

  2. Engine: InnoDB

  3. Charset: utf8mb4
  4. Collation: utf8mb4_unicode_ci

  5. Save.

COST_CALCULATION

Рисунок 22 – CUSTOMER_ORDER_LINE

COST_CALCULATION_LINE

  1. Table cost_calculation_line

  2. Columns:

  3. id BIGINT NOT NULL AUTO_INCREMENT

  4. cost_calculation_id BIGINT NOT NULL
  5. material_item_id BIGINT NOT NULL
  6. qty DECIMAL(12,3) NOT NULL
  7. unit VARCHAR(32) NULL
  8. unit_cost DECIMAL(12,2) NULL
  9. line_cost DECIMAL(12,2) NULL

  10. Indexes:

  11. Primary Key: id

  12. Index: idx_costline_calc on (cost_calculation_id)
  13. Index: idx_costline_item on (material_item_id)

  14. FK:

  15. cost_calculation_idcost_calculation(id)

    • ON UPDATE CASCADE
    • ON DELETE CASCADE
  16. material_item_iditem(id)

    • ON UPDATE CASCADE
    • ON DELETE RESTRICT
  17. Recommended constraints (контроль бизнес-логики):

  18. qty > 0

  19. unit_cost >= 0
  20. line_cost >= 0

(если используется MySQL 8.0.16+ можно добавить CHECK; иначе контроль реализуется на уровне приложения)

  1. Storage:

  2. Engine: InnoDB

  3. Charset: utf8mb4
  4. Collation: utf8mb4_unicode_ci

  5. Save.

 COST_CALCULATION_LINE

Рисунок 23 – CUSTOMER_ORDER_LINE

Ниже — раздел 3.8. Связывание таблиц (Foreign Keys) через конструктор phpMyAdmin с добавленными иллюстрациями. Нумерация рисунков начинается с 24.


3.8. Связывание таблиц (Foreign Keys) через конструктор phpMyAdmin


3.8.1. Где настраиваются связи

  1. Откройте таблицу (например, price).
  2. Перейдите во вкладку Structure.
  3. Внизу страницы нажмите Relation view.

Relation view

Рисунок 24 – Переход к вкладке Relation view


3.8.2. PRICE → ITEM

ON UPDATE CASCADE ON DELETE RESTRICT

  1. Таблица: price
  2. Relation view → добавьте:

  3. Column: item_id

  4. Referenced table: item
  5. Referenced column: id
  6. ON UPDATE: CASCADE
  7. ON DELETE: RESTRICT

FK price-item

Рисунок 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

FK specification

Рисунок 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

FK specification_material

Рисунок 27 – Связи specification_material


3.8.5. PRODUCTION_ORDER → COUNTERPARTY

Таблица: production_order → Relation view

Связь:

  • manufacturer_id → counterparty(id)
  • ON UPDATE: CASCADE
  • ON DELETE: RESTRICT

FK production_order

Рисунок 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

FK production_product_line

Рисунок 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

FK production_material_line

Рисунок 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

FK customer_order

Рисунок 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

FK customer_order_line

Рисунок 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

FK cost_calculation

Рисунок 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

FK cost_calculation_line

Рисунок 34 – Связи cost_calculation_line


Проверка корректности связей

После создания всех связей:

  1. Откройте таблицу → Structure
  2. Перейдите в Relation view
  3. Убедитесь, что отображаются все 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

  1. Откройте Microsoft Excel.
  2. Перейдите во вкладку Данные (Data).
  3. Нажмите:
Получить данные → Из файла → Из JSON
  1. Выберите файл Заказчики.json.
  2. Нажмите Импортировать (Import).

2. Преобразование массива в таблицу

После импорта откроется окно Power Query Editor.

  1. Если JSON — это массив ([ {...}, {...} ]), появится тип List.

  2. Нажмите To Table (Преобразовать в таблицу).

  3. В появившемся окне нажмите OK.

  4. В колонке нажмите кнопку расширения (двойная стрелка ⬍).

  5. Выберите поля:

  6. id

  7. name
  8. inn
  9. addres ⚠ (именно так называется поле в JSON)
  10. phone
  11. salesman
  12. buyer

  13. Нажмите OK.


3. Приведение структуры к таблице БД

Теперь необходимо привести названия к структуре таблицы counterparty.

3.1. Переименовать столбцы

В Power Query:

  • addresaddress
  • salesmanis_salesman
  • buyeris_buyer

3.2. Тип поля id

⚠ ВАЖНО

Если таблица в MySQL использует BIGINT AUTO_INCREMENT, то id импортировать НЕ нужно.

Рекомендуемый вариант:

  • удалить столбец id перед сохранением CSV (MySQL создаст его автоматически)

Если вы всё же импортируете id как число:

  1. Выделите столбец id.
  2. Тип данных → Целое число (Whole Number).
  3. Убедитесь, что:
000000003 → 3

(ведущие нули должны исчезнуть)


3.3. Логические поля

В столбцах:

  • is_salesman
  • is_buyer

Замените:

  • TRUE → 1
  • FALSE → 0

Используйте Replace Values.


3.4. Пустые значения ИНН

Если inn = "", оставьте пустым (при импорте MySQL сохранит как NULL).


4. Загрузка данных в Excel

  1. Нажмите Закрыть и загрузить (Close & Load).
  2. Таблица появится на листе Excel.

5. Сохранение в CSV

  1. Файл → Сохранить как.
  2. Тип файла:
CSV UTF-8 (разделители — запятые)
  1. Назовите файл:
Заказчики.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

👉 Пример готового csv


4.2. Импорт через вкладку Import (конструктор)

  1. Откройте phpMyAdmin.
  2. Выберите базу данных dairy_demo.
  3. Выберите таблицу counterparty.
  4. Перейдите во вкладку Import.

Import tab

Рисунок 35 – Переход во вкладку Import


Настройка импорта

  1. В разделе File to import:

  2. нажмите Choose file

  3. выберите Заказчики.csv

  4. Format:

  5. выберите CSV

  6. Отметьте параметры:

  7. ✔ The first line of the file contains the table column names

  8. Character set of the file: utf-8

  9. Укажите разделитель:

  10. , или ; (в зависимости от файла)

Import settings

Рисунок 36 – Настройка параметров CSV-импорта

  1. Нажмите Go.

4.3. Проверка результата

После успешного импорта появится сообщение:

Import has been successfully finished


Проверка через интерфейс

  1. Откройте таблицу counterparty.
  2. Перейдите во вкладку Browse.

  3. Убедитесь, что:

  4. записи добавлены,

  5. значения корректно распределены по колонкам,
  6. нет NULL там, где не должно быть.

4.4. Если импорт не проходит

Частые причины

Ошибка Причина Решение
Неверная кодировка Файл не в UTF-8 Пересохранить как UTF-8
Смещение столбцов Неправильный разделитель Проверить , или ;
Дублирование PK Повторяются id Удалить дубликаты
Тип boolean В CSV указано true/false Использовать 1/0

4.5. Результат

После выполнения раздела:

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

4.6. Заполнение таблиц

Внимание! Заполните таблицы логическими данными, чтобы можно было все правильно отработать.


5. Проверка своей базы данных

Для проверки своей БД после создания таблиц сформируйте визуальную проверку структуры (таблицы/связи) средствами интерфейса.

5.1. Проверка таблиц и связей

  1. Откройте вкладку Structure у базы данных dairy_demo
  2. Убедитесь, что все таблицы присутствуют
  3. Для таблиц со связями откройте Structure → Relation view и проверьте внешние ключи
  4. Расставьте все элементы, чтобы они не пересекались

Создание ER-диаграммы

Рисунок 37 – Проверка структуры и связей

5.3. Сохранение результата проверки

Результат проверки можно зафиксировать скриншотами структуры БД и вкладки Relation view (как подтверждение наличия PK/FK).

Создание ER-диаграммы

Рисунок 38 – Пример фиксации результата (выгрузка в pdf)

5.4. Как получить файл

  1. В phpMyAdmin выберите БД dairy_demo
  2. Вкладка Export
  3. Format: SQL
  4. Выполните экспорт и сохраните файл как dairy_demo_mysql.sql

6. Скачать пример готовой базы данных

  • dairy_demo.sql

👉 dairy_demo.sql