AXV

R-diagrammalar (ERD) va SQLite

Entity-Relationship arxitekturasi, kardinallik (1:1, 1:N, M:N) va Maktab tahliliy platformasi

10-sinf BI va Machine Learning 3-hafta · 8-dars

Bugungi dars rejasi

ERD asoslari

Obyekt (Entity), Atribut va Munosabatlar. Nega kod yozishdan oldin model chiziladi?

Kardinallik & Junction

1:1, 1:N va M:N bog'lanishlar. Ko'pga-ko'p munosabatni oraliq jadval bilan yechish.

Maktab platformasi

Rasmiy dasturdagi `maktab.db` relyatsion arxitekturasi va Python sqlite3 amaliyoti.

01

ERD tushunchasi va Notatsiyalar

Entity-Relationship Diagram: axborot tizimining arxitektura chizmasi

Nega avval ERD chiziladi?

Loyihasiz boshlash (Xavfli)

Jadvallar va ustunlar pala-partish ochiladi, ma'lumotlar dublikat bo'ladi, relyatsion yaxlitlik yo'qoladi.

Katta tizimlarda noto'g'ri arxitekturani qayta tuzish oylab vaqt va millionlab mablag' talab qiladi!

ERD bilan loyihalash (To'g'ri)

Barcha obyektlar, ularning kalitlari va bog'lanishlari avval qog'ozda yoki grafik vositada aniqlanadi.

Dasturchi va biznes tahlilchi yagona umumiy tilda muloqot qiladi!

ERD ning 3 ta asosiy ustuni

Entity (Obyekt)

