SQL RDBMS

SQL RDBMS


RDBMS nima?

RDBMS - Relational Database Management System(bog`liqlik ma`lumotlar bazasini boshqarish sistemasi).RDBMS SQL uchun asos bo'lib, MS SQL Server, IBM DB2, Oracle, MySQL, Microsoft Access va shunga o'xshash barcha zamonaviy ma'lumotlar bazalari uchun

Bog'liq ma'lumotlar bazasini boshqarish tizimi (RDBMS) ma'lumotlar bazasini boshqarish tizimi E. F. Codd tomonidan kiritilgan (relational model)munosabatlar modeliga asoslangan.

Jadval nima?

RDBMSdagi ma'lumotlar jadvallar deb nomlanadigan ma'lumotlar bazasi ob'ektlarida saqlanadi. Ushbu jadval asosan tegishli ma'lumotlar yozuvlari to'plamidir va u ko'p sonli ustunlardan iborat qatorlar.

  Unutmangki, jadval jadvalda ma'lumotlar bazasi.


Quyidagi dastma'lumotni saqlashning eng oddiy va eng oddiy shakli hisoblanadi. Quyidagi dastur CUSTOMERS (mijozlar) jadvalining namunasidir:

ID NAME(ISM ) AGE( YOSH) ADDRESS(Yashash manzili) SALARY(Maosh)
1 Murodjon 22 Sirdaryo viloyati $2000
2 Abduvali 30 Andijon viloyati $1000
3 Nodira 25 Navoiy viloyati $900

Field - Maydon nima?

Har bir jadval maydonlar deb nomlangan kichik narsalarga bo'linadi. Mijozlar ichidagi maydonlar jadval ID, NAME, AGE, ADDRESS va SALARYdan iborat.

Maydon, jadvaldagi har bir yozuv haqida aniq ma'lumotlarni saqlash uchun mo'ljallangan jadvaldagi ustundir.

Yozuv yoki satr nima?

Bir yozuv, shuningdek, bir qator ma'lumot sifatida ham deyiladi, jadvalda mavjud bo'lgan har bir alohida yozuv. Masalan, yuqoridagi mijozlar jadvalidagi 7 ta yozuv(record) mavjud. Quyida mijozlar jadvalida bir qator ma'lumotlar yoki yozuvlar mavjud:
1 Murodjon 22 Sirdaryo viloyati $2000

Record- jadvaldagi gorizontal entity(qayd)

Ustun nima?

