AXV

Ma’lumotlar bazalari va RDBMS asoslari

Faylli tizimlardan relyatsion modelga, Edgar Codd kashfiyoti, ACID tamoyillari va SQL

10-sinf BI va Machine Learning 2-hafta · 6-dars

Bugungi dars rejasi

Fayllar vs DB

Nega CSV va JSON katta tizimlarda yetarli emas? Concurrency, yaxlitlik va xavfsizlik.

Relatsion model

Edgar Codd modeli, jadvallar anatomiyasi, Primary Key (PK) va Foreign Key (FK).

ACID & Amaliyot

Tranzaksiyalarning 4 ta kafolati, ERD tushunchasi va Python `sqlite3` da JOIN so'rovlari.

01

Ma'lumotlar bazasi nima?

Fayllar (CSV, JSON) nega yetarli emas va RDBMS tizimlarining tub ustunliklari

Fayllar (CSV/Excel) va RDBMS taqqoslash

Fayllar muammosi (CSV)

1000 kishi bir vaqtda yozganda fayl qulflanadi (file lock) yoki ma'lumotlar butkul buziladi.

Hech qanday cheklov yo'q: yosh ustuniga matn yozish mumkin, tekshiruvlar yo'q!

RDBMS ustunligi

Parallel foydalanish (Concurrency), qat'iy ma'lumot yaxlitligi, tranzaksiyalar va indeksatsiya.

B-Tree indekslar orqali milliardlab satrlar ichidan qidiruv bir necha millisekundda!

RDBMS ning 5 ta asosiy ustuni

Concurrency

Ko'p foydalanuvchilar bir vaqtda to'siqsiz yoza oladi.

Integrity

Qat'iy tiplar va relyatsion qoidalar buzilishiga yo'l qo'yilmaydi.

Security

Har bir foydalanuvchiga alohida kirish huquqlari (ACL).

Indexing

Indekslar orqali tezkor va samarali qidiruv mexanizmi.

02

RDBMS va Relatsion model

Edgar Codd taklif etgan relyatsion tuzilma, jadvallar va kalitlar tizimi

Edgar Codd relyatsion modeli (1970)

Nazariya asoschisi

1970-yilda IBM olimi Edgar Codd ma'lumotlarni jadvallar (relations) ko'rinishida tasvirlash va SQL kabi deklarativ til bilan boshqarish modelini yaratdi.

Ushbu kashfiyot uchun Edgar Codd informatika bo'yicha Tyuring mukofotini oldi!

Jadval elementlari

  • Jadval (Table / Relation): Obyektlar to'plami
  • Satr (Row / Record / Tuple): Aniq bitta obyekt
  • Ustun (Column / Field): Obyektning xususiyati

Primary Key (PK) — Birlamchi kalit

PK nima va uning vazifasi?

Jadvaldagi har bir qatorni bir-biridan qat'iy va unikal ajratib turuvchi asosiy ustun.

  • O'quvchining shaxsiy ID raqami
  • Fuqaroning JSHSHIR raqami
  • Tashkilotning STIR (INN) raqami

2 ta buzilmas qoida

UNIQUE: Hech qachon ikkita satrda bir xil PK qiymati bo'lishi mumkin emas!

NOT NULL: PK ustuni hech qachon bo'sh (bo'shliq / None) qolishi mumkin emas!

Foreign Key (FK) va Relyatsion yaxlitlik

Foreign Key nima?

Boshqa jadvalning Primary Key ustuniga ishora qiluvchi va jadvallarni o'zaro mantiqiy bog'lovchi kalit.

Masalan, `orders` jadvalidagi `customer_id` ustuni `customers` jadvalidagi `customer_id` ga bog'lanadi.

Referential Integrity

Baza mavjud bo'lmagan mijoz nomiga buyurtma ochishga yo'l qo'ymaydi!

Yetim yozuvlar (Orphan records) paydo bo'lishining oldi to'liq olinadi.

Relyatsion bog'lanish arxitekturasi

customers (Mijozlar) PK: customer_id (INT) ism (TEXT) telefon (TEXT) shahar (TEXT) orders (Buyurtmalar) PK: order_id (INT) FK: customer_id (INT) FK: product_id (INT) summa (REAL) sana (TEXT) products (Mahsulotlar) PK: product_id (INT) nom (TEXT) narx (REAL) zaxira (INT)

Bilimingizni sinang: PK va FK

Primary Key

O'quvchining ismi PK bo'la oladimi?

Yo'q!

Chunki maktabda bir xil ismli bir nechta o'quvchi bo'lishi mumkin. PK faqat takrorlanmas (unikal) bo'lishi shart.

Foreign Key

FK ustunida takrorlanuvchi qiymatlar bo'lishi mumkinmi?

Ha, albatta!

Chunki bitta mijoz do'kondan bir nechta buyurtma amalga oshirishi mumkin (1:N munosabat).

