Bu modul amaliyotdan oldingi poydevor: ma’lumotlar ombori nima uchun kerakligi, qanday turlari borligi va relatsion bazaning ichki tuzilishi — jadval, qator, ustun, ma’lumot turi va cheklov — ko’rib chiqildi.
Ma’lumotlar ombori tarixi
Dastlab ma’lumot oddiy fayllarda saqlangan: har bir dastur o’z formatida, o’z faylida yozib borgan. Bu yondashuv kichik hajmda ishlaydi, lekin tez orada uchta muammoga qoqiladi — bir ma’lumot bir necha faylda takrorlanadi va ular bir-biriga mos kelmay qoladi; kerakli yozuvni topish uchun butun faylni o’qib chiqish kerak bo’ladi; ikki dastur bir vaqtda yozganda ma’lumot buziladi.
1970-yilda Edgar Codd relatsion modelni taklif qildi: ma’lumot jadvallarda saqlanadi, jadvallar bir-biriga mantiqiy bog’lanadi, ular bilan ishlash uchun esa alohida so’rov tili — SQL — ishlatiladi. Shundan keyin ma’lumotlar bazasini boshqarish tizimlari (MBBT, ingliz tilida DBMS) paydo bo’ldi: Oracle, MySQL, PostgreSQL, SQL Server. Keyingi bosqichda internetning o’sishi bilan katta hajmli va tuzilmasi erkin ma’lumotlar uchun NoSQL tizimlari, undan keyin esa bulutli bazalar qo’shildi.
| Fayllarda saqlash | Ma’lumotlar bazasida saqlash |
|---|---|
| Tuzilma har bir dasturda o’ziga xos | Tuzilma jadval sifatida bir marta e’lon qilinadi |
| Izlash — butun faylni o’qish | Indekslar orqali tez izlash |
| Bir vaqtda yozish xavfli | Parallel murojaat tizim darajasida boshqariladi |
| Nazorat dastur zimmasida | Cheklovlar noto’g’ri ma’lumotni o’tkazmaydi |
Ko’p boshlovchi Excel jadvalini ham baza deb hisoblaydi. Excel — jadval muharriri: u ma’lumotni ko’rsatadi, lekin bir vaqtda yuzlab foydalanuvchi so’rovini bajarish, qoidalarni majburlash va yaxlitlikni saqlash uchun mo’ljallanmagan.
Ma’lumotlar ombori turlari
Bazalar saqlash modeliga qarab bo’linadi. Eng keng tarqalgani — relatsion baza: ma’lumot ustunlari oldindan e’lon qilingan jadvallarda yotadi va SQL bilan so’raladi. Relatsion bo’lmagan (NoSQL) bazalarda esa tuzilma erkinroq.
| Turi | Ma’lumot qanday yotadi | Misol |
|---|---|---|
| Relatsion | Ustunlari aniq jadvallar | PostgreSQL, MySQL |
| Hujjatli | JSON ko’rinishidagi hujjatlar | MongoDB |
| Kalit-qiymat | Kalit va unga bog’langan qiymat | Redis |
| Ustunli | Ma’lumot ustun bo’yicha saqlanadi | ClickHouse |
| Graf | Tugun va ular orasidagi bog’lanish | Neo4j |
Bu ro’yxatda "eng yaxshi" tur yo’q — har biri boshqa vazifaga mo’ljallangan. Bank tranzaksiyalari uchun qat’iy qoidali relatsion baza kerak, sessiyani vaqtincha saqlash uchun kalit-qiymat ombori yetarli. Boshlovchi uchun eng foydalisi — relatsion modelni puxta o’zlashtirish, chunki qolganlarining ko’pi shu tushunchalar ustiga quriladi.
Amaliyot muhiti
Kurs amaliyotlari brauzerda ochiladigan Cloud42 muhitida bajariladi: kompyuterga hech narsa o’rnatish shart emas, so’rov maydonchasiga SQL yoziladi va natija darhol jadval ko’rinishida qaytadi. Birinchi so’rov jadvalsiz ham ishlaydi:
SELECT 1;
Natija:
?column?
----------
1
Boshlang’ich xato — so’rov oxiridagi nuqtali vergulni tushirib qoldirish. Ko’p muhitlarda bitta so’rov u holda ham ishlaydi, lekin ketma-ket bir nechta so’rov yozilganda tizim ularning qayerda tugaganini bilmay xato beradi.
Jadval, qator va ustun
Relatsion bazaning butun arxitekturasi uchta tushunchaga tayanadi:
- Jadval (table) — bir turdagi ma’lumotlar to’plami, masalan barcha talabalar.
- Ustun (column) — jadvaldagi bitta xususiyat: ism, tug’ilgan sana, ball. Ustunning nomi va ma’lumot turi bor.
- Qator (row) — bitta real ob’ekt haqidagi yozuv: bitta talaba.
Qator va ustun kesishgan joy — katak, ya’ni bitta aniq qiymat.
| id | ism | guruh | ball |
|---|---|---|---|
| 1 | Aziz | 101 | 85 |
| 2 | Malika | 102 | 92 |
Bu yerda id ustuni alohida ahamiyatga ega: u har bir qatorni betakror ajratib turadi va birlamchi kalit (PRIMARY KEY) deb ataladi. Ismga tayanib bo’lmaydi — bir xil ismli ikki talaba bo’lishi mumkin.
Ma’lumotlar turlari
Har bir ustun uchun ma’lumot turi e’lon qilinadi. Tur ikki ish qiladi: qiymat qanday saqlanishini belgilaydi va noto’g’ri qiymatni jadvalga kiritmaydi.
| Tur | Nima uchun | Misol qiymat |
|---|---|---|
INTEGER |
Butun son | 85 |
DECIMAL(10,2) |
Aniq kasr son, pul | 1250.50 |
VARCHAR(n) |
Uzunligi cheklangan matn | 'Aziz' |
TEXT |
Uzunligi cheklanmagan matn | izoh |
BOOLEAN |
Ha yoki yo’q | TRUE |
DATE |
Sana | '2026-09-01' |
TIMESTAMP |
Sana va vaqt | '2026-09-01 14:30' |
Eng tez-tez uchraydigan xato — telefon raqamini INTEGER qilib e’lon qilish. Raqam boshidagi nol yo’qoladi, + belgisi saqlanmaydi va qiymat son sifatida hech qachon qo’shilmaydi ham. Telefon, pasport seriyasi, hisob raqami — ular ustida arifmetika qilinmaydi, demak ular matn.
Cheklovlar va qoidalar
Cheklov (constraint) — ustunga qo’yilgan qoida. Uni baza o’zi majburlaydi, ya’ni qoidani buzgan ma’lumot dastur kodidan qat’i nazar jadvalga tushmaydi.
CREATE TABLE talabalar (
id INTEGER PRIMARY KEY,
ism VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
ball INTEGER DEFAULT 0,
faol BOOLEAN DEFAULT TRUE
);
PRIMARY KEY— betakror va bo’sh bo’lmagan asosiy belgi.NOT NULL— ustun bo’sh qoldirilmaydi.UNIQUE— qiymat jadvalda takrorlanmaydi.DEFAULT— qiymat berilmasa, o’rniga qo’yiladigan qiymat.CHECK— qiymat shartga mos kelishi kerak, masalanCHECK (ball >= 0).
Qoida buzilganda baza yozuvni rad etadi:
INSERT INTO talabalar (id, ism) VALUES (1, NULL);
Natija:
ERROR: null value in column "ism" violates not-null constraint
Bu xato emas, balki himoya: jadval o’zining qoidasini o’zi qo’riqlaydi. Cheklovlarni loyihaning boshida o’ylab qo’ygan ma’qul — jadvalda allaqachon minglab qator bo’lganda UNIQUE qo’shish takrorlangan eski yozuvlar tufayli ishlamay qolishi mumkin.
PRIMARY KEY bilan UNIQUE chalkashtiriladigan juftlik:
| PRIMARY KEY | UNIQUE |
|---|---|
| Jadvalda bitta bo’ladi | Bir nechta ustunga qo’yish mumkin |
| Bo’sh qiymatga yo’l qo’ymaydi | Odatda bitta bo’sh qiymatga ruxsat beradi |
| Qatorni tanib olish uchun | Takrorlanishning oldini olish uchun |
Amaliyot
- Kutubxona uchun
kitoblarjadvalining ustunlarini qog’ozda loyihalang: qaysi ustunlar kerak va har biriga qaysi tur mos keladi? - Shu jadvalda qaysi ustun birlamchi kalit bo’lishi kerakligini asoslang — nega kitob nomi kalit sifatida yaramaydi?
ISBNustuniga qaysi cheklov mos keladi:UNIQUE,NOT NULLyoki ikkalasi ham? Javobingizni tushuntiring.- Onlayn do’kon uchun
mahsulotlarjadvalini yozing: narx ustuniniDECIMALbilan, mavjudlik ustuniniBOOLEANbilan e’lon qiling va narx manfiy bo’lmasligi uchunCHECKqo’shing. - Quyidagi holatlarning har biri uchun qaysi ma’lumot turi to’g’ri: tug’ilgan sana, buyurtma summasi, foydalanuvchi izohi, kuryer telefon raqami?
Keyingi qadam — modul testi: tushunchalar, turlar va cheklovlar bo’yicha o’zingizni tekshiring.