Ustun jadvaldagi vertikal qism, ushbu maxsus maydonda ma`lumotlar saqlanadi

Masalan, CUSTOMERS jadvalidagi ustun ADDRESS bo'lib, u joyning tavsifini ifodalaydi va quyida ko'rsatilgandek bo'ladi:

ADDRESS
Sirdaryo viloyati
Andijon viloyati
Navoiy viloyati

NULL qiymati nima?

Jadvaldagi NULL qiymati bo'sh joy sifatida ko'rsatilgan maydonda, NULL qiymatiga ega bo'lgan maydon qiymati bo'lmagan qiymat hisoblanadi.

NULL qiymati nol qiymatidan yoki bo'shliqlarni o'z ichiga olgan maydondan farqli ekanini tushunish juda muhimdir. NULL qiymati bo'lgan maydon rekord yaratish vaqtida bo'sh qoldirilgan.

SQL Constraints(cheklovlari)

Cheklovlar - jadval ustidagi ma'lumotlar ustunlaridagi qoidalar. Ular jadvalga o'tishlari mumkin bo'lgan ma'lumotlar turini cheklash uchun ishlatiladi. Bu ma'lumotlar bazasidagi ma'lumotlarning aniqligi va ishonchliligini ta'minlaydi.

Cheklashlar ustun darajasi yoki jadval darajasigacha bo'lishi mumkin. Ustun darajasidagi cheklovlar faqat bitta ustunga qo'llaniladi, jadval stoli cheklovlari esa butun jadvalga qo'llaniladi.

SQLda mavjud bo'lgan eng ko'p qo'llaniladigan cheklovlar quyidagilardan iborat:

  • NOT NULL Constraint: Ustun NULL qiymatiga ega bo'lmasligini ta'minlaydi
  • DEFAULT Constraint: Hech biri ko'rsatilmagan bo'lsa, ustun uchun standart qiymatni beradi.
  • UNIQUE Constraint:Bir ustundagi barcha qiymatlar boshqacha bo'lishini ta'minlaydi.
  • PRIMARY Key: Ma'lumotlar bazasi jadvalidagi har bir satrni / yozuvni yagona tarzda aniqlaydi.
  • FOREIGN Key:Boshqa bazalar jadvalidagi qatorni / yozuvni aniqlaydi.
  • CHECK Constraint: CHECK cheklovi ustundagi barcha qiymatlar ma'lum shartlarga javob berishini ta'minlaydi.
  • INDEX:Ma'lumotlar bazasidan ma'lumotlarni juda tez yaratish va olish uchun ishlatiladi.

Ma'lumotlar yaxlitligi(Data Integrity)

Har bir RDBMS bilan quyidagi ma'lumotlar tarkibiy qismi mavjud:
  • Entity-(Tashkilotning yoki obyekt) yaxlitligi:Jadvalda ikki nusxadagi satr yo'q.
  • Domenning yaxlitligi: Turini, formatini yoki qiymatlar oralig'ini cheklash orqali ma'lum bir ustun uchun joriy yozuvlarni majburlaydi.
  • Referentning yaxlitligi: Boshqa yozuvlar tomonidan ishlatiladigan satrlarni o'chirib bo'lmaydi.
  • Foydalanuvchi tomonidan belgilab qo'yilgan yaxlitlik:Tashkilotga, domenga yoki referentning yaxlitligiga ta'sir qilmaydigan ba'zi bir maxsus biznes qoidalarini bajaradi.

Ma'lumotlar bazasini normallashtirish

Ma'lumotlar bazasini normallashtirish - ma'lumotlar bazasida ma'lumotlarni samarali tashkil etish jarayoni. Ushbu normalizatsiya jarayonining ikkita sababi bor:

  • Zarur bo'lmagan ma'lumotlarni yo'q qilish. Masalan, xuddi shu ma'lumotlarni bir nechta jadvalda saqlash.
  • Ma'lumotga bog'liqlikni ta'minlash mantiqan.

Ushbu ikkala sabab ham munosib maqsadlardir, chunki ular ma'lumotlar bazasini iste'mol qilish hajmini kamaytiradi va ma'lumotlar mantiqiy saqlanishini ta'minlaydi. Normallashtirish sizni yaxshi ma'lumotlar bazasi tuzilishini yaratishga yordam beradigan bir qator qo'llanmalardan iborat.

Normallashtirish qoidalari an'anaviy shakllarga bo'linadi; shakl yoki ma'lumotlar bazasi tuzilmasi shaklini shakl deb hisoblang. Oddiy shakllarning maqsadi ma'lumotlar bazasi strukturasini tashkil qilish, ya'ni u birinchi odatdagi shakl qoidalariga, so'ngra ikkinchi oddiy shaklga va nihoyat uchinchi oddiy shaklga to'g'ri kelishidir.

Bu sizning tanlovingizdir va to'rtinchi an'anaviy shaklga, beshinchi an'anaviy shaklga va boshqalarga o'tishni tanlaysiz, lekin umuman, uchinchi an'anaviy shakl etarli darajada.

  • Birinchi Oddiy formasi (1NF) (First Normal Format)
  • Ikkinchi Oddiy formasi (2NF) (Second Normal Format)
  • Uchinchi Oddiy shakl (3NF) (Third Normal Format)

Ma'lumotlar bazasi - Birinchi Oddiy shakl (1NF)

Birinchi oddiy shakl (1NF) tashkil etilgan ma'lumotlar bazasi uchun asosiy qoidalarni belgilaydi:

  • Zarur bo'lgan ma'lumotlar elementlarini aniqlang, chunki ular jadvaldagi ustunlar bo'lishadi.
  • Bog'liq ma'lumotlar bilan elementlarini jadvalga joylashtiring.
  • Takroriy ma'lumotlar guruhlari yo`qligiga ishonch hosil qiling.
  • Asosiy kalit (primary key) mavjudligiga ishonch hosil qiling

1NF birinchi qoidasi

Ma'lumotlar elementlarini belgilashingiz kerak. Bu ma'lumotni saqlab qo'yish, ma'lumotlarni ustunlarga ajratish, har bir ustunning qaysi turdagi ma'lumotlarini belgilab olish va keyinchalik tegishli ustunlarnı o'z jadvaliga qo'yish degan ma'noni anglatadi.

Misol uchun, siz Manzil jadvalidagi yig'ilish joylari, MemberDetails jadvalidagi a'zolar bilan bog'liq bo'lgan va shunga o'xshash barcha ustunlarni qo'yasiz.