03

ACID tamoyillari

Tranzaksiyalarning 4 ta oltin kafolati: Atomicity, Consistency, Isolation, Durability

ACID tamoyillarining mohiyati

A — Atomicity

Bo'linmaslik: Tranzaksiya yo 100% to'liq bajariladi, yo zarracha xatoda bekor qilinadi (Rollback).

C — Consistency

Muvofiqlik: Baza barcha qoidalar va cheklovlarga qat'iy mos kelgandagina o'zgarishni qabul qiladi.

I — Isolation

Izolyatsiya: Bir vaqtda parallel ishlayotgan tranzaksiyalar bir-biriga xalaqit bermaydi.

D — Durability

Bardoshlilik: Tasdiqlangan (COMMIT) ma'lumot elektr o'chsa ham diskda ishonchli saqlanadi.

Real hayotiy misol: Bank o'tkazmasi

1-qadam: Alidan pul yechish

Alining hisobidan 100 000 so'm balans kamaytiriladi.

2-qadam: Kutilmagan uzilish!

Tarmoq yoki elektr to'satdan uzildi. Valiga pul yetib bormadi.

3-qadam: Atomicity & Rollback

RDBMS tranzaksiyani butunlay bekor qiladi va Alining 100 000 so'mini joyiga qaytaradi!

04

ERD va Amaliyot: SQLite & JOIN

Entity-Relationship modeli, Python sqlite3 moduli va relyatsion bog'langan so'rovlar

ERD: Munosabat turlari

1:1 (Birga-bir)

Bitta fuqaro — bitta pasport. Bitta talaba — bitta talabalik guvohnomasi.

1:N (Birga-ko'p)

Bitta sinfda ko'p o'quvchi. Bitta mijozda ko'p buyurtma. Eng keng tarqalgan tur.

M:N (Ko'pga-ko'p)

Bitta talaba ko'p kursga qatnaydi, bitta kursda ko'p talaba o'qiydi (oraliq jadval kerak).

SQLite da jadvallar yaratish (Python)

import sqlite3

conn = sqlite3.connect('data/maktab.db')
cursor = conn.cursor()
cursor.execute("PRAGMA foreign_keys = ON;")

# 1. Customers jadvali (Ota jadval)
cursor.execute("""
CREATE TABLE IF NOT EXISTS customers (
    customer_id INTEGER PRIMARY KEY AUTOINCREMENT,
    ism TEXT NOT NULL,
    telefon TEXT UNIQUE NOT NULL
);
""")

# 2. Orders jadvali (Bolalar jadvali - FK orqali bog'langan)
cursor.execute("""
CREATE TABLE IF NOT EXISTS orders (
    order_id INTEGER PRIMARY KEY AUTOINCREMENT,
    customer_id INTEGER NOT NULL,
    summa REAL NOT NULL,
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
""")
conn.commit()

INNER JOIN so'rovi bilan bog'lash

# Ikkala jadvalni umumiy customer_id bo'yicha birlashtirib o'qish
cursor.execute("""
SELECT 
    orders.order_id,
    customers.ism,
    customers.telefon,
    orders.summa
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;
""")

for qator in cursor.fetchall():
    print(f"Buyurtma #{qator[0]} | Xaridor: {qator[1]} | Summa: {qator[3]:,} so'm")

Interaktiv savol

Agar bazada customer_id = 99 bo'lgan mijoz bo'lmasa va biz orders ga customer_id = 99 bilan buyurtma qo'shmoqchi bo'lsak, RDBMS qanday munosabat bildiradi?

To'g'ri! Relyatsion yaxlitlik qoidasi mavjud bo'lmagan ota yozuvga bog'lanishga yo'l qo'ymaydi.

Amaliy topshiriq: 3 daraja

1-daraja: Oson

Python sqlite3 yordamida maktab bazasini oching va 2 ta mijoz qo'shing.

10 daqiqa

2-daraja: O'rta

Orders jadvalini yaratib, mavjud bo'lmagan mijoz ID si bilan xatolikni test qiling.

15 daqiqa

3-daraja: Qiyin

Customers va Orders jadvallarini `INNER JOIN` orqali birlashtirib chiroyli hisobot chiqaring.

20 daqiqa

Dars xulosasi

  • Ma'lumotlar bazasi (RDBMS) — ma'lumotlarni xavfsiz, parallel va qat'iy yaxlitlikda saqlash tizimi.
  • Primary Key (PK) satrni unikal aniqlaydi (`UNIQUE` va `NOT NULL`).
  • Foreign Key (FK) jadvallarni bog'laydi va relyatsion yaxlitlikni kafolatlaydi.
  • ACID tamoyillari tranzaksiyalarning buzilmasligi va ishonchliligini ta'minlaydi.
  • SQL JOIN orqali bir nechta bog'langan jadvallardan yagona hisobot olinadi.