31 KiB
31 KiB
Database Visual Structure - Trasabilitate Quality App
Database: trasabilitate (MariaDB 11.8.3)
Total Tables: 17
Character Set: utf8mb4
Date: January 10, 2026
1. Database Schema Overview
╔═══════════════════════════════════════════════════════════════════════════╗
║ TRASABILITATE DATABASE ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ ║
║ ┌─────────────────────────────────────────────────────────────────────┐ ║
║ │ USER MANAGEMENT & ACCESS CONTROL (6 tables) │ ║
║ │ │ ║
║ │ • users • roles │ ║
║ │ • role_hierarchy • permissions │ ║
║ │ • role_permissions • permission_audit_log │ ║
║ └─────────────────────────────────────────────────────────────────────┘ ║
║ ║
║ ┌─────────────────────────────────────────────────────────────────────┐ ║
║ │ QUALITY MANAGEMENT / PRODUCTION SCANNING (2 tables) │ ║
║ │ │ ║
║ │ • scan1_orders (Phase 1 - Quilting) │ ║
║ │ • scanfg_orders (Final Goods Quality) │ ║
║ └─────────────────────────────────────────────────────────────────────┘ ║
║ ║
║ ┌─────────────────────────────────────────────────────────────────────┐ ║
║ │ DAILY MIRROR / BUSINESS INTELLIGENCE (7 tables) │ ║
║ │ │ ║
║ │ • dm_articles • dm_machines │ ║
║ │ • dm_customers • dm_orders │ ║
║ │ • dm_production_orders • dm_deliveries │ ║
║ │ • dm_daily_summary │ ║
║ └─────────────────────────────────────────────────────────────────────┘ ║
║ ║
║ ┌─────────────────────────────────────────────────────────────────────┐ ║
║ │ LABELS & WAREHOUSE (2 tables) │ ║
║ │ │ ║
║ │ • order_for_labels • warehouse_locations │ ║
║ └─────────────────────────────────────────────────────────────────────┘ ║
║ ║
╚═══════════════════════════════════════════════════════════════════════════╝
2. Entity Relationship Diagram (ERD)
┌──────────────────────────────────────────────────────────────────────────────────┐
│ USER MANAGEMENT HIERARCHY │
└──────────────────────────────────────────────────────────────────────────────────┘
┌─────────────┐ ┌──────────────┐ ┌────────────────┐
│ users │─────────│ roles │───────│ role_hierarchy │
└─────────────┘ └──────────────┘ └────────────────┘
(id) (id) (id)
username name (referenced) role_name (PK)
password access_level level (100-50)
role ←─────────────────────┐ parent_role
email │ description
modules (JSON) │
│
└─── hierarchy level
(100=superadmin)
(90=admin)
(70=manager)
(50=worker)
┌────────────────┐ ┌──────────────┐ ┌─────────────────────┐
│ permissions │ │ role_ │ │ permission_ │
└────────────────┘ │ permissions │ │ audit_log │
(id) ◄──────└──────────────┘──────►└─────────────────────┘
permission_key (M:M mapping) (audit trail)
page role_name ──┐
section permission_ │
action id │
description granted_at │
granted_by │
│
Tracks permission
changes for security
┌──────────────────────────────────────────────────────────────────────────────────┐
│ BUSINESS INTELLIGENCE / DAILY MIRROR (DM) │
└──────────────────────────────────────────────────────────────────────────────────┘
MASTER DATA (Reference Tables)
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ dm_articles │ │ dm_customers │ │ dm_machines │
├──────────────┤ ├──────────────┤ ├──────────────┤
│ article_code │ │customer_code │ │machine_code │
│ description │ │customer_name │ │machine_name │
│ product_ │ │customer_group│ │machine_type │
│ group │ │country │ │department │
│ unit_of_ │ │currency │ │capacity_per_ │
│ measure │ │credit_limit │ │ hour │
└──────────────┘ └──────────────┘ └──────────────┘
△ △ △
│ │ │
│ │ │
┌──────┴──────────────────────┴──────────────────┬──────────┐
│ │ │
│ TRANSACTIONAL DATA │ │
│ │ │
│ ┌─────────────────────┐ ┌──────────────────┴────────┐ │
│ │ dm_orders │ │ dm_production_orders │ │
│ ├─────────────────────┤ ├───────────────────────────┤ │
│ │ order_id │ │ production_order (PK) │ │
│ │ order_line │ │ production_order_line │ │
│ │ customer_code ◄─────┼────│ customer_code ◄──────────┤ │
│ │ article_code ◄──────┼────│ article_code ◄────────────┤ │
│ │ quantity_requested │ │ machine_code ◄────────────┤ │
│ │ delivery_date │ │ quantity_requested │ │
│ │ order_status │ │ opening_date │ │
│ │ production_order │────│ closing_date │ │
│ │ (links to PO) ────┘ │ production_status │ │
│ │ production_status │ │ PHASE TRACKING: │ │
│ │ created_at │ │ • phase_t1_prepared │ │
│ └─────────────────────┘ │ • phase_t2_cut │ │
│ │ • phase_t3_sewing │ │
│ │ (with operator names & │ │
│ │ registration dates) │ │
│ │ created_at │ │
│ └───────────────────────────┘ │
│ │ │
│ │ │
│ ┌──────────────────┴────────┐ │
│ │ │ │
│ ┌──────────────────┴──┐ ┌───────────┴────────┐ │
│ │ dm_deliveries │ │ QUALITY SCANS │ │
│ ├─────────────────────┤ │ │ │
│ │ shipment_id │ │ • scan1_orders │ │
│ │ order_id ◄──────────┼───────────┤ (T1/Quilting) │ │
│ │ customer_code ◄─────┼───────────┤ │ │
│ │ article_code ◄──────┼───────────┤ • scanfg_orders │ │
│ │ quantity_delivered │ │ (Final Goods) │ │
│ │ shipment_date │ │ │ │
│ │ delivery_date │ │ COMMON FIELDS: │ │
│ │ delivery_status │ │ • operator_code │ │
│ │ total_value │ │ • CP_full_code ───┼──┐
│ │ created_at │ │ • quality_code │ │
│ └─────────────────────┘ │ • approved_qty │ │
│ │ • rejected_qty │ │
│ │ • date, time │ │
│ └───────────────────┘ │
│ │
│ AGGREGATED KPIs │
│ │
│ ┌──────────────────────────┐ │
│ │ dm_daily_summary │ │
│ ├──────────────────────────┤ │
│ │ report_date (PK) │ │
│ │ orders_received │ │
│ │ production_launched │ │
│ │ production_finished │ │
│ │ t1_scans_total │ │
│ │ t1_scans_approved │ │
│ │ t1_approval_rate │ │
│ │ t2_scans_total │ │
│ │ t2_approval_rate │ │
│ │ t3_scans_total │ │
│ │ t3_approval_rate │ │
│ │ orders_shipped │ │
│ │ orders_delivered │ │
│ │ on_time_deliveries │ │
│ │ delivery_value │ │
│ │ active_operators │ │
│ │ (aggregated daily via │ │
│ │ batch process) │ │
│ └──────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────────────┐
│ LABELS & WAREHOUSE MANAGEMENT │
└──────────────────────────────────────────────────────────────────────────────────┘
┌──────────────────────┐
│ order_for_labels │
├──────────────────────┤
│ id │
│ comanda_productie │──────────────┐
│ cod_articol │ │
│ descr_com_prod │ │
│ cantitate │ │
│ com_achiz_client │ │ Links to
│ nr_linie_com_client │ │ dm_production_orders
│ customer_name │ │ (production_order)
│ customer_article_num │ │
│ open_for_order │ │
│ printed_labels (0/1) │ │
│ data_livrare │ │
│ dimensiune │ │
│ created_at │ │
│ updated_at │ │
└──────────────────────┘ │
│
▼
┌──────────────────────────┐
│ dm_production_orders │
│ (production_order field) │
└──────────────────────────┘
┌──────────────────────┐
│warehouse_locations │
├──────────────────────┤
│ id │
│ location_code │
│ size │
│ description │
└──────────────────────┘
(standalone)
3. Table Summary by Category
📋 User Management & Access Control (6 tables)
| Table | Records | Purpose | Key Field |
|---|---|---|---|
| users | ~50-100 | User accounts & authentication | id, username |
| roles | 4 | Role definitions | id, name |
| role_hierarchy | 4 | Hierarchical role structure | role_name |
| permissions | 50-100+ | Granular permission definitions | id, permission_key |
| role_permissions | 100-200 | Role→Permission mapping | role_name, permission_id |
| permission_audit_log | 1000+ | Permission change audit trail | id |
Access Levels:
- 100 = superadmin (Full access)
- 90 = admin (Administrative)
- 70 = manager (Module management)
- 50 = worker (Basic operations)
🔍 Quality Management / Production Scanning (2 tables)
| Table | Records | Purpose | Key Field |
|---|---|---|---|
| scan1_orders | 10,000+ | Phase 1 quality scans (T1/Quilting) | Id (PK), CP_full_code (FK) |
| scanfg_orders | 5,000+ | Final goods quality scans | Id (PK), CP_full_code (FK) |
Common Fields (both tables):
operator_code- Worker identifier (4 char)CP_full_code- Production order referencequality_code- 0=Rejected, 1=Approveddate,time- Scan timestampapproved_quantity,rejected_quantity- Count
Production Phases:
- T1 = Quilting preparation
- T2 = Cutting
- T3 = Sewing/Assembly
📊 Business Intelligence / Daily Mirror (7 tables)
Master Data Tables (Reference/Lookup)
| Table | Records | Purpose | Unique Key |
|---|---|---|---|
| dm_articles | 500-2000 | Product catalog | article_code |
| dm_customers | 100-500 | Customer master data | customer_code |
| dm_machines | 20-50 | Production equipment | machine_code |
Transactional Data Tables
| Table | Records | Purpose | Unique Key |
|---|---|---|---|
| dm_orders | 5,000+ | Sales orders & line items | order_line |
| dm_production_orders | 3,000+ | Manufacturing orders | production_order_line |
| dm_deliveries | 5,000+ | Shipment & delivery tracking | shipment_id |
Aggregated Data Table
| Table | Records | Purpose | Unique Key |
|---|---|---|---|
| dm_daily_summary | 365+ | Daily KPI aggregations | report_date |
Daily Metrics Tracked:
- Orders (received, quantity, value)
- Production (launched, finished, in-progress)
- Quality (T1/T2/T3 scans & approval rates)
- Deliveries (shipped, delivered, late)
- Operations (active operators)
🏷️ Labels & Warehouse (2 tables)
| Table | Records | Purpose | Key Field |
|---|---|---|---|
| order_for_labels | 2,000+ | Label printing queue | id, comanda_productie (FK) |
| warehouse_locations | 50-200 | Storage location definitions | location_code |
4. Data Flow & Relationships
USER INTERACTION
│
▼
┌──────────────────┐
│ QUALITY SCANS │
│ (scan1_orders, │
│ scanfg_orders) │
└────────┬─────────┘
│
│ Uses
▼
┌────────────────────────────────┐
│ dm_production_orders (T1 data) │
│ │
│ Links to: │
│ • dm_articles │
│ • dm_customers │
│ • dm_machines │
└────────┬───────────────────────┘
│
├─────────────────────────────────┐
│ │
▼ ▼
┌─────────────────┐ ┌──────────────────┐
│ dm_orders │ │ order_for_labels │
│ (sales orders) │ │ (label printing) │
└────────┬────────┘ └──────────────────┘
│
▼
┌─────────────────┐
│ dm_deliveries │
│ (shipments) │
└─────────────────┘
│
└─ Aggregates into
▼
┌──────────────────┐
│ dm_daily_summary │
│ (KPI Dashboard) │
└──────────────────┘
5. Key Relationships Matrix
Foreign Key References
dm_orders
├─→ dm_customers.customer_code
├─→ dm_articles.article_code
└─→ dm_production_orders.production_order
dm_production_orders
├─→ dm_customers.customer_code
├─→ dm_articles.article_code
└─→ dm_machines.machine_code
dm_deliveries
├─→ dm_orders.order_id
├─→ dm_customers.customer_code
└─→ dm_articles.article_code
scan1_orders & scanfg_orders
└─→ dm_production_orders.production_order (via CP_full_code)
order_for_labels
└─→ dm_production_orders.production_order (via comanda_productie)
role_permissions
├─→ role_hierarchy.role_name
└─→ permissions.id
users
└─→ roles.name (via role field)
6. Database Statistics
Table Size Estimation
| Category | Count | Est. Records | Est. Size |
|---|---|---|---|
| User Management | 6 | ~5,000 | ~50 MB |
| Quality Scans | 2 | ~15,000 | ~150 MB |
| Daily Mirror (Master) | 3 | ~3,000 | ~30 MB |
| Daily Mirror (Transactional) | 3 | ~13,000 | ~350 MB |
| Daily Mirror (Aggregated) | 1 | ~365 | ~5 MB |
| Labels & Warehouse | 2 | ~2,250 | ~50 MB |
| TOTAL | 17 | ~38,000+ | ~635 MB |
7. Critical Indexes
Primary Keys (All Tables)
- Every table has
idor equivalent as PRIMARY KEY
Unique Constraints
users.username
dm_articles.article_code
dm_customers.customer_code
dm_machines.machine_code
dm_orders.order_line
dm_production_orders.production_order_line
warehouse_locations.location_code
permissions.permission_key
role_hierarchy.role_name
dm_daily_summary.report_date
Foreign Key Indexes
dm_orders
├─ customer_code
├─ article_code
├─ delivery_date
└─ order_status
dm_production_orders
├─ customer_code
├─ article_code
├─ delivery_date
└─ production_status
dm_deliveries
├─ order_id
├─ customer_code
├─ article_code
├─ shipment_date
├─ delivery_date
└─ delivery_status
dm_articles
├─ product_group
└─ classification
dm_customers
├─ customer_name
└─ customer_group
dm_machines
├─ machine_type
└─ department
role_permissions
├─ role_name
└─ permission_id
8. Data Types Summary
Numeric Types
INT(11)- IDs, counts, prioritiesBIGINT(20)- Large IDs (order_for_labels)DECIMAL(10,2)- Prices, measurementsDECIMAL(15,2)- Large values, order totalsTINYINT(1)- Boolean flags (0/1)
String Types
VARCHAR(4)- Operator codesVARCHAR(15)- Production codesVARCHAR(50)- Article/customer/machine codesVARCHAR(100)- Names, descriptionsVARCHAR(255)- Long fields (email, descriptions)TEXT- Large text (descriptions, JSON arrays)
Date/Time Types
DATE- Calendar datesTIME- Time-of-dayTIMESTAMP- Creation/update timestampsDATETIME- Precise date+time values
9. Application Modules & Table Usage
LOGIN PAGE (/)
└─→ users
DASHBOARD (/dashboard)
├─→ users
├─→ scan1_orders (statistics)
├─→ scanfg_orders (statistics)
├─→ dm_production_orders (status)
└─→ dm_orders (metrics)
SETTINGS (/settings)
├─→ users
├─→ roles
├─→ role_hierarchy
├─→ permissions
└─→ role_permissions
QUALITY SCANNING
├─ Quality Scan 1 (/scan1)
│ ├─→ scan1_orders (insert/read)
│ └─→ dm_production_orders (lookup)
│
├─ Quality Scan FG (/scanfg)
│ ├─→ scanfg_orders (insert/read)
│ └─→ dm_production_orders (lookup)
│
├─ Quality Reports (/reports_for_quality)
│ └─→ scan1_orders (analytics)
│
└─ Quality Reports FG (/reports_for_quality_fg)
└─→ scanfg_orders (analytics)
LABEL PRINTING (/print)
├─→ order_for_labels (manage queue)
└─→ dm_production_orders (lookup)
WAREHOUSE (/warehouse)
└─→ warehouse_locations (locations)
DAILY MIRROR / BI (/daily_mirror)
├─ Dashboard
│ └─→ dm_daily_summary (KPIs)
│
├─ Articles (/daily_mirror/articles)
│ └─→ dm_articles
│
├─ Customers (/daily_mirror/customers)
│ └─→ dm_customers
│
├─ Machines (/daily_mirror/machines)
│ └─→ dm_machines
│
├─ Orders (/daily_mirror/orders)
│ ├─→ dm_orders
│ ├─→ dm_customers (lookup)
│ └─→ dm_articles (lookup)
│
├─ Production Orders (/daily_mirror/production_orders)
│ ├─→ dm_production_orders
│ ├─→ dm_customers (lookup)
│ ├─→ dm_articles (lookup)
│ └─→ dm_machines (lookup)
│
└─ Deliveries (/daily_mirror/deliveries)
├─→ dm_deliveries
├─→ dm_customers (lookup)
└─→ dm_articles (lookup)
10. Data Maintenance & Optimization
Performance Optimization
- Regular Index Analysis: Monitor slow queries
- Table Optimization:
OPTIMIZE TABLEfor tables > 100MB - Partition Strategy: Consider date-based partitioning for scan tables
- Archiving: Archive quality scans older than 2 years
Backup Strategy
- Daily automated backups →
/srv/quality_app/backups/ - Retention: 30 days (configurable)
- Backup types: Full + data-only incremental backups
Data Cleanup Recommendations
scan1_orders, scanfg_orders
└─→ Archive data older than 2 years
permission_audit_log
└─→ Archive quarterly
dm_daily_summary
└─→ Keep all historical data
11. Production Phases Tracking
The system tracks three phases of production:
Phase T1: Quilting Preparation
- Table:
scan1_orders - Fields in
dm_production_orders:phase_t1_prepared(status)t1_operator_name(who performed)t1_registration_date(when scanned)end_of_quilting(completion date)
Phase T2: Cutting
- Fields in
dm_production_orders:phase_t2_cut(status)t2_operator_namet2_registration_date
Phase T3: Sewing/Assembly
- Fields in
dm_production_orders:phase_t3_sewing(status)t3_operator_namet3_registration_dateend_of_sewing(completion date)
Final Goods (FG) Quality
- Table:
scanfg_orders - After all phases complete
12. Key Metrics & KPIs
Tracked in dm_daily_summary:
PRODUCTION METRICS
├─ Orders Received
├─ Production Launched
├─ Production Finished
├─ Production In-Progress
└─ Active Operators
QUALITY METRICS (by phase)
├─ T1 (Quilting)
│ ├─ Total Scans
│ ├─ Approved Count
│ └─ Approval Rate (%)
│
├─ T2 (Cutting)
│ ├─ Total Scans
│ ├─ Approved Count
│ └─ Approval Rate (%)
│
└─ T3 (Sewing)
├─ Total Scans
├─ Approved Count
└─ Approval Rate (%)
DELIVERY METRICS
├─ Orders Shipped
├─ Orders Delivered
├─ Orders Returned
├─ On-Time Deliveries
├─ Late Deliveries
└─ Delivery Value
ORDER METRICS
├─ Orders Quantity
├─ Orders Value
├─ Unique Customers
└─ Quilting Completed
13. Future Enhancements
Planned Tables
- production_schedule - Production planning calendar
- quality_issues - Defect tracking & analysis
- inventory_movements - Stock tracking
- operator_performance - Worker productivity
Planned Improvements
- Composite indexes for frequent joins
- Table partitioning by date (scan tables)
- Materialized views for complex reports
- Full-text search indexes
Database Health Check Query
-- View database size
SELECT
table_name,
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS 'Size (MB)'
FROM information_schema.TABLES
WHERE table_schema = 'trasabilitate'
ORDER BY (data_length + index_length) DESC;
-- Check row counts
SELECT
table_name,
table_rows
FROM information_schema.TABLES
WHERE table_schema = 'trasabilitate'
ORDER BY table_rows DESC;
-- List all indexes
SELECT
table_name,
index_name,
seq_in_index,
column_name
FROM information_schema.STATISTICS
WHERE table_schema = 'trasabilitate'
ORDER BY table_name, index_name, seq_in_index;
Last Updated: January 10, 2026
Database Version: MariaDB 11.8.3
Total Tables: 17
Total Estimated Records: 38,000+
Total Estimated Size: ~635 MB