1-bo‘lim

Ma'lumotlar bazasi nima?

Fayl va baza farqi, relatsion model, jadval-qator-ustun tushunchalari, SQL tarixi va mashhur MBBT lar.

🕑 8 daqiqa o‘qish 📄 1 030 so‘z 👁 6 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. Nima uchun fayl yetarli emas?
  2. Relatsion model
  3. SQL nima?
  4. SQL buyruqlari guruhlari
  5. Mashhur MBBT lar
  6. SQL va NoSQL
  7. SQL tarixi
  8. Nima uchun SQL o'rganish kerak?
  9. Xulosa

Har qanday jiddiy dastur ma'lumotni saqlashi kerak: foydalanuvchilar, buyurtmalar, xabarlar. Faylga yozish kichik hajmda ishlaydi, lekin tez orada yetarli bo'lmay qoladi.

Nima uchun fayl yetarli emas? #

Tasavvur qiling: 100 000 ta foydalanuvchi ma'lumoti CSV faylda saqlanmoqda.

VazifaFayl bilanBaza bilan
Bitta foydalanuvchini topishButun faylni o'qishMillisekundlarda
Ikki kishi bir vaqtda yozsaMa'lumot buziladiBaza boshqaradi
Yozish yarmida to'xtasaYarim yozilgan faylHammasi bekor qilinadi
"30 yoshdan kattalar"Qo'lda filtrlash kodiBitta so'rov
Ma'lumot to'g'riligiHech kim tekshirmaydiBaza majburlaydi

Ma'lumotlar bazasini boshqarish tizimi (MBBT) aynan shu muammolarni hal qiladi.

Relatsion model #

Eng keng tarqalgan model - relatsion. Unda ma'lumot jadvallarda saqlanadi.

talabalar jadvali id ism yosh shahar 1 Husanboy Qodirov 22 Samarqand 2 Sardor Aliyev 25 Toshkent 3 Malika Yusupova 21 Buxoro ↑ ustunlar (maydonlar) - ma'lumot turi ← qatorlar (yozuvlar) - bitta obyekt id - birlamchi kalit, har bir qator uchun noyob
Jadval - relatsion bazaning asosiy birligi
AtamaMa'nosiExcel dagi analogi
Baza (database)Jadvallar to'plamiButun fayl
Jadval (table)Bir turdagi ma'lumotVaraq
Ustun (column)XususiyatUstun
Qator (row)Bitta yozuvQator
Birlamchi kalitNoyob identifikator-
Nima uchun "relatsion"?

Jadvallar bir-biri bilan bog'lanadi (relation). Masalan buyurtmalar jadvalidagi mijoz_id ustuni mijozlar jadvalidagi id ga ishora qiladi. Bu bog'lanish ma'lumotni takrorlamasdan saqlash imkonini beradi - 10 va 11-bo'limlarda batafsil ko'ramiz.

SQL nima? #

SQL (Structured Query Language) - ma'lumotlar bazasi bilan gaplashish tili.

SQL
SELECT ism, yosh
FROM talabalar
WHERE yosh > 21
ORDER BY yosh DESC;

Bu so'rovni deyarli inglizcha gap kabi o'qish mumkin: "talabalar jadvalidan yoshi 21 dan katta bo'lganlarning ism va yoshini tanla, yosh bo'yicha kamayish tartibida saralab".

SQL - deklarativ til

Python'da qanday qilishni yozasiz: siklni ochib, har bir elementni tekshirasiz. SQL da esa nimani xohlashingizni aytasiz, qanday topishni baza o'zi hal qiladi.

Aynan shuning uchun SQL o'rganish oson va shuning uchun baza sizdan ko'ra samaraliroq ishlaydi - u indekslar va optimizatorga ega.

SQL buyruqlari guruhlari #

GuruhTo'liq nomiBuyruqlar
DDLData DefinitionCREATE, ALTER, DROP
DMLData ManipulationINSERT, UPDATE, DELETE
DQLData QuerySELECT
DCLData ControlGRANT, REVOKE
TCLTransaction ControlCOMMIT, ROLLBACK

Amalda ish vaqtingizning 80% i SELECT bilan o'tadi.

Mashhur MBBT lar #

MBBTTuriKuchli tomoniQayerda
MySQL / MariaDBRelatsionOmmabop, oson, bepulVeb-saytlar, WordPress
PostgreSQLRelatsionKuchli imkoniyatlar, standartga rioyaMurakkab tizimlar
SQLiteRelatsionBitta fayl, server kerak emasMobil ilovalar, kichik loyihalar
OracleRelatsionKorporativ darajadaBanklar, davlat tizimlari
MS SQL ServerRelatsionMicrosoft ekotizimiKorporativ .NET loyihalar
MongoDBHujjatli (NoSQL)Moslashuvchan tuzilmaTez o'zgaradigan ma'lumot
RedisKalit-qiymatJuda tez, xotiradaKesh, sessiyalar