1NFning ikkinchi qoidasi

Keyingi qadamda takrorlanuvchi ma'lumot guruhlari mavjud emasligini ta'minlash. Quyidagi jadvalni ko'rib chiqaylik:

Namuna:


    CREATE TABLE CUSTOMERS(
            ID          INT             NOT NULL,
             NAME       VARCHAR (20)    NOT NULL,
             AGE        INT             NOT NULL,
             ADDRESS    CHAR (25),
             ORDERS VARCHAR(155)
     );
                

Shunday qilib, biz ushbu jadvalni bir nechta buyurtmalarga ega bo'lgan bitta mijoz uchun to'ldirsak, u quyida ko'rsatilgandek bo'ladi:

ID NAME AGE ADDRESS ORDERS
100 Abduvali 36 Toshkent Cannon XL-200
100 Abduvali 36 Toshkent Battery XL-200
100 Abduvali 36 Toshkent Tripod Large

Ammo 1NF bo'yicha biz takrorlanmaydigan ma'lumot guruhlari mavjudligiga ishonch hosil qilishimiz kerak. Shunday qilib, yuqoridagi jadvalni ikkita qismga ajratib qo'yamiz va quyidagi dasturda ko'rsatilgandek kalit yordamida ularni qo'shamiz:

Namuna: CUSTOMERS Table(Mijozlar jadvali)


    CREATE TABLE CUSTOMERS(
        ID          INT             NOT NULL,
        NAME        VARCHAR (20)    NOT NULL,
        AGE         INT             NOT NULL,
        ADDRESS     CHAR (25),
        PRIMARY KEY (ID)
        );

Ushbu jadval quyidagi yozuvga ega bo'ladi:
ID NAME AGE ADDRESS
100 Abduvali 36 Toshkent

Namuna: ORDERS Table( Buyurtma stoli)


CREATE TABLE ORDERS(
        ID           INT            NOT NULL,
        CUSTOMER_ID  INT            NOT NULL,
        ORDERS       VARCHAR(155),
        PRIMARY KEY (ID)
        );

Ushbu jadval quyidagi yozuvlarga ega bo'lishi kerak:
ID CUSTOMER_ID ORDERS
10 100 Cannon XL-200
11 100 Battary XL-200
12 100 Tripod Large

1NFning uchinchi qoidasi

Birinchi odatdagi shaklning oxirgi qoidasi, biz yaratgan har bir jadval uchun asosiy kalit yaratadi

Ma'lumotlar bazasi - Ikkinchi oddiy shakl (2NF) Ikkinchi Oddiy formada 1NF uchun barcha qoidalarga javob berishi kerak va ustunlar ustidagi asosiy kalitlarga hech qanday qisman bog'liqlik bo'lmasligi kerak:

Xaridor-buyurtma munosabatlarini ko'rib chiqing va siz xaridorlar identifikatorini, mijoz nomini, buyurtma identifikatorini va buyurtma detalini va sotib olingan kunni saqlashni xohlaysiz:

Namuna:


 CREATE TABLE CUSTOMERS(
        CUST_ID           INT              NOT NULL,
        CUST_NAME         VARCHAR (20)     NOT NULL,
        ORDER_ID          INT              NOT NULL,
        ORDER_DETAIL      VARCHAR (20)     NOT NULL,
        SALE_DATE         DATETIME,
        PRIMARY KEY (CUST_ID, ORDER_ID)
        );

Ushbu jadval birinchi odatdagi shaklda; bu birinchi odatdagi shaklning barcha qoidalariga bo'ysunadi. Ushbu jadvalda asosiy kalit CUST_ID va ORDER_IDdan iborat. Birgalikda, ular bir xil mijozni deyarli bir xil narsaga buyurtma berishni talab qiladigan noyobdirlar.

Biroq, stol ikkinchi oddiy shaklda emas, chunki qisman bor asosiy kalit va ustunlar bog'liqligi. CUST_NAME CUST_ID turiga bog'liq va mijozning nomi va sotib olgan qiymati o'rtasida hech qanday haqiqiy bog'lanish yo'q. Buyurtma tafsilotlari va sotib olish sanasi ORDER_ID-ga bog'liq, lekin ular CUST_ID-ga bog'liq emas, chunki CUST_ID va ORDER_DETAIL yoki SALE_DATE orasida hech qanday aloqa yo'q.

Ushbu jadvalni ikkinchi an'anaviy shaklga moslashtirish uchun ustunlarni uchta jadvalga ajratish kerak.