Ma'lumot to'planadigan mavzu yoki shaxs (Maktab, O'quvchi, Hudud, Fan).

To'rtburchak

Attribute (Atribut)

Obyektni ifodalovchi xususiyatlar (Ismi, Sig'imi, Yil, Balans, Telefon).

Ustunlar

Relationship (Aloqa)

Obyektlar orasidagi mantiqiy bog'liqlik (O'qiydi, Tegishli, Dars beradi).

Chiziqlar
02

Munosabatlar kardinalligi

1:1, 1:N va M:N bog'lanishlar tahlili

1:1 (Birga-bir) va 1:N (Birga-ko'p)

1:1 (Birga-bir)

Bitta ota yozuvga faqat bitta bola yozuv mos keladi.

  • Fuqaro ── Pasport
  • Talaba ── Talabalik guvohnomasi

Kamdan-kam hollarda, odatda xavfsizlik uchun alohida jadval qilinadi.

1:N (Birga-ko'p)

Bitta otaga ko'plab bolalar to'g'ri keladi. Eng asosiy tur!

  • Bitta hududda ko'plab maktablar
  • Bitta maktabda ko'plab o'quvchilar

Bola jadvalda otaning Primary Key ustuni Foreign Key bo'lib turadi.

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

Real hayotiy holat

Bitta o'quvchi bir nechta fandan to'garakka qatnashishi mumkin. Bitta to'garakda ham ko'plab o'quvchilar bor.

Relyatsion bazada satr katagiga massiv [1, 2, 3] yozish taqiqlanadi!

Relyatsion talab

Ma'lumotlar bazasida M:N munosabat to'g'ridan-to'g'ri saqlanmaydi.

Uning o'rniga oraliq jadval (Junction table) kiritiladi va ikkita 1:N ga bo'linadi.

03

Junction Table va M:N yechimi

Ko'prik jadval orqali ko'pga-ko'p bog'lanishlarni normalizatsiya qilish

Junction (Ko'prik) jadval arxitekturasi

oquvchilar PK: oquvchi_id ism (TEXT) sinf (INT) oquvchi_togarak (Junction) FK: oquvchi_id FK: togarak_id yozilgan_sana (TEXT) togaraklar PK: togarak_id nomi (TEXT) oqituvchi (TEXT)

Bilimingizni sinang: Kardinallik

Shifokor va Bemor

Ular o'rtasida qanday munosabat bor?

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

Bitta shifokor ko'p bemorni ko'radi, bitta bemor bir nechta shifokorga (LOR, okulist) borishi mumkin. Qabul tarixi jadvali kerak!

Maktab va Hudud

Ular o'rtasida qanday munosabat bor?

1:N (Birga-ko'p)

Bitta viloyatda ko'plab maktablar bor, ammo bitta maktab faqat bitta viloyat hududiga tegishli bo'ladi.

04

Maktab tahliliy platformasi va SQLite

Rasmiy o'quv dasturidagi maktab.db relyatsion modeli va Python kodi

Maktab tahliliy platformasi ERD modeli

hududlar PK: hudud_id (INT) nomi (TEXT UNIQUE) markaz (TEXT) maktablar PK: maktab_id (INT) FK: hudud_id (INT) raqam (INT) sigim (INT CHECK > 0) yillik_kpi PK: kpi_id (INT) FK: hudud_id (INT) yil (INT) oquvchilar_soni (INT)

Python sqlite3: DDL jadvallarni qurish

import sqlite3

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

# 1. Hududlar jadvali
cursor.execute("""
CREATE TABLE IF NOT EXISTS hududlar (
    hudud_id INTEGER PRIMARY KEY AUTOINCREMENT,
    nomi TEXT NOT NULL UNIQUE,
    markaz TEXT NOT NULL
);
""")

# 2. Maktablar jadvali (1:N bog'langan)
cursor.execute("""
CREATE TABLE IF NOT EXISTS maktablar (
    maktab_id INTEGER PRIMARY KEY AUTOINCREMENT,
    hudud_id INTEGER NOT NULL,
    raqam INTEGER NOT NULL,
    sigim INTEGER NOT NULL CHECK (sigim > 0),
    FOREIGN KEY (hudud_id) REFERENCES hududlar(hudud_id) ON DELETE CASCADE
);
""")
conn.commit()

KPI hisoblash va JOIN so'rovi

cursor.execute("""
SELECT 
    h.nomi,
    k.yil,
    ROUND(CAST(k.oquvchilar_soni AS REAL) / k.maktablar_soni, 0) AS maktab_yuklamasi,
    ROUND(CAST(k.oquvchilar_soni AS REAL) / k.oqituvchilar_soni, 1) AS oquvchi_oqituvchi
FROM yillik_kpi k
JOIN hududlar h ON k.hudud_id = h.hudud_id
ORDER BY k.yil DESC, maktab_yuklamasi DESC;
""")

for row in cursor.fetchall():
    print(f"{row[0]} ({row[1]}): Maktabga {row[2]} o'quvchi | Nisbat: 1/{row[3]}")

Interaktiv savol

Relyatsion ma'lumotlar bazasida Ko'pga-ko'p (M:N) munosabatni saqlash uchun nima ishlatiladi?

To'g'ri! Oraliq ko'prik jadval ikkala jadvalning PK larini Foreign Key qilib oladi va M:N ni hal etadi.

Amaliy topshiriq: 3 daraja

1-daraja: Oson

Maktab va Hududlar jadvallarini yaratib, 3 ta hudud va 6 ta maktab ma'lumotini kiriting.

10 daqiqa

2-daraja: O'rta

O'quvchi va To'garaklar o'rtasida Junction table hosil qilib, 5 ta a'zolikni ro'yxatdan o'tkazing.

15 daqiqa

3-daraja: Qiyin

Yillik KPI jadvali asosida har bir viloyat bo'yicha o'quvchi/o'qituvchi nisbatini SQL da hisoblang.

20 daqiqa

Dars xulosasi

  • ERD — ma'lumotlar arxitekturasini kod yozishdan oldin to'g'ri rejalashtirishning eng muhim vositasi.
  • 1:N relyatsion tizimlarda eng keng tarqalgan munosabat turi hisoblanadi.
  • M:N munosabatlar doimo Junction Table yordamida ikkita 1:N ga ajratiladi.
  • Maktab tahliliy platformasi `hududlar`, `maktablar` va `yillik_kpi` orqali ta'lim resurslari yuklamasini o'lchaydi.
  • Keyingi dars: SQL analitik operatorlari: SELECT, WHERE, ORDER BY va LIMIT!