🗄 NORMALIZACIA 3NF
Տվյալների բազայի մոդել
MySQL նորմալիզացված կառուցվածք
🔑 PK = Primary Key |
🔗 FK = Foreign Key |
⚙ InnoDB · utf8mb4 · 9 aghyusakan · 2 VIEW
📋 branches
Chyugher
🔑 id
INT PK AUTO
· code
VARCHAR(30) UQ
· name_hy
VARCHAR(120)
· description
TEXT
· image_url
VARCHAR(255)
· sort_order
INT
📋 machine_types
Meqenaneri Tasaker
🔑 id
INT PK AUTO
🔗 branch_id
INT FK → branches
· name_hy
VARCHAR(150)
· description
TEXT
· image_url
VARCHAR(255)
· year_intro
INT
📋 part_categories
Maser i Kategoriaynner
🔑 id
INT PK AUTO
· name_hy
VARCHAR(100)
· icon
VARCHAR(10)
📋 parts
Maser
🔑 id
INT PK AUTO
🔗 branch_id
INT FK → branches
🔗 category_id
INT FK → part_categories
· article
VARCHAR(60) UQ
· name_hy
VARCHAR(150)
· material
VARCHAR(100)
· weight_kg
DECIMAL(10,3)
· unit
VARCHAR(20)
· price_amd
DECIMAL(12,2)
· stock_qty
INT
· description
TEXT
· image_url
VARCHAR(255)
· created_at
TIMESTAMP
📋 machine_parts
Meqena–Mas Kap
🔑 id
INT PK AUTO
🔗 machine_type_id
INT FK → machine_types
🔗 part_id
INT FK → parts
· quantity_needed
INT
· is_critical
TINYINT(1)
· notes
VARCHAR(255)
📋 factories
Hayk. Gorcararanner
🔑 id
INT PK AUTO
· name_hy
VARCHAR(150)
· city
VARCHAR(80)
· founded
INT
· employees
INT
· products
TEXT
· image_url
VARCHAR(255)
· website
VARCHAR(200)
📋 professions
Masnagitutyunner
🔑 id
INT PK AUTO
· title_hy
VARCHAR(120)
· description
TEXT
· salary_range
VARCHAR(80)
· skills
TEXT
· image_url
VARCHAR(255)
📋 contact_messages
Kap Haghordagutyunner
🔑 id
INT PK AUTO
· name
VARCHAR(100)
· email
VARCHAR(150)
· subject
VARCHAR(200)
· message
TEXT
· is_read
TINYINT(1)
· sent_at
TIMESTAMP
📋 query_log
Harcumi Magazini
🔑 id
INT PK AUTO
· query_name
VARCHAR(100)
· executed_at
TIMESTAMP
🔗 Foreign Key Kapcerer
| Ashkhatakayn | FK Bnuttaguny | Hghord Ashkhatakayn | ON DELETE |
|---|---|---|---|
| machine_types | branch_id | branches(id) | CASCADE |
| parts | branch_id | branches(id) | CASCADE |
| parts | category_id | part_categories(id) | RESTRICT |
| machine_parts | machine_type_id | machine_types(id) | CASCADE |
| machine_parts | part_id | parts(id) | CASCADE |
1NF — Arjek Normal Dzev
✅ Bolor bnuttagutnery atomakan en (vera-baz. arbel chka)
✅ Aghyusakany uniq PK uni (id AUTO_INCREMENT)
✅ Mek bnuttaguny — mek arzhek. Krknyalain data chka
✅ Tabels-ery unin anchun anun (branches, parts, etc.)
✅ Maser i kategoriaynner arajin normaldzevov
2NF — Erkrord Normal Dzev
✅ Martavum é 1NF-i bardzratsumov
✅ Bolor bnuttagutnery lriv kaghvats en PK-in
✅ machine_parts-um composite unique key (machine_type_id, part_id)
✅ quantity_needed kaghvats é AMBOGHY composite key-in
✅ parts-um price_amd kaghvats é parts.id-in, oc branch-in
3NF — Errorord Normal Dzev
✅ Transitiv kagharutyun yoxacvats é
✅ parts-um department_name chka (parts.branch_id → branches.name_hy)
✅ machine_types-um branch_name chka (branch_id FK kaxem)
✅ Bolor bnuttagutnery kaghvats en PKin, oc michanavor
✅ VIEW-ery normalizacman texniqan en, oc lracum
👁 SQL VIEW-er
v_branch_stats
SELECT b.id, b.name_hy,
COUNT(DISTINCT mt.id) AS machine_count,
COUNT(DISTINCT p.id) AS part_count,
COALESCE(SUM(p.price_amd
* p.stock_qty),0) AS total_stock_value
FROM branches b
LEFT JOIN machine_types mt
ON mt.branch_id = b.id
LEFT JOIN parts p
ON p.branch_id = b.id
GROUP BY b.id, b.name_hy;
v_machine_parts_full
SELECT mt.name_hy AS maqina,
b.name_hy AS chyugh,
p.article,
p.name_hy AS mas,
pc.name_hy AS kategoria,
mp.quantity_needed,
mp.is_critical,
p.price_amd,
p.stock_qty
FROM machine_parts mp
JOIN machine_types mt ON ...
JOIN branches b ON ...
JOIN parts p ON ...
JOIN part_categories pc ON ...;
🔍 Sech harcum irakanaclnel: toxaknery dinamik SQL harcumner en katagorcum bazayum ev aryanqum arancakin!
📝 Irakan. harcumner qanakutyun: 0
14
Bolor maser
8
Meqenayakan tasaker
5
Ô±Õ¾Õ¿Õ¸Õ´Õ¸Õ¢Õ«Õ¬
3
Ô³ÕµÕ¸Ö‚Õ²Õ¡Õ¿Õ¶Õ¿
3
Ռոբոտաշին
3
Õ€Õ¡Õ½Õ¿Õ¸ÖÕ¡Õ·Õ«
📊 Chyughneri Hashvetvatyun
Ô±Õ¾Õ¿Õ¸Õ´Õ¸Õ¢Õ«Õ¬Õ¡Õ·Õ«Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶
5 mas
2 meqenayakan tasak · 23,630 hzr. ֏
Ô³ÕµÕ¸Ö‚Õ²Õ¡Õ¿Õ¶Õ¿Õ¥Õ½Õ¡Õ¯Õ¡Õ¶ Õ´Õ¥Ö„Õ¥Õ¶Õ¡Õ¶Õ¥Ö€
3 mas
2 meqenayakan tasak · 10,670 hzr. ֏
Ռոբոտաշինություն
3 mas
2 meqenayakan tasak · 21,100 hzr. ֏
Õ€Õ¡Õ½Õ¿Õ¸ÖÕ¡Õ·Õ«Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶
3 mas
2 meqenayakan tasak · 9,880 hzr. ֏
🗂 Kategoriayneri Verabeyal
🔥 Շարժիչ
3
âš™ Õ“Õ¸ÕÕ¡Õ¶ÖÕ¡Õ¿Õ¸Ö‚Öƒ
3
âš¡ Ô·Õ¬Õ¥Õ¯Õ¿Ö€Õ¡Õ¯Õ¡Õ¶
3
🗠ԿմաÕÖ„Õ¡ÕµÕ«Õ¶
2
🔩 Ô¿Õ¡ÕÕ¸Ö
1
🛑 Արգելակային
1
💧 Հիդրավլիկ
1
🚪 Ծածկ/Կաբինա
0
💾 SQL failn bazayi lriv karucvackqy é. Copy-paste areq phpMyAdmin-um.
⬇ Bnelel database.sql
-- MechArmenia DB — 3NF Normalizacvats
-- Bolor tables, indexes, FK-er ev sample data
CREATE DATABASE IF NOT EXISTS mecharmenia
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE mecharmenia;
-- branches, machine_types, part_categories, parts,
-- machine_parts, factories, professions,
-- contact_messages, query_log
-- + 2 VIEW: v_branch_stats, v_machine_parts_full
-- Tesek sql/database.sql fayl lriv SQL kody hamar