Birinchidan, mijozlar tafsilotlarini quyidagi kod bloklarida ko'rsatilgan tarzda saqlash uchun jadval yarating:

Namuna:


CREATE TABLE CUSTOMERS(
        CUST_ID       INT           NOT NULL,
        CUST_NAME     VARCHAR (20)  NOT NULL,
        PRIMARY KEY (CUST_ID)
        );

Keyingi qadam har bir buyurtmaning tafsilotlarini saqlash uchun jadval yaratishdir:

Namuna:


 CREATE TABLE ORDERS(
        ORDER_ID       INT              NOT NULL,
        ORDER_DETAIL   VARCHAR (20)     NOT NULL,
        PRIMARY KEY (ORDER_ID)
        );

Nihoyat, buyurtmachi uchun barcha buyurtmalarni kuzatib borish uchun faqat CUST_ID va ORDER_IDni saqlash uchun uchinchi jadval yaratilsin:

Namuna:


 CREATE TABLE CUSTMERORDERS(
        CUST_ID     INT    NOT NULL,
        ORDER_ID    INT    NOT NULL,
        SALE_DATE   DATETIME,
        PRIMARY KEY (CUST_ID, ORDER_ID)
        );

Ma'lumotlar bazasi - Uchinchi Oddiy shakl (3NF)

Quyidagi shartlar bajarilganda, Jadval uchinchi an'anaviy shaklda bo'ladi:

  • Ikkinchi oddiy shaklda
  • Barcha asosiy bo'lmagan joylar asosiy kalitga(primary key) bog'liq.

Ushbu o`xshash bo'lmagan joylardagi ma'lumotlar orasidagi bog'liqlik. Misol uchun, quyidagi jadvalda - ko'cha nomi, shahar va davlat o'z pochta indeksi bilan uzviy bog'liqdir.

Namuna:


 CREATE TABLE CUSTOMERS(
        CUST_ID     INT           NOT NULL,
        CUST_NAME   VARCHAR (20)  NOT NULL,
        DOB         DATE,
        STREET      VARCHAR(200),
        CITY        VARCHAR(100),
        STATE       VARCHAR(100),
        ZIP         VARCHAR(12),
        EMAIL_ID    VARCHAR(256),
        PRIMARY KEY (CUST_ID)
        );
Pochta indeksi va manzili o'rtasidagi bog'liqlik transitiv qaramlik deb ataladi. Uchinchi an'anaviy shaklga rioya qilish uchun kerak bo'lgan yagona narsa Street, City va State maydonlarini o'z stoliga ko'chirishdir yani Zip Code jadvali

Namuna:


 CREATE TABLE ADDRESS(
        ZIP          VARCHAR(12),
        STREET       VARCHAR(200),
        CITY         VARCHAR(100),
        STATE        VARCHAR(100),
        PRIMARY KEY  (ZIP)
        )

Keyingi qadam CUSTOMERS jadvalini quyida ko'rsatilgan tarzda o'zgartirishdan iborat.

Namuna:


        CREATE TABLE CUSTOMERS(
            CUST_ID INT    NOT NULL,
            CUST_NAME      VARCHAR (20)  NOT NULL,
            DOB            DATE,
            ZIP            VARCHAR(12),
            EMAIL_ID       VARCHAR(256),
            PRIMARY KEY (CUST_ID)
        );

Bog'liqliklarni bartaraf etishning afzalliklari asosan ikki baravarga teng. Birinchidan, Ma'lumotlar sonini ko'payib ketishini oldini oladi va shuning uchun ma'lumotlar bazasi kichikroq bo'ladi.

Ikkinchi afzallik - ma'lumotlar yaxlitligi. Ma'lumotlarning takrorlanganligi o'zgarganda ma'lumotlar bazasini yangilash juda katta xavfga ega, ayniqsa ma'lumotlar bazasida ko'plab joylarda tarqalgan bo'lsa.

Misol uchun, agar manzil va pochta indeksi kodlari uchta yoki to'rtta har xil jadvalda saqlangan bo'lsa, zip kodlaridagi har qanday o'zgarish ushbu uchta yoki to'rtta jadvaldagi har bir qaydga to'g'ri kelishi kerak.

Innovative Lab web sahifasiga xush kelibsiz biz bilan birga IT sohasidagi o'z bilimlaringizni bosqichma-bosqich oshirib boring!


Telegram kanalimizdan kunlik darslarni o'rganing  

TOSHKENT SHAHRIDAGI INHA UNIVERSITETI - 2017