Biz MySQL (aniqrog'i uning MariaDB varianti) bilan ishlaymiz - u XAMPP bilan birga keladi va o'rganish uchun eng qulay.

MySQL va MariaDB

MariaDB - MySQL ning ochiq kodli "davomchisi". Uni MySQL yaratuvchilari 2009-yilda, Oracle MySQL ni sotib olgandan keyin ajratib chiqargan. Ular deyarli to'liq mos: bu darslikdagi barcha so'rovlar ikkalasida ham bir xil ishlaydi.

XAMPP da aslida MariaDB o'rnatilgan, lekin buyruqlar mysql deb nomlanadi.

SQL va NoSQL #

SQL
-- SQL: qat'iy tuzilma
CREATE TABLE talabalar (
    id INT PRIMARY KEY,
    ism VARCHAR(120),
    yosh INT
);
JSON
// NoSQL (MongoDB): erkin tuzilma
{ "ism": "Husanboy", "yosh": 25 }
{ "ism": "Sardor", "telefon": "+998...", "manzil": { "shahar": "Toshkent" } }
SQLNoSQL
TuzilmaQat'iy sxemaErkin
Bog'lanishlarKuchli (JOIN)Zaif
TranzaksiyalarTo'liq (ACID)Cheklangan
MasshtablashVertikalGorizontal
QachonMoliya, buyurtma, hisobotLoglar, katta oqim
Qaysi birini tanlash?

Boshlovchi uchun javob oddiy: SQL dan boshlang. Loyihalarning 90% i uchun relatsion baza to'g'ri tanlov. NoSQL aniq bir muammoni hal qilish uchun kerak bo'ladi - va bu muammo bor-yo'qligini bilish uchun avval SQL ni bilish kerak.

SQL tarixi #

YilVoqea
1970Edgar Codd relatsion modelni taklif qiladi
1974IBM da SEQUEL tili yaratiladi
1979Oracle birinchi tijorat MBBT ni chiqaradi
1986SQL ANSI standarti bo'ladi
1995MySQL paydo bo'ladi
1996PostgreSQL hozirgi nomini oladi
2009MariaDB ajralib chiqadi
BugunSQL 50 yildan beri asosiy til bo'lib qolmoqda
SQL

Edgar F. Codd

Relatsion model asoschisi. Britaniyalik olim, IBM da ishlagan. 1970-yilda "A Relational Model of Data for Large Shared Data Banks" maqolasini chop etib, ma'lumotni jadvallarda saqlash g'oyasini ilgari surdi. O'sha paytda bu inqilobiy edi - dunyo hali ierarxik bazalardan foydalanardi. Bugungi barcha SQL bazalari uning ishiga asoslanadi.

Nima uchun SQL o'rganish kerak? #

SababIzoh
UniversalBarcha bazalarda deyarli bir xil
Barqaror50 yildan beri o'zgarmayapti
TalabgirDeyarli har bir IT vakansiyasida so'raladi
Faqat dasturchilar uchun emasTahlilchi, marketolog, buxgalter ham ishlatadi
Tez o'rganiladiAsosini bir haftada o'zlashtirish mumkin
Amaliy topshiriq

Hali kod yozmaymiz - qog'ozda ishlaymiz:

  1. O'zingiz bilgan biror tizimni tanlang (kutubxona, do'kon, maktab).
  2. Unda qanday jadvallar kerakligini yozing (kamida 3 ta).
  3. Har bir jadval uchun ustunlarni sanang.
  4. Qaysi ustun birlamchi kalit bo'lishini belgilang.
  5. Jadvallar bir-biri bilan qanday bog'lanishini o'ylab ko'ring (masalan: kitob → muallif, buyurtma → mijoz).

Bu chizmani saqlab qo'ying - darslik davomida unga qaytamiz.

Xulosa #

  • Ma'lumotlar bazasi fayl bilan hal qilib bo'lmaydigan muammolarni yechadi: tezlik, bir vaqtda ishlash, ma'lumot butunligi.
  • Relatsion model: ma'lumot jadvallarda, jadvallar bir-biri bilan bog'langan.
  • SQL - deklarativ til: nimani xohlashingizni aytasiz, qanday topishni baza hal qiladi.
  • Asosiy buyruqlar guruhlari: DDL (tuzilma), DML (ma'lumot), DQL (SELECT).
  • Biz MySQL/MariaDB bilan ishlaymiz - XAMPP bilan birga keladi.
  • Relatsion modelni 1970-yilda Edgar Codd taklif qilgan va u bugun ham asosiy model.

Keyingi bo'limda MySQL bilan ishlashni boshlaymiz va birinchi so'rovni yozamiz.

Xatolik topdingizmi?

Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.