TARGET CYBERLAB · 9-SINF

Relyatsion Baza va SQL: Laboratoriya Simulyatori

🏆 Ball: 0 / 10
⚡ Shablonlar:
SQL> So'rovlar Muharriri
Buyruqni nuqta-vergul (;) bilan yakunlang
📊 So'rov Natijasi: Tayyor
0 qator 0.0 ms
Natijalarni ko'rish uchun yuqoridagi 'Bajarish' tugmasini bosing.
[Target CyberLab SQLite 3 Engine v2026.10] Type standard SQL queries or dot-commands (.tables, .schema). Foreign keys: ON. Constraints: ENFORCED.
🎉 🏆 🌟
Tabriklaymiz! Barcha 6 ta Missiya 10/10 Ballga Bajarildi!

Siz relyatsion arxitektura, PK-FK aloqalari, JOIN agregatsiyasi, B-Tree indekslar, ACID tranzaksiyalari va SQL Injection himoyasini to'liq egalladingiz. Bahongizni qayd etish uchun ekranni o'qituvchiga ko'rsating!

⚡ Tezlik Dueli: To'liq Skanerlash (Sequential Scan) vs B-Tree Indeks

Nega ma'lumotlar bazasi oddiy fayllardan 1000 barobar tezroq ishlaydi? O'zingiz ko'ring: 1000 ta qator orasidan ID 842 bo'lgan buyurtmani qidiramiz.

1 · Sequential Scan (Indekssiz)

O(N) Murakkablik

Baza har bir satrni diskdan birma-bir o'qib chiqadi. 1 million yozuv bo'lsa server qizib ketadi!

Taqqoslar
0
Disk I/O
0 blok
Vaqt
0 ms
Kutilmoqda... 0%
EXPLAIN: SCAN TABLE orders [Row-by-Row disk reading]

2 · B-Tree Scan (Indeksli)

O(log N) Tezlik

B-Tree har qadamda qidiruv maydonini ikkiga bo'ladi. 1000 ta qator bor-yo'g'i 3 sakrashda topiladi!

Taqqoslar
0
Disk I/O
0 blok
Vaqt
0 ms
Kutilmoqda... 0 sakrash
Ildiz (500)
→
Filial (750)
→
Filial (875)
→
Barg (842) 🎯
EXPLAIN: SEARCH TABLE orders USING INDEX idx_orders_id [3 binary jumps]

🛡️ SQL Injection Arenasi: Xakerlik Hujumi va Prepared Statements Himoyasi

Maktab portali kirish formasini mashhur ' OR '1'='1 kodi bilan buzishga urinib ko'ring, so'ngra Prepared Statement himoyasini faollashtiring.

🎯 Tizimga Kirish (Target Portal)
Himoyalangan
Hujum namunalari: ' OR '1'='1 admin' -- jasur@target.uz (Oddiy)
🔬 Serverdagi SQL Tahlili (AST & Lexer)

🏦 ACID Tranzaksiyalar: Bank Tizimidagi Avariya Simulyatori

1-odamdan pul yechilib, 2-odamga yetmasdan server o'chib qolsa nima bo'ladi? Oddiy kod va BEGIN...COMMIT kafolatini amalda sinab ko'ring.

Mijoz 1: Jasur Aliyev (Hisob #101)
500,000 UZS
Oraliq: 0 UZS
Mijoz 2: Malika Karimova (Hisob #102)
1,200,000 UZS
Oraliq: 0 UZS
O'tkazma summasi: UZS
1. UPDATE users SET balance = balance - 200000 WHERE id = 1; Kutilmoqda
2. ⚡ SERVER CRASH SIMULATION (Elektr uzilishi / Tarmoq uzilishi) Kutilmoqda
3. UPDATE users SET balance = balance + 200000 WHERE id = 2; Kutilmoqda
4. COMMIT (Tasdiqlash) yoki Avtomatik ROLLBACK Kutilmoqda

🗺️ Relyatsion Sxema: Jadvallar, Kalitlar va Aloqalar

Relyatsion bazada ma'lumotlar bitta katta faylga tiqilmaydi. Jadvallar Primary Key (PK) va Foreign Key (FK) orqali toza bog'lanadi.

users (Mijozlar)
id : INTEGER PK
full_name : TEXT NOT NULL
email : TEXT UNIQUE
balance : INTEGER >= 0
created_at : DATETIME DEFAULT
1 : N Aloqa
orders.user_id ➔ users.id
ON DELETE CASCADE
orders (Buyurtmalar)
id : INTEGER PK
user_id : INTEGER FK
product_name : TEXT NOT NULL
amount : INTEGER > 0
status : TEXT IN(...)
Nega bu tuzilma buzilmas?
1. Baza hech qachon mavjud bo'lmagan foydalanuvchiga buyurtma biriktirishga yo'l qo'ymaydi (FOREIGN KEY).
2. Balans hech qachon manfiy bo'lib ketmaydi (CHECK balance >= 0).
3. Foydalanuvchi o'chirilganda uning barcha buyurtmalari avtomatik tozalanadi (ON DELETE CASCADE), ortiqcha yetim (ghost) qatorlar qolmaydi!