Uploaded by Jamshid Sobirov

БД-кулланмаУЗБ (1)

advertisement
O‘ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA
KOMMUNIKASIYALARINI RIVOJLANTIRISH VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT
TEXNOLOGIYALARI UNIVERSITETI
URGANCH FILIALI
X. J. Raximboyev, SH. O. Sapayev, I.Z. Iskandarov
MA’LUMOTLAR BAZASI
O’quv qo’llanma
Tavsiya etildi
TATU Urganch filiali ilmiy-uslubiy kengashi tomonidan
5350400 –AKT sohasida kasb ta’limi. 5330501- Kompyuter injiniringi
("Kompyuter injiniring", "AT-servis"),5330600 – Dasturiy injiniring, 5330300 –
Axborot xavfsizligi, Telekommunikatsiya texnologiyalari.
yo’nalishlarida ta’lim olayotgan talabalarga
Urganch 2020
УДК
ББК
Tavsiya etildi
Universitet tahririy-nashriy kengashi tomonidan o’quv
qo’llanma sifatida.
Taqrizchilar:
M.S.Sharipov, texnika fanlari nomzodi, dotsent;
URDU Axborot texnologiyalari kafedrasi.
X. J. Raximboyev, SH. O. Sapayev, I.Z. Iskandarov.
Ma’lumotlar bazasi: o’quv qo’llanma; Toshkent axborot
texnologiyalari universiteti Urganch filiali. – Urganch: TATUUF,
2020. – 139 b.
ISBN
Qo'llanmada ma'lumotlar bazalarining har xil turlari va ulardan
foydalanishning tegishli usullari haqida umumiy ma'lumotlar
keltirilgan. Ma'lumotlar bazalarining relyatsion modeli, SQL tilining
asosiy tuzilmalari, normallashtirish printsiplariga va " obyektmunosabat" modelidan foydalanishga asoslangan ma'lumotlar
bazalari tuzilishini loyihalash usullari tavsiflangan. Ma'lumotlar
bazalarida tranzaktsiyalarning asosiy tushunchalari keltirilgan.
5350400 – AKT sohasida kasb ta’limi. 5330501 - Kompyuter
injiniringi ("Kompyuter injiniring", "AT-servis"), 5330600 –
Dasturiy
injiniring,
5330300
–
Axborot
xavfsizligi,
Telekommunikatsiya texnologiyalari. yo’nalishlarida ta’lim
olayotgan talabalarga tavsiya etilgan.
MUNDARIJA
Muqaddima.................................................................................................................................................. 6
1. Ma’lumotlar bazasining maqsadi, vazifalari va asosiy tushunchalari. ............................................. 7
1.1. Asosiy tushunchalar. .......................................................................................................................... 7
1.2. MBBT asosiy xususiytalari va xossalari. ........................................................................................... 8
1.3. MBBT funktsiyalari. .......................................................................................................................... 9
1.4. Model haqida tushuncha...................................................................................................................10
1.5. Relyatsion, ierarxik va semantik tarmoq. .........................................................................................11
1.6. Satr va maydon tushunchalari. .........................................................................................................11
2. Ma’lumot bazasining arxitekturasi. Uch bosqichli arxitektura. .......................................................14
2.1. Ma’lumotlar bazasini boshqarish tizimlari .......................................................................................14
2.2. MB tillarini quvvatlash.....................................................................................................................14
2.3. MBBT sinflari. .................................................................................................................................15
2.4. MBBT tarkibi va strukturasi ............................................................................................................15
2.5. Xotira va tranzaksiyalar menedjeri ..................................................................................................16
2.6. Ma’lumotlar banki tarkibi ................................................................................................................17
2.7. OLTP-texnologiya............................................................................................................................19
2.8. OLAP-texnologiya ...........................................................................................................................20
2.9. Ma’lumotlar bazasini uch bosqichli arxitekturasi ............................................................................21
3. Ma’lumotlar bazasi modellari. Mohiyat-aloqa modeli. .....................................................................24
3.1. MB tizimlarini loyixalashda modelashtirish vositalari.....................................................................24
3.2. Loyixalash bosqichlari va modellashtirish ob’ektlari ......................................................................26
3.3. «Mohiyat-aloqa» modeli elementlari ...............................................................................................27
3.4. Binar aloqalarning uch turi. ..............................................................................................................30
3.5. Mohiyatlar ........................................................................................................................................32
3.6. Aloqalar ............................................................................................................................................34
4. Ma’lumotlar bazasida relyatsion model va munosabatlar. ...............................................................35
4.1. Ma’lumotlar bazasida relyatsion model tushunchasi. ......................................................................35
4.2. Relatsion model tuzilishi. .................................................................................................................35
4.3. Domen tushunchasi ..........................................................................................................................36
4.4. Munosabat, atribut, kortej va boshqa atamalar.................................................................................37
4.5. Muqobil atamalar .............................................................................................................................39
4.6. Kalitlar..............................................................................................................................................40
5. Relyatsion algebra va relyatsion hisoblash elementlari. ....................................................................41
5.1. Relatsion algebra ..............................................................................................................................41
5.2. Relatsion algebra amallari ................................................................................................................42
5.3. Munosabatlar ustidagi amallar .........................................................................................................43
6. Ma’lumotlar bazasini normallashtirish. Normal formalar 1NF, 2NF, 3NF va Kodd. ....................57
6.1. Mantiqiy loyixalash ..........................................................................................................................57
6.2. Jadvallarni normallashtirish .............................................................................................................58
6.2. Birinchi normal forma. .....................................................................................................................58
6.3. Takrorlanuvchi guruxlarni bartaraf etish. .........................................................................................59
6.4. Funktsional bog‘lanish tushunchasi. ................................................................................................62
7. SQL tili. SQL operatorlarini yozish. ...................................................................................................68
7.1. SQL tilining vazifalari ....................................................................................................................68
7.2. Interaktiv va qurilgan SQL. ...........................................................................................................70
7.3. NOANIK VA O’TKAZIB YUBORILGAN MA’LUMOTLAR .....................................................72
7.4. SELECT operatori ............................................................................................................................74
8. Ma’lumotlar manipulyasiya qilish. Oddiy so‘rovlar yaratish.........................................................76
8.1 SELECT ma’lumotlarni tanlash operatori .........................................................................................76
8.2. INSERT ma’lumotlarni kiritish operatori ........................................................................................83
8.3. DELETE o‘chirish operatori ............................................................................................................84
8.4. UPDATE ma’lumotlarni yangilash operasiyasi ...............................................................................86
9. SQL tili yordamida maʼlumotlarni tavsiflash.....................................................................................88
9.1. Jadvallarni yaratish...........................................................................................................................88
9.2. Jadvallarni o‘chirish .........................................................................................................................88
9.3. Jadvalni o‘zgartirish .........................................................................................................................88
9.4. Jadvallar uchun cheklanishlar ..........................................................................................................89
10. SQLda jarayonlar va standart funksiyalar.......................................................................................92
10.1. Saqlanadigan MySQL protseduralari .............................................................................................92
10.2. Saqlanadigan protseduralarning afzalligi nimada?.........................................................................92
10.3. CREATE PROCEDURE protseduralarni yaratish operatori .........................................................93
10.4. characteristic xarakteristikalar bloki ..............................................................................................94
10.5. MySQL: Murakkab operatorlar ......................................................................................................96
10.6. BEGIN ... END murakkab operatori sintaksisi ..............................................................................96
10.7. Operatorlar belgisi ..........................................................................................................................97
10.8. DECLARE bayonoti ......................................................................................................................97
11. Tranzaktsiyalarni boshqarish. So'rovlarni yaratish va qayta ishlash. .........................................103
11.1. Tranzaktsiya tushunchasi .............................................................................................................103
11.2. ACID - talablar .............................................................................................................................103
11.3. Tranzaktsiyalarni bajarishda muammolar ....................................................................................105
11.4 Tranzaktsiyalarni boshqarish.........................................................................................................110
12. Maʼlumotlar bazasini administratorlash va xavfsizligini taʼminlash. .........................................114
12.1.
Xavfsizlik masalalari va MySQLga kirish imtiyozlari tizimi ...............................................114
12.2.
GRANT va REVOKE komandalari sintaksisi ......................................................................114
12.3.
GRANT misollari ..................................................................................................................119
12.4.
Jadvaldagi imtiyozlarni bekor qilish .....................................................................................120
12.5.
Funktsiyalar / protseduralarga imtiyozlar berish ...................................................................120
12.6.
MySQLga yangi foydalanuvchilarni qo'shish .......................................................................121
12.7.
GRANT komandasi ...............................................................................................................123
13.
Maʼlumotlar bazasiga murojaatni tashkil etishda ODBC va C++dan foydalanish ..............127
13.1.
Ulagichlar va API MySQL ....................................................................................................127
13.2.
Tashqi API MySQL ..............................................................................................................128
13.3.
MySQL PHP API ..................................................................................................................129
13.4.
Uchta MySQL API larini taqqoslash.....................................................................................131
14.
XML va ma'lumotlar bazasi (MySQL) .....................................................................................131
14.1.
XML nima? ...........................................................................................................................132
14.2.
XML funktsiyalari .................................................................................................................133
14.3.
Xpath misollari ......................................................................................................................133
14.4.
ExtractValue() - XML funktsiyasi ........................................................................................135
14.5.
LOAD XML operatori ..........................................................................................................137
14.6.
UPDATEXML operatori .......................................................................................................138
Adabiyotlar ro’yxati. .................................................................................................................................139
Muqaddima
Zamonaviy ma'lumotlar bazalari bilan malakali ishlash qobiliyati kompyuter
texnologiyalari sohasidagi har qanday mutaxassis uchun asosiy talablardan biridir.
Ma'lumotlar bazasi texnologiyalarini o'zlashtirishda ularning nazariy asoslarini
tushunish muhim rol o'ynaydi. Ushbu o'quv qo'llanma asosan talabalarni
ma'lumotlar bazalarining asosiy tushunchalari bilan tanishtirishga qaratilgan. Unda
turli xil ma'lumotlar bazalari va ulardan foydalanishning tegishli usullari haqida
umumiy ma'lumotlar keltirilgan. Eng keng tarqalgan relyatsion ma'lumotlar
bazalariga alohida e'tibor berilgan. Relyatsion ma'lumotlar bazalari bilan ishlash
uchun amalda standart bo'lgan SQL tilining asosiy tuzilmalari tavsiflangan.
Normallashtirish printsiplari bo'yicha ham, "obyekt-munosabat" modelidan
foydalanishga asoslangan ma'lumotlar bazalari tuzilishini loyihalash usullari
keltirilgan.
Alohida
bob
ma'lumotlar
bazalari
bilan
ishonchli
ishlashni
ta'minlashning asosiy vositasi bo'lgan tranzaktsiyalarni tavsiflashga bag'ishlangan.
Va nihoyat, XML va ma'lumotlar bazasi texnologiyalariga va ma’lumotlarni
taqsimlangan qayta ishlash tizimlariga umumiy yondashuv muhokama qilinadi.
1. Ma’lumotlar bazasining maqsadi, vazifalari va asosiy
tushunchalari.
1.1. Asosiy tushunchalar.
Keng ma’noda Ma’lumotlar bazasi (MB) deganda real dunyoning konkret
ob’ektlari haqidagi ma’lumotlar to’plamini tushinish mumkin. Lekin ma’lumotlar
xajmi oshib borishi bilan bu masalalarni xal etish murakkablashadi. Yuzaga kelgan
muammo ob’ekt va ma’lumotlarni strukturalash, ya’ni tizimga solish yo’li bilan xal
qilinadi. Ob’ekt – bu mavjud va farqlanishi mumkin bo’lgan narsadir. Ob’ektlarga
tegishli bir qator ma’lumotlar borki, ularning to’plami MB bo’ladi. Masalan, xar bir
akademik-litsey yoki kasb-hunar kolleji-bu ob’ektlar bo’lsa, ulardagi o’quvchilar
haqidagi ma’lumotlar to’plami MBga misol bo’ladi.
Xar qanday jiddiy MBning yaratilishi uning loyihasini tuzishdan boshlanadi.
MO loyihalovchisining asosiy vazifasi ob’ektlar va ularni tavsiflovchi parametrlarni
tanlash, ma’lumotlar orasidagi ma’lumotlarni o’rnatishdan iborat.
MBni yaratish jarayonida, foydalanuvchi ma’lumotlarni turli belgilar bo’yicha
tartiblashga va belgilarning turli birikmalari bo’yicha zarur ma’lumotlarni
(tanlanmani) tez topish uchun imkoniyatlar yaratilishiga harakat qiladi. Bu ishlarni
ma’lumotlar strukturalangan (tuzilmalangan) bo’lgandagina bajarish mumkin.
Strukturalash – bu ob’ektlar va ma’lumotlarning o’zaro bog‘lanishi tasvirlash
usullari haqidagi kelishuvni kiritishdir.
1-misol: strukturalanmagan ma’lumotlar.
Shaxsiy ish №16493; Aliev Karim Ergashevich; tug‘ilgan sana 1 yanvar 1979
yil; Shaxsiy ish №16498; Bokiev Dilmurod Raxmatullaevich; tug‘ilgan sana 5
dekabr 1985 yil; Shaxsiy ish №16595; Zokirov Anvar Rashidovich; tug‘ilgan sana
15 may 1984 yil.
2-misol: strukturalangan ma’lumotlar.
Shaxsiy
ishi №
Familiyasi
Ismi
Otasining ismi
Tug‘ilgan
sana
16493
Aliev
Karim
Ergashevich
01. 01. 79
16498
bokiev
Dilmurod
Raxmatullaevich 05. 12. 85
16595
Zokirov
Anvar
Rashidovich
15. 05. 84
Zamonaviy MB texnologiyasida MBni yaratish, unga xizmat ko’rsatish va
foydalanuvchilarni MB bilan ishlashiga imkon yaratish maxsus dasturiy uskunalar
yordamida amalga oshiriladi.
Bunday dasturiy uskunalar yordamida amalga
oshiriladi. Bunday dasturiy uskunalar majmuasi Ma’lumotlar bazasini boshqarish
tizimlari (MBBT) deb ataladi.
MBBT-MBni yaratish, uni dolzarb holatda ushlab turish, kerakli axborotni
topishni tashkil etish va boshqa xizmat ko’rsatish uchun zarur bo’ladigan dasturiy
va til vositalari majmuasidir.
Ma'lumotlar bazasini boshqarish tizimi (MBBT) -bu dasturiy va apparat
vositalarining murakkab majmui bo’lib, ular yordamida foydalanuvchi ma'lumotlar
bazasini yaratish va shu bazadagi ma'lumotlar ustida ish yuritish mumkin. MBBT
o’z maxsus dasturlash tillariga ham ega bo’lib, bu tillarga buyruqli dasturlash tillari
deyiladi. MBBTga Oracle, Clipper, Paradox, FoxPro, Access va boshqalarni misol
keltirish mumkin.
1.2. MBBT asosiy xususiytalari va xossalari.
MBBT asosiy xususiyatlari - bu nafaqat ma'lumotlarni kiritish va saqlashda
ishlatiladigan protseduralar tarkibi bo’lmasdan, ularning strukturasini ham
tasvirlaydi. Ma'lumotlarni o’zida saqlab va MBBT ostida boshqariladigan faylga
oldin ma'lumotlar banki, keyinchalik esa uni “Ma'lumotlar bazasi” dab yuritila
boshlandi.
Ma'lumotlarni boshqarish tizimi, quyidagi xossalarga ega:
 fayllar to’plami mantiqiy kelishuvni quvvatlaydi;
 ma'lumotlar ustida ish yuritish tili bilan ta'minlaydi;
 har xil to’xtalishlardan keyin ma'lumotlarni qayta tiklaydi;
 MBBT bir necha foydalanuvchilarning parallel ishlashini ta'minlaydi.
1.3. MBBT funktsiyalari.
MBBT funktsiyalari tarkibiga yanada aniqroq qilib quyidagilar qabul qilingan:

Tashqi xotirada bevosita ma'lumotlarni boshqarish.
Bu funktsiya MBga bevosita kiruvchi ma'lumotlarni saqlash uchun kerakli
strukturani ta'minlab tashqi xotiraga qo’shadi. MBBT ishlatishda mavjud fayl
tizimi imkoniyatlari aktiv ravishda ishlatiladi. Rivojlantirilgan MBBTda
foydalanuvchi istalgan holda MBBT fayl tizimini ishlatayapdimi bu haqda
bilishi shart emas, va agar ishlataolsa, u holda fayllar tashkil qilingan bo’ladi.
Xususiy holda MBga berkitilgan ob'ektlarni MBBT quvvatlaydi.

Tezkor xotirani bufer bilan boshqarish
MBBT odatda ancha katta hajmdagi MB bilan ish yuritadi. Bu hajm odatda
tezkor xotiraning mumkin bo’lgan hajmidan еtarli darajada katta bo’ladi.
Ma'lumki, agar ma'lumotlarning biror elementiga murojaat qilish kerak bo’lsa
tashqi xotira bilan aloqa o’rnatiladi, lekin barcha tizim tashqi xotira qurilmasi
tezligida ishlaydi. Bu tezlikni oshirishning amaliy yagona usulilaridan biri bu
operativ xotiraga ma'lumotlarni buferizatsiya qilishdir.

Tranzaktsiya bilan boshqarish
Tranzaktsiya – bu qaralayotgan MBBT MB ustida ketma-ket operatsiyalarni
bajararishidir, ya'ni ma'lumotlar bilan monipulyatsiya qilib ketma-ket
operatsiyalar yordamida MBBTga ta'sir etishdir. Tranzaktsiya ma'lumotlar
bazasini bir butun holatdan ikkinchi bir butun holatga o’tkazadi, yoki agar
ma'lum sababga ko’ra tranzaktsiyaning biror holati bajarilmaydigan bo’lsa yoki
tizimda biror xatolik yuz bersa, ma'lumotlar bazasi boshlang‘ich holatiga
qaytadi. MBning mantiqiy butunligini quvvatlash uchun tranzaktsiya
tushunchasi kerak bo’ladi.

Jurnalizatsiya
MBBT ga bo’lgan asosiy talablardan biri bu tashqi xotirada ma'lumotlarning
ishonchli saqlanishidir. Ma'lumotlarning ishonchli saqlanishi deganda har
qanday apparatli yoki dasturli to’tab qolishdan (sboydan) keyin MBBTda
MBning oxirgi holatini qayta tiklashi tushuniladi. Odatda apparatli to’xtab
qolish holati ikki xil bo’ladi: еngil to’xtab qolish, ya'ni bunda kompyuter
ishlashi kutilmaganda to’xtashi (masalan, elektr toki manbaining o’chishi),
ikkinchisi qattiq to’xtab qolish, bu tashqi xotirada ma'lumotlarning yo’qolib
ketishi bilan xarakterlanadi. Dasturli to’xtab qolishlarga quyidagilarni keltirish
mumkin: MBBTning to’satdan buzilishi bilan ishni tugatishi yoki
foydalanuvchi dasturining avariya bilan tugallanishi bo’lib natijada ayrim
tranzaktsiyalar tugallanmasdan qoladi. Har qanday holda ham MB qayta tiklash
uchun qo’shimcha ma'lumotlarni joylashtirish kerak. Boshqacha qilib aytganda
MB
da
ma'lumotlarning
butunligini
saqlash
uchun
saqlanadigan
ma'lumotlarning to’liqligi talab qilinadi. Ma'lumotlarning ishlatilayotgan qismi
qayta tiklanishi uchun alohida ishonchli saqlanishi lozim. Bunda to’liq
ma'lumotlarni quvatlash uchun keng tarqalgan usullardan biri MB ning
o’zgartirish jurnalini olib borish usuli ishlatiladi.
1.4. Model haqida tushuncha
MB bilan ishlashga kirishishdan oldin ma’lumotlarni tasvirlash modelini tanlab
olish kerak. U quyidagi talablarga javob berishi lozim:
-axborotni kurgazmali tasvirlash;
-Axborotni kiritishda soddalash;
-axborotni izlash va tanlashda qulaylik;
-boshqa omborga kiritilgan ma’lumotdan foydalanish imkoniyatining
mavjudligi;
-MBning ochiqligini ta’minlash (yangi ma’lumotlar va maydonlar qo’shish,
ularni olib tashlash imkoniyatlari va hokazo).
MB bitta yoki bir necha modellarga asoslangan bo’lishi mumkin. Xar qanday
modelga o’zining xossalari (parametrlari) bilan tavsiflanuvchi ob’ekt sifatida qarash
mumkin. Shunday ob’ekt ustida biror amal (ish) bajarsa bo’ladi. MB modellarining
uchta asosiy turlari mavjud:
1.5. Relyatsion, ierarxik va semantik tarmoq.
Relyatsion (lotin tilidagi relation-munosabat so’zidan olingan) modelda
ma’lumotlarni saqlash uni tashkil etuvchi qismlari orasidagi munosabatlarga
asoslangan. Eng sodda holda u ikki o’lchovli massiv yoki jadvaldan iborat bo’ladi.
Murakkab axborot modellari ana shunday jadvallarning o’zaro bog‘langan
to’plamidan iborat.
MBning ierarxik modeli pastki pog‘onadagi yuqori pog‘onadagiga bo’ysinish
tartibida joylashgan elementlar to’plamidan iborat bo’ladi va ag‘darilgan
daraxt(graf)ni tashkil etadi. Ushbu model sath, tugun, bog‘lanish kabi parametrlar
bilan tavsiflanadi. Uning ishlash tamoyili shundayki, quyi sathdagi bir necha
tugunlar bog‘lanish yordamida yuqoriroq sathdagi bitta tugun bilan bog‘langan
bo’ladi. Tugun - bu ierarxiyaning berilgan sathida joylashgan elementning axborot
modelidir.
MBning semantiq tarmoq modeli ierarxik modelga o’xshashdir. U xam tugun,
sath, bog‘lanish kabi asosiy parametrlarga ega. Lekin semantiq tarmoq modelida
turli sathdagi elementlar orqali «erkin», ya’ni «har biri xamma bilan» ma’noli
bog‘lanish qabul qilingan.
1.6. Satr va maydon tushunchalari.
Ko’pchilik MBlar jadval tuzilmasiga ega. Unda ma’lumotlar adresi satr va
ustunlar kesishmasi bilan aniqlanadi.
yozuvlar deb ataladi.
MBda ustunlar-maydonlar, satrlar esa
Maydonlar MBning tuzilmasini, yozuvlar еsa, unda
joylashgan ma’lumotlarni tashkil etadi.
Maydonlar – MB tuzilmasining asosiy еlementlaridir.
Ular ma’lum
xususiyatlarga ega bo’ladilar. Har qanday maydonning asosiy xususiyati uning
o’zunligidir. Maydon o’zunligi undagi belgilar soni bilan ifodalanadi.
Maydonning yana bir xususiyati, uning nomidir. Maydonda uning nomidan
tashqari yana imzo xususiyati ham mavjud. Imzo-ustunning sarlavhasida aks
ettiriladigan axborotdir. Uni maydon nomi bilan aralashtirib yubormaslik lozim.
Agar imzo berilmagan bo’lsa sarlavhada maydon nomi yozib quyiladi. Turli tipdagi
maydonlar turli maqsadlarda ishlatiladi va turli xossalarga ega bo’ladi.
Maydonlarning xususiyati bilan tanishib chikamiz:
1. Oddiy matn maydoni. Belgilar soni 255 dan oshmasligi kerak.
2. MEMO-katta o’lchamli matn maydoni. Belgilar soni 65535dan oshmasligi
shart. Oddiy matn va MEMO maydonida hisob ishlarini bajarib bo’lmaydi.
3. Sonli maydon.
Sonli ma’lumotlarni kiritishga xizmat qiladi va hisob
ishlarini bajarishda foydalaniladi. Bu maydon 1,2,4,8 va 16 baytli bo’lishi mumkin.
4. Sana va vaqt maydoni. Bu maydon sana va vaqtni bichimlangan holda saqlab
quyish imkonini beradi (01. 06. 01 20:29:59). 8bayt o’lchamga ega.
5. «Pul birligi» nomi bilan ataluvchi maydon. Bu maydondan hisob kitob
ishlarini yuritishda foydalaniladi.
6. Hisoblagich maydoni. Bu maydon 4 bayt o’zunlikka va avtomatik ravishda
ma’lum songa oshib borish xususiyatiga ega.
Ushbu maydondan yozuvlarni
nomerlashda foydalanish qulaydir.
7. Mantiqiy amal natijasini saqlovchi maydon. Bu maydon «rost» (true) yoki
«yolg‘on» (false) qiymatni saqlaydi. Maydon o’lchami 1bayt.
8. OLE-nomi bilan yurituvchi maydon. Bu maydon Excel jadvalini, Word
xujjatini, rasm, ovoz va boshqa shu kabi ma’lumotlarni ikkilik sanoq sistemasida
saqlaydi. Maydon o’lchami 1Gbaytgacha.
9. Giperssilka maydoni. Bu maydon belgi va sonlardan iborat bo’lib, biror fayl
yoki saytga yo’l ko’rsatadi.
10. Qiymatlar ro’yxatidan iborat bo’lgan maydon. Bu maydon bir qancha
qiymatlardan iborat bo’lgan ro’yxatdan tanlangan aniq bir qiymatni saqlaydi.
Jadvallar orasidagi munosabatlar ishonchli ishlashi va bir jadvaldagi yozuv
orqali ikkinchi jadvaldagi yozuvni topish uchun jadvalda alohida maydon-unikal
maydon bo’lishini ta’minlash kerak.
Unikal maydon-bu qiymatlari takrollanmaydigan maydondir.
Misol sifatida talabalar haqidagi ma’lumotlarni saqlovchi ma’lumotlar
bazasining bir qismini keltiramiz.
Maydon nomi
Talabaning ombordagi o’rni
Talaba F. I. Sh.
Talabaning tug‘ilgan joyi
haqida
Talabaning tug‘ilgan kuni
………………………….
Talabaning kursi
Talabaning rasmi
Maydon xususiyati
Maydon xajmi
Hisoblagich maydoni
4 bayt
Oddiy matnli maydon
255 belgi
Oddiy matnli maydon
255 belgi
Sana va vaqt maydoni
8 bayt
………………………
Qiymatlar ro’yxatidan
iborat bo’lgan maydon
OLE-nomi bilan
yuritiluvchi maydon.
Talaba haqida qo’shimcha
MEMO-katta o’lchamli
ma’lumotlar
matn maydoni
1G bayt
65535 belgi
2. Ma’lumot bazasining arxitekturasi. Uch bosqichli arxitektura.
2.1. Ma’lumotlar bazasini boshqarish tizimlari
Ma’lumotlar bazasini boshqarish tizmlari (MBBT) ma’lumotlar bazasiga
bo’lgan barcha murojatlarni boshqaruvchi dasturiy ta’minotdan iborat.
MBBT – ma’lumotlar bazasini boshqaruvchi va baza bilan ishlashni
ta’minlovchi dasturiy kompleksdir. MBBT axborot tizimi tarkibidagi maxsus dastur
kabi qo’llanilmasada axborot tizimi tarkibida ma’lumotlarni boshqarish bilan
bog‘liq bo’lgan kombinatsiyalashgan qismi sifatida qo’llaniladi. Maslan, internetmagazin, katalog, qidirish tizimi, buxgalteriya dasturlari. Adabiyotlarda an’anaviy
xolda eslatilmagan bo’lsa relyatsion ma’lumotlar bazasi - tablitsalar asosida
ma’lumotlar bazasini nazarda tutiladi. Xozirgi vaqtda ma’lumotlar bazasi
tushunchasi SQL - Structured Query Language – strukturalashgan so’rovlar tili bilan
chambarchas bog‘liq. Eng ko’p qo’llaniladigan MBBT lar maxsuloti ishlab
chiquvchilar: Oracle, Firebird, MS SQL Server, IBM DB2, Interbase, MySQL,
FoxPro.
2.2. MB tillarini quvvatlash
Ma'lumotlar bazasi bilan ishlashda ma'lumotlar bazasi tili deb ataluvchi
maxsus til ishlatiladi. Zamonaviy MBBT MB bilan ishlash uchun barcha kerakli
vositalarni yagona birlashgan til qo’llab quvvatlaydi. Hozirgi kunda relyatsion
MBBT uchun keng tarqalgan standart til - bu SQL (Structured Query Language)
tilidir.

SQL tili relyatsion MB sxemasini aniqlaydi va ma'lumotlar ustida
(manipulyatsiya) ish yuritadi. Unda MB ob'ekti nomlariga (relyatsion MB uchun –
jadval nomi va uning ustunlari) o’zgartirishlar kiritish SQL tili kompilyatori
yordamida amalga oshiriladi. Bundan tashqari uning ichki identifikatorlariga
o’zgartirishlar kiritishni ham amalga oshiradi. MBBT ning ichki qismi (yadrosi)
jadval nomlari va uning ustunlari bilan umuman ishlamaydi.

SQL tili o’z ichiga MB butunlik chegarasini aniqlashning maxsus
vositasini oladi. MBning butunligini tekshirishni ta'minlaydi. MBni modifikatsiya
qilish uchun kompilyatsiya vaqtida SQL kompilyatori mos dasturiy kodni
generatsiya qiladi.

SQL tilining maxsus operatorlari MB «ko’rinish»lari deb ataladigan
jadvallarni aniqlashga imkon beradi. Bu «ko’rinish»lar MB da nomlangan
ustunlardan iborat so’rovlar shaklida saklanadi (relyatsion MB ga nisbatan ixtiyoriy
so’rovning natijasi jadval bo’ladi). Foydalanuvchi uchun «ko’rinish», xuddi MB
saqlanadigan ixtiyoriy bazaviy jadvaldek, jadvaldir, lekin «ko’rinish»lar yordamida
konkret foydalanuvchi uchun MB ko’rinishini chegaralash yoki kengaytirish
mumkin. «Ko’rinish»larni ko’llash SQL tili darajasida ham amalga oshiriladi.

MB obektiga avtorizatsiya ruxsati SQL tilining maxsus opreatorlar
to’plami yordamida amalga oshiriladi.
MB ob'ektlariga ostuplar SQL operatorlarining maxsus tuplami asosida
yaratiladi. Bu erdagi goya, xar xil foydalanuvchilar turli polnomochiyalarga ega
bulishi kerak. MB sining jadvalini yaratgan foydalanuvchi, shu jadval bilan ishlash
polnomochiyalarini tulik tuplamiga ega. Bu tuplamga boshka foydalanuvchilarga
barcha yoki ba'zi polnomochiyalarni
berish xam kiradi, xudi shunday
polnomochiyalarni berish polnomochiyasi xisobga olgan xolda. Foydalanuvchi
polnomochiyalari maxsus jadval-kataloglarda yozilgan buladi va ularning kontroli
SQL tili darajasida xam amalga oshiriladi.
2.3. MBBT sinflari.
Dastlabki MBBT larga quyidagilar kiradi:
 Invertirlangan ro’yxatlar asosidagi tizimlar
 Ierarxik tizimlar.
 Tarmoqli tizimlar
Nisbatan yangi MBBT lar:
 Relyatsion
 Ob’ektga -mo’ljallangan
 Yuqoridagi ikkitasi aralashmasi.
Ma’lumotlarni saqlashni tashkil qilinishi va ma’lumotlar bazasiga murojat
usuliga qarab MB va MBBT ni quyidagi turlarga ajratiladi:
1. lokal (personal) – MB va MBBT bitta kompyuterda joylashadi va tarmoqda
ishlash imkoniga ega emas;
2. tarmoq (integrallashgan) – MB va MBBT lar tarmoqda serverda joylashadi,
murojat qiluvchi ilova esa foydalanuvchi kompyuterida joylashadi;
3. taqsimlangan ma’lumotlar bazasi – MB tarmoqdagi turli kompyuterlarda
joylashadi, MBBT esa ular ustidan nazoratni olib boradi. Foydalanuvchilar
kompyuteridagi ilovalar esa MBBT ga so’rovlar yuborib natijalarni oladi.
2.4. MBBT tarkibi va strukturasi
Ma’lumotlar bazasini boshqarish tizimi (MBBT) – bu dasturiy va til
vositalari bo’lib, ko’p sonli foydalanuvchilar tomonidan hamkorlikda ma’lumotlar
bazasini yaratish, ishlatish va foydalanish ishlari uchun mo’ljallangan.
1. Ma’lumotlarni saqlash joyi va metama’lumotlar
2. xotira menedjeri
3. Tranzaksiyalar menedjeri
Sxemaning pastki qismida – ma’lumotlarni saqlash joyi. Qabul qilinganidek
sxemaning disk shaklidagi komponentlari ma’lumotlarni saqlash joyini bildiradi.
Joriy xolda bu komopnent faqat ma’lumotlarni emas, balki ma’lumotlar strukturasi
xaqidagi informatsiyani tashkil qiluvchi metama’lumotlarni ham o’z ichiga oladi.
Masalan, agar u relyatsion MBBT bo’lsa metama’lumotlar tarkibiga munosabatlar
(jadval) nomlari, munosabatlardagi atributlar nomlari kiradi.
Ko’pincha MBBT ma’lumotlar indeksini qo’llab quvvatlaydi. Indeks– bu
ma’lumotlar strukturasi bo’lib ma’lumot elementini tez topishga imkon beradi.
Masalan, xisob raqami va balansini saqlovchi munosabat xisob – raqam indeksiga
ega bo’lishi mumkin. Bu xisob raqami ma’lum bo’lganda balansni tez topish
imkonin beradi. Indekslar – saqlanadigan ma’lumotlar qismi, tavsif esa qaysi
atributlar indekslarga egaligini ko’rsatadi.
2.5. Xotira va tranzaksiyalar menedjeri
Xotira menedjerini ko’rib chiqamiz. Uning vazifasi ma’lumotlar bazasidan
talab etilgan ma’lumotni olish va tizimda yuqori daraja talabi asosida bazadagi
ma’lumotni o’zgartirish. Navbatdagi komponent so’rovlar protsessori yoki so’rovlar
menedjeri deb ataladi. Unig vazifasi – talab etilgan amalni bajarishni eng qulay
usulini topish va xotira menejeriga mos buyruqni еtkazish. Bu еlement faqat
so’rovlarni qayta ishlamaydi, shu bilan birga ma’lumotlar, metama’lumotlarni
o’zgartirishni ham talab etadi.
Tranzaksiyalar menedjeri komponentitizimni butunligi uchun javob beradi.
U ko’plagan so’rovlarni bir vaqtda bajarishni ta’minlaydi va tizim ishdan chiqqanda
ma’lumotlar ximoyasini ta’minlaydi. U so’rovlar menjeri bilan o’zaro aloqada
bo’ladi, ya’ni u joriy so’rov qanday ma’lumotlarga ta’sir qilishini bilishi va zarur
bo’lganda ba’zi so’rov yoki amallarni bajarilishini kechiktirish mumkin. U xotira
menedjeri bilan ham o’zaro aloqada bo’ladi, chunki ma’lumotlarni ximoyalash
sxemasi tarkibiga o’zgartishlashni qayd qilish fayli ham kiradi.
Oddiy MB tizimida xotira menedjeri bazavoy operatsion tizimni fayl tizimi
bo’lishi mumkin. Xotira menedjeri2 ta komponentdan iborat:
• bufer menedjeri. U asosiy xotirani boshqaradi.
• fayl menedjeri. U fayllarni diskda joylashuvini nazorat qiladi va fayldan
bufer menejiri so’rovlariga mos xolda blok yoki bloklarni oladi.
MBBT ma’lum amallarni bajarilishini kafolatlashi kerak. Amalni natijasi,
xatto tizimga jiddiy shikast etganda ham yo’qolmasligi muxim. Tiipk MBBT
foydalanuvchiga bir necha so’rovlarni bitta tarnzaksiya shaklida gruppalash
imkoniyatini yaratadi. Tranzaksiya– bu yagona butun shaklda ketma ket bajariluvchi
amallar guruxidir.
Ko’pincha MB ko’plagan tarnzaksiyalarni parallel bajarilishini ta’minlaydi
(masalan, bir nechta bankomatlarga bir vaqtda xizmat ko’rsatish). Bunday
tranzaksiyalarni barchasin bajarilishini kafolatlash – MBBT ning tranzaksiyalar
menedjeri deb taluvchi komponentining vazifasidir. Tranzaksiyalar bajarilishiga
bo’lgan asosiy talablar (ular ACID – xossa deb ataladi):
• atomarlik. Ya’ni tranzaksiyani xammasi bajarilishi yoki xech biri
bajarilmasligi talab etiladi. Masalan, bankomatdan pulni olish va mijozning xisobiga
mos debetni kiritish yagona atomar ttranzaksiya bo’lishi kerak. Bu amallarni aloxida
bajarilishiga yo’l qo’yilmaydi.
• ziddiyatsizlik. Aviatsion MB uchun ziddiyatsizlikka misol samolyotda xech
bir o’rin 2 ta yo’lovchi uchun bron qilinmasligi kerak.
• izolyatsiya. 2 ta yoki undan ko’p tranzaksiyalar parallel bajarilayotgan
ularni natijasi bir biridan izolyatsiya qilinishi lozim. Ya’ni 2 ta tranzaksiyani ketma
ket bjarilishidagi natija, ular ketma ket bajarilganda yuz bermaydigan natijaga olib
kelmasligi kerak. Masalan, agentlar samolyotda bitta bo’sh o’rin qolganda bilet
sotishda ulardan faqat bittasini so’rovi qanoatlantirilishi, ikkinchisiniki esa inkor
etilishi kerak. Chunki parallel amal natijasida bitta o’ringa 2 ta bilet sotilishi mumkin
emas.
• vaqt bo’yicha davomiylik. Agar tranzaksiya tugagan bo’lsa, uning natijasi
tizim buzilishi natijasida yo’qotilmasligi kerak.
2.6. Ma’lumotlar banki tarkibi
1. Informatsion komponenta.
Informatsion komponentaning asosiy qismi (yadrosi) ma’lumotlar bazasi
xisoblanadi. Qoidaga ko’ra, ma’lumotlar bazasiga faqat predmet sohasidagi
ma’lumotlar emas, shu bilan birga ma’lumotlar bazasini tavsiflovchi ma’lumotlar
ham kiradi.o’z strukturasini tavsifi sxema deb ataladi.
2. Ma’lumotlar bankining dasturiy vositalari.
Ma’lumotlar bankining dasturiy vositasi axborot tizimining faoliyati
davomida uning barcha qismlarining o’zaro aloqasini ta’minlaydi. Dasturiy
vositaning asosi sredstv - MBBT. Uning yadrosi ma’lumotlarni krirtish, chiqarish,
qayta ishlash va saqlashni ta’minlaydi, hamda tizimni sozlash va testlashni amalga
oshiradi. MBBT tarkibiga kiruvchi translyatorlar MBBT da ishlatiladigan til
vositalarini kompilyatsiya va interpretatsiya amallarini bajaradi. Utilitlar MB ni
tiklash, MBn faoliyati xaqidagi statistikani olib borish kabi yordamchi funksiyalarni
bajaradi. MBBT biror operatsion tizim muxitida ishlaydi va ma’lumotlar bankiga
murojat etganda o’zaro aloqada bo’ladi.ya’ni OT ma’lumotlar banki tarkibiga kiradi
deb xisoblash mumkin. Amaliy dasturlar echilayotgan masalaga mos xolda
ma’lumotlar bazasiga bo’lgan so’rovlarni qayta ishlaydi.
3. Ma’lumotlar bankining til vositalari.
Bu ma’lumotlar bankining muxim komponenti xisoblanadi. Chunki ular
foydalanuvchi va ma’lumotlar banki o’rtasidagi interfeysni ta’minlaydi. Til
vositalari yuqori darajali tid xisoblanadi, bular:
Ma’lumotni tavsiflash tillari (MTT), DDL (Data Definition
Language);
 Ma’lumotlarni manipulyatsiyalash (boshqarish) tillari (MMT), DCL
(Data Control Language).
MTT tarkibiga quyidagilar kiradi:


Sxemalarni tavsiflash tili;
 Saqlanadigan ma’lumotlarni tavsiflash tili;
 Tashqi ma’lumotlarni tavsiflash tili.
MTT protsedurali va noprlseduraliga bo’linadi. Protsedurali til bilan
ishlaganda natijani olish uchun qaysi amallar qaysi ob’ektlar ustida bajarilishi
ko’rsatish zarur. Noprotsedurali tilda qanday olish emas nimani olish kerakligi
ko’rsatiladi. Zamonaviy MBBT lar ikkala turdagi MTT ga ega.
Ma’lumotlar bankining texnik vositalari.
Qo’llaniladigan texnik vositalar ma’lumotlar bazasi xajmi va uning
strukturasiga bog‘liq aniqlanadi. Ma’lumotlar bankida odatda universal EHM,
ma’lumotlar bazasiga ma’lumotlar kiritish va chiquvchi ma’lumotlarni tasvirlash
uchun perefirik qurilmalar qo’llaniladi. Ma’lumotlar banki tarmoqda joylashganda
mos texnik vositalar talab etiladi.
Ma’lumotlar bankining tashkiliy-metodik (xujjatlar) vositalari.
Bunga ma’lumotlar banki bilan ishlovchi turli kategoriyadagi
foydalanuvchilar uchun mo’ljallangan instruksiya beruvchi metodik va reglament
beruvchi materiallar kiradi.
Ma’lumotlar banki administratori.
Bir yoki ko’p sonli mutxassislar bo’lib, ma’lumotlar bankini yaratish,
faoliyatini yuritish va rivojalantirishini ta’minlaydi.
MBBT dan ikki gurux shaxslari foydalanadi:
1. Chekli yoki oddiy foydalanuvchilar;
2. MB administratori;
MB administratorini xizmat doirasiga quyidagi ishlar kiraddi:
a) Predmet sohani tahlili va foydalanuvchilar va axborotni o’rnini aniqlash;
b) Ma’lumotlarni tuzilishini loyihalash va ularni takomillashtirish;
c) Qo’yilgan topshiriqlar va ma’lumotlarni bir butunligini ta’minlash;
d) MB ni yuklash va yuritish;
e) Ma’lumotlarni himoya qilish;
f) MB ni tiklashni ta’minlab berish;
g) MB ga murojaatlarni yiqish va statistik qayta ishlab berish;
h) MB ga ko’p foydalanuvchilar rejimida ishlaganda, ma’lumotlarni o’chib
ketishidan ximoya qilish;
i) Texnik vositalar nosoz bo’lib ishdan chiqqanda, ma’lumotlarni saqlash va qayta
tiklash ishlarini bajarish;
2.7. OLTP-texnologiya
OLTP (OnLine Transaction Processing) — tranzaksiyalarni onlayn qayta
ishlash. Tarnzasyailar bilan ishlovchi tizimdagi MB larda tarnzaksiyalar xajmi katta
emas, biroq tranzaksiyalar oqimi katta. Bunda tizim foydalanuvchiga maksimal
tezkorlik bilan javob bershi talab etiladi.
OLTP atamasi tizimlarga (ilovalarga) nisbatan ham qo’llaniladi. OLTPtizimlar real vaqt rejimida ma’lumotlarni (amallar, xujjatlar) kiritish, strukturali
saqlash qayta ishlash uchun mo’ljallangan.
Qo’llanilishi
OLTP-ilovalar ko’pgina soxalardagi keng spetrdagi masalalarni qamrab oladi
– bank va birja operatsiyalari, ishlab chiqarishda – konveyrda detal o’tishini qayd
qilish, veb sapytning tashrif buyuruvchisini statistikada qayd qilish, buxgalteriya va
ombor xisobi va x.k. OLTP ilovalari qoidaga ko’ra ma’lumotlarni qayti ishlash bilan
bog‘liq bo’lgan masalalarni avtomatlashtiradi. Maslan, buyurtmalarni kiritish, bank
tarnzaksiyalari. OLTP-tizimlar qisqa vaqt davomida ko’p sonli tranzaksiyalarni
bajarish uchun loyixalanadi, rostlanadi va optimallashtiriladi. Qoidaga ko’ra bu
unchalik moslashuvchanlik talab etilmaydi. Ko’pincha mma’lumotlarni kiritish,
modifikatsiyalash, o’chirish va operativ xisobotni yaratish uchun fiksirlangan sonli
ishonchli va xavfsiz metodlariga ega. Effektivlik ko’rsatgichi bir sekundda
bajarilgan tranzaksiyalar miqdoridan iborat. Odatda OLTP-tizimlari analitik
imkoniyati cheklangan (yoki umuman yo’q).
Talablar
Ma’lumotlarning kuchli normallashtirilgan modeli.

Xatolik yuz berganda, tranzaksiya to’laligicha bekor qilinishi va tizim
tranzaksiya boshlanishidagi xolatiga qaytishi lozim.

Ma’lumotlarni real vaqtda qayta ishlash.
Afzalliklari va nuqsonlari

OLTP-tizimlar
katta
bo’lmagan
diskret
tranzaksiyalar
uchun
optimallashtirilgan. Biror kompleks ma’lumotlar so’rovi (masalan, ma’lum tovarni
ma’lum filialda kvartallar bo’yicha sotish dinamikasi) analitik ilovalar (OLTP)
uchun xarakterli. Bitta shunday so’rovni bajarish uchun ko’p vaqt va kompyuter
resurslari zarur bo’ladi. Bu esa joriy tranzaksiyani bajarilishi sekinlatadi
2.8. OLAP-texnologiya
Tavsif va tushunchalar
OLAP (On-Line Analytical Processing )— еchim qabul qilish jarayonini qo’llab
quvvatlash maqsadida ko’p o’lchamli ma’lumotlarni yig‘ish, saqlash va tahlil
qilishnig metod va vositalaridan foydalanuvchi ma’lumotlarni operativ taxliliy
qayta ishlovchi texnologiya.
OLAP (angl. OnLine Analytical Processing, real vaqtda analitik tahlil) — bu
xisobot va xujjatlarni yaratish va dinamik tasvirlash amallaridan iborat
ma’lumotlarni qayta ishlash texnologiyasidir. Taxlilchilarning MB ga bo’lgan
murakkab so’rovlarini tez qayta ishlash uchun qo’llaniladi.
Yechim qabul qilish jarayonini intensiv qo’llab quvvatlash zaruriyati yangi
turdagi instrumentlarni paydo bo’lishiga olib keldi. Ma’lumotlarini operativ taxlil
qilishning tizimi (OLAP) deb ataluvchi ushbu instrumenal vosita еchim qabul
qilishni qo’llab quvvatlash, biznesni modellashtirish va amallarni taxlil qilish uchun
yangi taxlil muxitin bilan a’minlaydi. Barcha OLAP tizimlar 4 ta asosiy
xarakteristkaga ega:
 Barcha OLAP tizimda ma’lumotlarni ko’p o’lchamli taxlil texnologiyasi
qo’llaniladi.
 Barcha OLAP izimlar ma’lumotlar bazasini keng qamrovli qo’llab
quvvatlaydi.
 OLAP tizimlar foydalanuvchilar uchun oddiy va qulay bo’lgan grafik
interfeysga ega.
 OLAP tizimlarda klient/server texnologiya qo’llaniladi.
OLAP so’rovlari
So’rovlarni qayta ishlash uchun OLAP texnologiyani qo’llashni maqsadi —
bu tezkorlik. Relyatsion MB larda ob’ektlar xaqidagi ma’lumotlar yaxshi
normallashtirilgan aloxida jadvallarda saqlanadi. Bu struktura operatsion MB lar
uchun qulay, biroq bunday MB da murakkab ko’p jadvalli so’rovlar nisbata sekin
bajariladi. So’rovlar (o’zgartirishmas) uchun eng qulay model bu ko’p o’lchamli MB
xisoblanadi.
OLAP tezda relyatsion MB ni tasvirini oladi va uni uni fazoviy model
shaklida strukturalashtiradi.
Ishchi ma’lumotlardan yaratilgan OLAP-struktura OLAP-kub deb ataladi. Kub
jadvallarni yulduz sxemasini qo’shishi orqali yaratiladi. “Yulduz” markazida kalit
ma’lumotlar joylashgan markazida faktlar jadvali joydashadi. Bu asosida so’rovlar
amalga oshiriladi. O’lchovlar joylashgan ko’plagan jadvallar fakt jadvaliga
birlashadi.
2.9. Ma’lumotlar bazasini uch bosqichli arxitekturasi
Ma’lumotlar bazasini boshqarish tizimini qanday bo’lishini (qurilishi)
o’rganishdagi ilmiy izlanishlar, ularni amalga oshirishni xilma xil usullarini taklif
qildi. Bulardan eng hayotiysi, amerika standartlashtirish kommiteti ANSI
(American National Standarts Institute) tomonidan taqdim etilgan MBni uch
bosqichli tashkil qilish bo’lib chiqdi.
Predmet
sohasi
Alohida
foydalanuvchilar
MB Administratori
MA’LUMOTLARNING INFOLOGIK MODELI
Predmet sohasining umulashgan, biror EHM yoki MBBT ga
bog‘liq bo‘lmagan tavsifi (ma’lumotlar to‘plami, tipi,
aloqalari va b.)
MA’LUMOTLARNING DATALOGIK MODELI
Opisanie na yazыke konkretnoy SUBD
MA’LUMOTLARNING FIZIK MODELI
Saqlanadigan ma’lumotlarning tavsifi
MB
1. Tashqi modellar – eng yuqori bosqich, bunda har bir model o’zini
ma’lumotlar tasvir qabul qiladi. Har bir ilova, o’ziga kerakli zarur bo’lgan
ma’lumotlarni ko’radi va qayta ishlaydi. Masalan, ishchilarni malakasi bo’yicha
taqsimlash tizimi, xizmatchi malakasi haqidagi ma’lumotlarni ishlatadi, uni oklad,
manzili, telefoni haqidagi axborotlar qiziqtirmaydi va aksincha, oxirgi ma’lumotlar
xodimlar bo’limi qism sistemasida ishlatiladi.
2. Konseptual bosqich – markaziy boshqarish zvenosi bo’lib, bunda MB eng
umumiy holda tasvirlanib, u shu MB bilan ishlaydigan barcha ilovalar ishlatiladigan
ma’lumotlarni qamrab oladi. Umuman konseptual bosqich MB yaratilgan predmet
sohani umumlashgan modelini akslantiradi. Bu model ob’ektlarning muhim
xossalarini akslantiradi.
3. Fizik bosqich – fayllarda joylashgan ma’lumotlarni tashqi axborot
saqlovchilarida joylashishini belgilaydi. Bu arxitektura ma’lumotlar bilan
ishlaganda mantiqiy va fizik mustaqillikni ta’minlab beradi.
Mantiqiy mustaqillilik bitta ilovani o’zgartirish, shu baza bilan ishlaydigan
boshqa ilovani o’zgartirmasdan amalga oshirishni bildiradi.
Fizik mustaqiliylik, saqlanuvchi ma’lumotlarni bir qattiq diskdan boshqasiga
ko’chirganda uni ishlash qobiliyatini saqlab qolgan holda o’tkazishni bildiradi.
3. Ma’lumotlar bazasi modellari. Mohiyat-aloqa modeli.
3.1. MB tizimlarini loyixalashda modelashtirish vositalari.
MB tizimlarini loyixalashda modelashtirishning turli vositalari qo’llaniladi,
ya’ni bitta loyixalanayotgan tizim doirasida turli maqsad uchun mo’ljallangan
modellar zarur bo’ladi.
1975 yil nashir qilingan ANSI/XZ/SPARC xisobotida MB tizimining ko’p
pog‘onali konsepsiyasi tan olingan va MB ni tasvirlash uchun maxsus konseptual
daraja zarurligi aytib o’tilgan. Bundan tashqari 2 ta daraja aytib o’tilgan: bu tashqi
va ichki daraja. Har bir arixitekturaviy darajada ma’lumotlarning u yoki bu
modeliqo’llanilishi nazarda tutilgan. Bundan tashqari, tashqi (amaliy,
foydalanuvchiga tegishli) darajada bunday modellar juda ko’p bo’lishi mumkin.
Ular asosida tavsiflanadigan modellar, hamda sxemalar mosxolda tashqi, konseptual
va ichki deb ataladi.
Ma’lumki, loyixalashning asosiy maqsadi konkret ma’lumotlar bazasini
qurishdan iborat bo’lib, ushbu ma’lumotlar bazasi loyixalovchining predmet sohasi
haqidagi va ushbu MB orqali еchiladigan foydalanuvchilar masalalari haqidagi
tasavvurlarini o’zida mujassamlashtiradi. Ma’lumotlar bazasiga konkret modelning
natijasi sifatida qarash orqali, biz pritsiplarni aniqlash (qanday baza bo’lishi kerak)
bosqichini ushbu prinsiplarni konkret MBBT, Operatsion tizim va dasturlash
muxitida amalga oshirish bosqichidan ajaratish orqali bosqichlar tartibini
o’rnatamiz. Amaliyotda ma’lumotlar bazasini amalga oshirish va ularni qurish
prinsiplari orasida doimo tafovut kuzatiladi. Tafovut turli xil sabablar oqibatida
yuzaga keladi, biroq ko’pincha bu ba’zi prinsipial cheklovlardan yaqqol va noyaqqol
voz kechish, masalan ma’lumotlar modeliga yoki qayta ishlash algoritmlariga
qo’yilgan cheklovlardan voz kechish natijasida yuzaga keladi.
Abstrakt darajada loyixalashni fizik amalga oshirish darajasidan ajratishni
muximligi shundaki, prinsiplarni e’lon qilish orqali biz qo’llanilishi soxasini
chegaralab olamiz. Birinchidan, masalani o’lchami va murakkabligi shu darajagacha
qisqartirilishi lozim, bunda mavjud sharoitda (mavjud resurslar, loyixachining
malakasi, foydalanuvchilarning ko’nikmalari va boshqa) MB ni amalga oshirish
imkoni mumkin bo’lishi lozim. Ikkinchidan MB turli foydalanuvchilar tomonidan
ko’p qirrali foydalanish uchun yaratilgan va uni loyixalash bosqichida inobatga
olingmagan shartlarni keyinchalik amalga oshirish muvaffaqiyatsizlikka olib
kelmasligi lozim.
Ma’lumotlar bazasini loyixalash — bu o’zaro bog‘liq tavsiflar tizimini
yaratishning tartiblangan va formallashgan bosiqichdir. Ya’ni bu tizim predmet
soxaning modeli bo’lib, ma’lumotlar bazasida saqlanayotgan ma’lumotlarni
predmet soxasidagi ob’ektlar bilan bog‘liqligini ta’minlaydi. Ushbu tavsiflarning
amaliy ahamiyati shundan iborat, MB da ma’lumotlarni saqlash shakli
(ma’lumotlarni xotirada fizik joylashuvi va ularni izlash mexanizmi) ) xaqida
tasavvurga ega bo’lmagan foydalanuvchi bazaga so’rov berish orqali predmet
sohasini ob’ektining real xolati xaqidagi ma’lumotni olish imkoniga ega bo’lishi
kerak.
Loyixalash predmet sohasini taxlil qilish va loyixalanayotgan tizimga qo’yilgan
funksional va boshqa talablarni aniqlashdan boshlanadi. Loyixalash odatda odam
(odamlar guruxi) — tizim taxlilchisi (amalda ko’pincha MB administratori). U
maxsus tayinlagan xodim, yoki еtarli malakaga ega bo’lgan MBning bo’lg‘usi
foydalanuvchisi bo’lishi mumkin. Dastlab tizim taxlilichisi foydalanuvchilar bilan
suxbatlashish orqali olingan aloxida tasavvurlarni va ma’lumotlar xaqidagi o’zining
tasavvurlarini to’plab yaratiladigan ma’lumotlar bazasini umulashtirilgan norasmiy
tavsifini yaratadi. Xamma uchun tushunarli bo’lgan odatiy tildagi so’zlar, matematik
ifodalar, jadvallar, graflar va boshqa vositalar orqali bajarilgan bu tavsif infologik
model deb ataladi.
Ushbu tushunib olishda odamga mo’ljallagan model ma’lumotlarni saqlashning
fizik parametrlariga (EXM xotirasi) bog‘liq emas. Shuning uchun infologik model
real predmet sohasida o’zgartirish bo’lmaguncha o’zgartirilmaydi.
Qolgan modellar mashinaga mo’ljallangan bo’ladi. Ular yordamida MBBT
amaliy dasturlar va foydalanuvchilarga saqlanayotgan ma’lumotlarga murojaatni
ta’minlab beradi.
Ma’lumotlarga murojaat konkret MBBT yordamida amalga oshirilganligi
sababli, bu modellar joriy MBBTning tilida tavsiflanishi lozim. Ma’lumotlarning
infologik model orqali tuzilgan bu tavsif ma’lumotlarning datalogik modeli deb
ataladi.
Qurilmalarda ma’lumotlarni joylashtirish
ma’lumotlarning fizik modelini qo’llaydi.
va
qidirish
uchun
MBBT
Yuqorida ta’riflangan 3 darajali arxitektura (infologik, datalogik i fizik daraja)
saqlanadigan ma’lumotlarni ularni qayta ishlaydigan amaliy dasturlardan
mustaqilligini ta’minlaydi. Saqlanadigan ma’lumotlar boshqa qurilmaga
ko’chirilishi yoki ularni tuzilishi qayta tashkil etilishi, shuningdek yangi amaliy
dasturga moslash uchun yangi maydonlar qo’shilishi mumkin. Biroq bu
o’zgartishlar faqat fizik modelda, ba’zida datalogik modeldagi o’zgarti\shlar kiritish
bilan kifoyalanadi. Asosiysi ushbu o’zgartirishlar tizimning mavjud
foydalanuvchilariga sezilmaydi (ya’ni ular uchun “shaffof”, “tiniq” xolda amalga
oshadi), shuningdek yangi foydalanuvchilar uchun xam sezilmaydi. Bundan
tashqari, ma’lumotlar mustaqilligi eski ilovalarni buzmasdan yoki vz kechmagan
xolda yangi masalalarni еchish uchun yangi ilovalarni yaratish imkonini beradi.
3.2. Loyixalash bosqichlari va modellashtirish ob’ektlari
Konseptual darajada metodologiyani xarakterlash unchalik murakkab emas, uni
amaliyotda qo’llash qiyin. Qiyin jixati predmet sohasini moxiyatini tushunib olish
(masalan, korxonaning faoliyat mexanizmini tushunishning murakkabilig) va uni
yangi faoliyat sharoitlariga moslashtirishdan iborat.
Shunga o’xshash muammolar MBBT uchun ham tegishlidir. MBBT
korxonanin boshqarish tizimini tashkil qiluvchi bir qismiga aylanishi lozim – bu MB
muvaffaqiyatli tadbiqini ta’minlaydi. Biroq MB ni tadbiqi korxonadagi va uning
xodimlari faoliyatidagi ma’lum o’zgartishlar bilan bog‘liq. Shuning uchun tadbiq
qilishda xodimlarning sustkashligi bilan muammolarga duch kelinadi.
Tanlangan MBBT vositasi foydalanuvchi talablariga mos bo’lishi juda muxim.
Qolaversa turli foydalanuvchilarga ma’lumotlarning turlicha modeli, ma’lumotlar
tili va sxemasi zarur bo’ladi. Shuning uchun MBBT zarur vositalarni qo’llab
quvvatlashi zarur, foydalanuvchi esa bu vositalardan eng maqbulini tanlaydi.
Bunday tadqiqotlarni muvaffaqiyatiga shubxa bilan qarash mumkin. Haqiqatda
dasturlash tili qanchalik yomon bo’lgani bilan uni oxir oqibat o’rganish mumkin.
Xuddi shunday MBBT ni ham ma’lum vaqt mobaynida o’rganish mumkin. Biroq
muammo zarur vositalarni o’rganishda emas, balki uni qo’llanish natijasidagi
samaradorlik bilan bog‘liq.
Loyixalash vositalari uzluksiz ravishda takomillashmoqda, biroq ular
yordamida еchilishi kerak bo’lgan foydalanuvchi msalalari ham murakkablashdi.
Modellashtirish ob’ektlari nuqtai nazari bilan qaraganda predmet soxasi modeli
bilan MB modelini farqlash lozim. Bu modellar o’zaro bog‘liq, chunki ular bitta
originalni, ya’ni loyixalanayotgan MB da saqlanadigan va qayta ishlanadigan
ma’lumotlar real dunyodagi predmetlarlarni tasivrlaydi.
O’zaro aloqalar xarakteri (va, shuningdek, farqlar) ma’lumotlar bazasini
loyixalash bosqichida namoyon bo’ladi. Predmet soxasining modeli ko’pincha
semantik modellashtirishning noformal darajasi bilan bog‘lanadi, ma’lumotlar
bazasining modeli esa tizimning formallashgan darajasi (xususan MBBT bilan) bilan
bog‘lanadi. Amalda semantik modellashtirishning maqsadi ma’lumotlar bazasini
yaxshi formallashgan loyilash bosqichlari uchun semantik asosini shakllantirishdan
iborat. Bunda ma’lumotlar bazasiga xamda ma’lumotlarni tavsiflashga bo’lgan
quyidagi talablarni inobatga olish zarur:
1) tavsif loyixalovchiga emas foydalanuvchiga tushunarli bo’lishi lozim;
2) avval ma’lumotlarni tasvirlashni avvalgi qabul qilingan usullari mavjud
ma’lumotlar sxemasi va amaliy dasturlarni o’zgartirmasdan yangi ma’lumot
elementlarini qo’shish imkonini berishi kerak;
3) MBBT MB ga bo’lgan ixtiyoriy so’rovlarni samarali amalga oshirishi lozim.
«Mohiyat-aloqa» modeli (ER – Entity-Relationship model) ma’lumotlarlar bazasini
loyihalashning konseptual darajasidagi chizmalarini tavsiflash uchun ishlatiladi. Bu
usul 1976-yilda Piter Pin Shan Chen (Peter Pin Shan Chen)tomonidan kiritilgan.
Keyinchalik Chen va boshqalar tomonidan kengaytirildi va takomillashtirildi.
Bundan tashqari «mohiyat-aloqa» modeli ko’pgina CASE vositalar tarkibiga
kiritildi va ular ham o’z navbatida uning rivojlanishiga hissa qo’shdilar. Bugungi
kunda «mohiyat-aloqa» modelining yagona qabul qilingan standarti mavjud
bo’lmasa ham, umumiy konstruksiyalarning majmuasi mavjud bo’lib, ko’pgina
«mohiyat-aloqa» modellarining asosida yotadi. Biz an’anaviy belgilash (tasvirlash)
usullari bilan bir qatorda, loyihalash vositasi UML (Unified Model Language –
yagonalashgan modellash tili) tilining belgilaridan ham foydalanamiz. Chunki
loyihalash vositalarining tarkibiga «mohiyat-aloqa» modeli ham kiritilgan.
3.3. «Mohiyat-aloqa» modeli elementlari
«Mohiyat-aloqa» modelining asosiy elementlari – mohiyatlar, atributlar,
identifikatorlar va aloqalardan iborat.
Mohiyat – bu birorta predmet sohaga tegishli obyektdan iborat. Mohiyatlarga misol
– XIZMATChI Baxtiyor Salimov, MIJOZ 77345, BU-YuRTMA 0049 va
MAXSULOT 59037. Bir xil turdagi mohiyatlarning guruhlari mohiyatlarning
sinflarini tashkil etadi. XIZMATChI turidagi mohiyatlarning sinfi hamma
XIZMATChI turidagi mohiyatlardan iborat. Mohiyatlarning sinflarini bosh harflar
bilan belgilaymiz.
Mohiyatlar sinfi va mohiyat nusxasi tushunchalari orasidagi farqni
aniqlashtirib o’taylik. Mohiyatlar sinfi deganda, mohiyatlarning majmuasi
tushuniladi va u o’zining turi bilan tavsiflanadi. Mohiyat nusxasi esa, aniq bitta
mohiyatni bildiradi, masalan, BUYuRTMA 0049 va shu mohiyatning qiymati bilan
ifodalanadi. Demak, mohiyatlar sinfi mohiyat nusxalarining to’plamidan iborat
deyishimiz mumkin.
Masalan, Talabalar o’quv loyihasidagi RO’YHAT mohiyatining tarkibi – Zn
(talaba reyting daftarchasining raqami), Familiya (familiyasi), Ism (ismi), O_Ism
(otasining ismi), K_Sana (o’qishga kirgan sanasi), Fak_N (fakultet raqami), Yon_N
(yo’nalish raqami), Kurs (kurs), Guruh_N (guruh raqami), Pasp_S (pasport seriyasi),
Pasp_N (pasport raqami).
Ana shu RO’YHAT mohiyatining ikkita nusxasi quyidagi 3.1-rasmda keltirilgan:
3.1-rasm.
Mohiyatlar atributlarga ega bo’lib, ularni xususiyat(propetries)lar deb ham atashadi.
Xususiyatlar mohiyatlarni tavsiflaydi. Misollar sifatida Hodimning_ismi,
tug‘ilgan_sanasi va ish_staji atributlarini keltirish mumkin. «Mohiyat-aloqa»
modelidagi berilgan sinfning hamma nusxalari bir xil atributga ega, deb faraz
qilinadi. «Mohiyat-aloqa» modelining boshlang‘ich ta’rifi kompozit(composite) va
ko’p qiymatli(multi-valued) atributlarni o’z ichiga oladi. Kompozit atributga misol
sifatida Manzil atributini olish mumkin, u Indeks, Shahar, Mavze, Ko’cha va Uy
atributlar guruhidan iborat. Ko’p qiymatli atributga misol Ustoz_familiyasi, bo’lishi
mumkin, chunki har bitta talabaning bir qancha ustozi bo’ladi. Atribut bir paytda
ham kompozit, ham ko’p qiymatli bo’lishi mumkin. Masalan, Hudud_kodi,
telefon_raqami atributlar guruhidan tuzilgan Telefon kompozit atributi, ko’p
qiymatli bo’lishi mumkin, bu esa bitta odamning bir nechta telefon raqamlarini
saqlash imkoniyatini yaratadi. Ko’pgina «mohiyat-aloqa» modellarini amalga
oshiruvchi vositalar bir qiymatli kompozit atributlarni inkor qiladi, ko’p qiymatli
atributlarni esa mohiyatlarda akslanishini talab qiladi.
Mohiyatlarning nusxalari identifikator(identifiers) – atributlarga ega bo’lib,
nusxalar nomlanadi, ya’ni identifikatsiya qilinadi. Masalan, XIZMATChI sinfi
mohiyati
nusxalari
Soliq_to’lovchini_
aniqlovchi_raqam
yoki
Xizmatchining_familiyasi_ismi_sharifi
atributlari
bilan
aniqlanadi.
Ishga_kirgan_sanasi yoki Maoshi atributlari XIZMATChI mohiyat sinfi
nusxalarining identifikatorlari bo’la olmaydi, chunki ular xodimni bir qiymatli
aniqlay olmaydi. Shunga o’xshash RO’YHAT sinfining mohiyati nusxalari Zn yoki
Familiya, Ism, O_Ism atributlari orqali identifikatsiya qilinadi. BUYuRTMA
sinfining mohiyatlari esa Buyurtma_raqami atributi orqali identifikatsiya qilinadi.
Mohiyat nusxasini identifikator bitta yoki bir nechta atributdan tashkil topishi
mumkin. Identifikator noyob(unique) yoki noyob bo’lmasligi(nonunique) mumkin.
Agarda identifikator noyob bo’lsa, uning qiymati mohiyat nusxasining faqat bittasini
aniqlaydi. Agarda identifikator noyob bo’lmasa, uning qiymati mohiyat
nusxalarining qandaydir to’plamini aniqlaydi.
Masalan, Zn identifikator noyob, Familiya, Ism, O_Ism identifikatorlari noyob
emas, chunki xuddi shunday familiya, ism va otasining ismidagi ikkita va undan
ortiq odam bo’lishi mumkin.
Bir nechta atributlardan iborat identifikatorlar kompozit identifikatorlar
deyiladi. Misol, Hudud_kodi, telefon_raqami identifikatori.
Mohiyatlarning o’zaro munosabatlari aloqalar(relationships) orqali
ifodalanadi. «Mohiyat-aloqa» modellari, aloqalar sinfini va aloqalarning
nusxalarini o’z ichiga oladi. Aloqalar sinfi(relationships classes) – mohiyatlar
sinflari orasidagi o’zaro munosabatlardan, aloqalar nusxalari(relationships
instanses) esa, mohiyatlar nusxalari orasidagi o’zaro munosabatlardan iborat.
Aloqalarning ham xususiyatlari bo’lishi mumkin.
Aloqalar sinfi bir nechta mohiyatlar sinfi bilan munosabatda bo’lishi mumkin.
Aloqada ishtirok etuvchi mohiyatlar soni, aloqa darajasini(relationships degree)
belgilaydi. 3.2-rasmda aloqa darajasi ikki va uch bo’lgan holatlar keltirilgan.
BUYuRTMAChI_BUYuRTMA aloqasining darajasi 2, chunki unda ikkita mohiyat
sinflari BUYuRTMAChI va BUYuRTMA qatnashgan. OTA_ONA aloqasining
darajasi 3, chunki unda uchta mohiyatlar sinflari OTA, ONA va FARZAND ishtirok
etgan. Aloqa darajasi ikkiga teng bo’lgan holatlar juda keng tarqalgan bo’lib, ularni
binar (ikkilik) aloqalar(binary relationships) deb ataladi. Aloqaning darajasi 3
bo’lsa, uch tomonlama aloqa(ternary) deb ataladi.
3.2-rasm.
To’rtinchi darajali aloqa to’rt tomonlama aloqa(quaternary) deb ataladi. 3.3rasmda to’rt tomonlama kelishuv aloqasi keltirilgan. Unda to’rtta qatnashuvchi
mohiyatlar, ya’ni OLUVChI, IShONChLI_ShAXS, MOLIYa_BO’LIMI va BITIM
qatnashgan. Bu aloqa bo’yicha, oluvchi ishonchli shaxs tomonidan maslahat olib
va moliya bo’limi qo’llabquvvatlagan holda, bitim tuzadi.
3.3-rasm.
3.4. Binar aloqalarning uch turi.
Binar aloqalar uch turga bo’linadi. 3.4-rasmda bitta mohiyat nusxasi boshqa
turdagi bitta mohiyat nusxasi bilan 1:1 turdagi aloqa orqali bog‘langan. TALABAKOMPYuTER aloqasi TALABA sinfidagi bitta mohiyatni KOMPYuTER sinfidagi
bitta mohiyat bilan bog‘lagan. Bu bog‘lanishga asosan, har bir talabaga faqat bitta
kompyuter biriktirib qo’yilgan va bitta kompyuter faqat bitta talabaga tegishli, degan
ma’no yotadi.
3.4-rasm. 1:1 aloqa
3.5-rasmda ikkinchi turdagi binar aloqaga misol keltirilgan. Bu aloqa «birga-ko’p»
deb ataladi. Masalan, hunarmandlikdagi USTA-ShOGIRD aloqasini olsak, USTA
mohiyat sinfidagi yagona nusxa ShOGIRD mohiyat sinfidagi bir nechta nusxalar
bilan bog‘langan. Ushbu bog‘lanishga nisbatan, ustaning N ta shogirdi bor, bu
shogirdlarning hammasini ustozi ana shu bitta USTA, degan ma’no yotadi.
Bundan tashqari 1 : N shakldagi yozuvning ham o’z ma’nosi bor. 1 raqami
USTA joylashgan tomonda, N esa ShOGIRD joylashgan tomonda turibdi. Agarda
teskarisi yozilganda edi, shogird bitta va uning esa bir vaqtda bir nechta ustozi bor,
degan ma’no hosil bo’lar edi. Bu esa haqiqatan yiroq.
3.5-rasm. 1:N aloqa
Binar aloqaning uchinchi xili N : M bo’lib, «ko’plikdan-ko’plikka» ma’nosini
anglatadi. 3.6-rasmdagi TALABA-TO’GARAK aloqasi bo’lib, TALABA
mohiyatlar sinfiga tegishli nusxalarni TO’GARAK mohiyatlar sinfiga tegishli
nusxalar bilan bog‘lagan. Ushbu aloqa, bitta talaba bir nechta to’garakka a’zo
bo’lishi va bitta to’garakda bir nechta talabalar bo’lishi mumkinligini anglatadi.
3.6-rasm. N:M aloqa
Romb ichidagi aloqalarni sonini ifodalovchi raqamlar, har bir tomondagi
mohiyatlarning maksimal nusxalarini bildiradi. Bu chegaralar maksimal kardinal
sonlar, bunday ikkita chegaradan iborat ikki tomonli aloqa birligi aloqaning
maksimal kardinalligi(maximum cardinality) deb ataladi. Masalan, 5-rasmdagi
aloqaning maksimal kardinalligi 1 : N. Lekin albatta, bu turdagi aloqalardagi
kardinallik boshqacha ham bo’lishi mumkin. Masalan, VOLEYBOL_KOMANDA
va O’YINChI mohiyatlari orasidagi aloqa 1:6, bu voleybol komandasida maydonda
bir paytda oltitadan ko’p o’yinchi bo’lishi mumkin emasligini bildiradi.
Minimal kardinallikni ko’rsatishning bir nechta usullari mavjud. Ulardan biri
3.7-rasmda keltirilgan. Aloqada qatnashishi majbur bo’lgan mohiyat tomondagi
aloqaga perpendikular chiziqcha tortiladi, aloqada qatnashishi mumkin, lekin shart
bo’lmagan mohiyat tomondagi aloqaga tuxumsimon yassi shakl (oval)
joylashtiriladi. 3.7-rasm, TALABALAR_UYI mohiyati kamida bitta TALABA
mohiyati bilan bog‘langanini, lekin TALABA mohiyati TALABALAR_UYI
mohiyati bilan bog‘lanishi shart emasligini bildiradi.
3.7-rasm.
TALABALAR_UYI-TALABA aloqasiga qo’yilgan to’liq cheklashlarning
ma’nosi quyidagicha, TALABALAR_UYI mohiyatining minimal kardinalligi birga
va maksimal kardinalligi soni «ko’p» TALABA mohiyatidan iborat. TALABA
nolga teng minimal kardinallikka va maksimal kardinalligi TALABALAR_UYI
mohiyatining bitta nusxasidan iborat.
Bitta sinfga tegishli mohiyatlar orasida ham aloqalar bo’lishi mumkin. Misol
uchun TALABA mohiyatlar sinfi uchun XONADAGI_QO’ShNI aloqasini aniqlash
mumkin. Bunday aloqaga misol 3.8-rasmda keltirilgan. XONADAGI_QO’ShNI
aloqasining nusxalari Jalil, Halim, Salim yoki boshqa ixtiyoriy talaba bo’lishi
mumkin. Bitta sinfga tegishli mohiyatlar
aloqalar(recursive relationships) deb ataladi.
orasidagi
aloqalar
rekursiv
3.8-rasm.
Yuqorida keltirilgan uch xildagi binar aloqalarni ba’zan «MAVJUD» aloqa
turi yoki egalik aloqalari(HAS-A relationsips) deb atashadi. Buning sababi, bitta
mohiyatning boshqa mohiyat bilan aloqasi mavjud(has) ligini, ya’ni aloqa borligini
bildiradi. Masalan, talabaning kompyuteri bor, ustaning shogirdi bor, to’garakka
yozilgan talabalar bor.
3.5. Mohiyatlar
«Mohiyat-aloqa» modelini qurishni nomzod mohiyatlarni aniqlashdan
boshlash kerak. Hujjatlarda yoki suhbatlarda mohiyatlar odatda ot sifatida taqdim
etiladi, ya’ni joy, insonlar, voqealar, asbob-uskunalar va h.k. Yuqoridagi
ma’lumotlarni berilgan modeliga nisbatan, eng muhim so’z yoki ifoda nuqtayi
nazaridan tahlil qilish natijasida, biz Talabalar o’quv loyihasida ishtirok etuvchi
quyidagi mohiyatlar ro’yxatini tuzamiz:





RO’YHAT
BAHOLAR
FAKULTETLAR
Yo’NALISh
FANLAR.
Ma’lumotlarni modellashtirish jarayonida fan qancha miqdorni tashkil etsa,
san’at ham shu miqdorni tashkil etadi. Shuning uchun biz qabul qilgan qarorimiz,
ana shunday еchimlardan birini tashkil etadi xolos. Muqobil variantlar orasidan
to’g‘risini tanlash uchun qo’yilgan talablarga javob beruvchisini hamda ma’lumotlar
tizimning tuzilishiga qanday ta’sir ko’rsatishini aniqlash zarur. Ba’zida mohiyatlarni
atributlarini ko’rib chiqish juda foydali bo’ladi. Masalan, agarda mohiyatlarda uni
aniqlovchi atributdan tashqari hech qanday atribut ishtirok etmasa, bunday
mohiyatlardan voz kechish kerak. Shu nuqtayi nazardan hosil qilgan har bir
mohiyatning atributlarini ko’rib chiqamiz.
RO’YHAT mohiyati ushbu atributlardan iborat bo’lsin: Zn (talabaning
reyting daftarchasining raqami), Familiya (familiyasi), Ism (ismi), O_Ism (otasining
ismi), K_Sana (o’qishga kirgan sanasi), Fak_N (fakultetning raqami), Yon_N
(yo’nalishning raqami), Kurs (kurs), Guruh_N (guruh nomeri), Pasp_S (pasport
seriyasi), Pasp_N (pasportining nomeri). Bu atributlarning hammasi talaba
xususidagi ayrim ma’lumotlarni o’z ichiga oladi.
Biz bu erda shuni alohida ta’kidlashimiz kerakki, atributlarning soni
mohiyatning ma’nosidan kelib chiqqan holda qanchalik ko’p bo’lsa, shunchalik ko’p
so’rovlarni tizimda tashkillashtirish imkoniyatiga ega bo’lamiz. Bu esa tizimni
amaliyotdagi tub maqsadiga erishishini ta’minlaydi.
BAHOLAR mohiyati Zn (talabaning reyting daftarchasining seriyasi va
raqami), Semestr (semestr raqami), Fan_N (fanlar raqami), Ball (ma’lum fanga
qo’yilgan ball), Sana_Kir (fan bo’yicha qo’yilgan ballni tizimga kiritilgan sanasi),
Ustoz (fan bo’yicha baholagan ustozning familiyasi, ismi va sharifi) atributlaridan
tuzilgan bo’lsin.
FAKULTETLAR mohiyati ikkita atributlardan – Fak_N (fakultet raqami) va
Fakultet (fakultet nomi) iborat bo’lsin. Har bir fakultet FAKULTETLAR mohiyatini
hamda fakultetlar nomini yagona tarzda aniqlovchi fakultet raqami atributining
qiymatlaridan iborat. Quyidagi ikkita mohiyat ham shunday vazifani bajarish uchun
xizmat qiladi.
Yo’NALISh mohiyati ham ikkita atributlardan iborat bo’lsin – Yon_N
(yo’nalish raqami) va Yo’nalishlar (yo’nalishlar nomi).
Oxirgi FANLAR mohiyati ham ikkita atributlardan – Fan_N (fan raqami) va
Fan_Nomi (fan nomi) tuzilgan bo’lsin.
Munosabatning darajasi undagi atributlar soniga bog‘liq. Talabalar o’quv
loyihamizdagi Ro’yxat munosabatida 11ta atribut bor, demak, uning darajasi 11ga
teng. Baholar munosabatida oltita atribut bor, demak, uning darajasi oltiga teng.
Qolgan Fakultetlar, Fanlar va Yo’nalishlar munosabatlarining darajalari ikkiga teng.
Munosabatning darajasi uning har bir kortejida nechtadan elementni saqlashini
bildiradi.
Talabalar o’quv loyihasidagi relatsion chizmalar quyidagicha:
Ro’yhat (ZN, FAMILIYa, ISM, O_ISM, K_SANA, FAK_N,
YoN_N, KURS, GURUH_N, PASP_S, PASP_N)
Baholar (ZN, SEMESTR, FAN_N, BALL, SANA_KIR, USTOZ)
Fakultetlar (FAK_N, FAKULTET)
Yo’nalish (YoN_N, Yo’NALIShLAR)
Fanlar (FAN_N, FAN_NOMI)
3.6. Aloqalar
RO’YHAT mohiyati markaziy mohiyat sifatida ishtirok etmoqda. Shuning
uchun uning boshqa mohiyatlar bilan aloqasini ko’rib chizamiz. Avval RO’YHAT
va BAHOLAR mohiyatlari orasidagi aloqalarni ko’rib chiqaylik. RO’YHAT
mohiyatida barchatalabalar jamlanadi. FAMILIYa atributi talabalarning
familiyasidan iborat bo’ladi. Ushbu atributda turli familiyadagi talabalar yozilgan
paytda nomzod kalit bo’lishi mumkin. Lekin bitta o’xshash familiya paydo bo’lsa,
bu atributni nomzod kalit sifatida ishlatib bo’lmaydi. Har bir talabaning reyting
daftarchasi mavjud bo’lib, bu daftarchadagi seriya va raqamlar noyob bo’lgani
uchun Zn atributining nusxasi har bir talabani bir qiymatli identifikatsiyalaydi.
Xuddi shunday vazifani Zn atributi BAHOLAR mohiyati uchun ham bajaradi. Lekin
BAHOLAR mohiyatida Zn atributi tashqiidentifikator, ya’ni talabalarning har birini
RO’YHAT mohiyatidan bir qiymatli aniqlaydi. RO’YHAT va BAHOLAR
mohiyatlariorasidagi aloqa 1:M bo’ladi. Bitta talaba j ta fan bo’yicha baho oladi, 1≤j
≤M bo’ladi. RO’YHAT mohiyati RO’YHAT mohiyatiga identifikatsiyalangan
bog‘liq turdagi zaif mohiyat.
RO’YHAT mohiyati va FAKULTETLAR hamda Yo’NALIShLAR
mohiyatlari orasidagi aloqalar esa M:1tarzda bo’ladi. Fak_N atributi
FAKULTETLAR mohiyatini, Yon_N atributi esa Yo’NALIShLAR mohiyatini
noyob tarzda identifikatsiyalaydi. Fak_N atributining har bir nusxasi Fakultet
atributining bir nusxasini, Yon_N atributining har bir nusxasi Yon_N atributidagi
bir nusxani bir qiymatli aniqlaydi. Lekin RO’YHAT mohiyatidagi fakultetlar va
yo’nalishlar ko’pchilikni tashkil etadi.
3.9-rasm. Talabalar o’quv loyihasining ER-diagrammasi.
BAHOLAR va FANLAR mohiyatlari orasidagi aloqalar ham keltirilgan asoslar kabi
M : 1 tarzda bo’ladi. Fan_N atributi, BAHOLAR va FANLAR mohiyatlari
orasidagi aloqalarni modellashtiradi, ya’ni fanning raqami qaysi fanga mosligini
aniqlaydi.
4. Ma’lumotlar bazasida relyatsion model va munosabatlar.
4.1. Ma’lumotlar bazasida relyatsion model tushunchasi.
Relatsion modelda ma’lumotlarlar termalarga ajratilib, ular jadvalning
tuzilishini yaratadi. Jadvalning bunday tuzilishi alohida ma’lumotlar elementlari,
ya’ni maydonlardan iborat bo’ladi. Alohida terma yoki maydonlar guruhi yozuv
deyiladi.
Ma’lumotlar modeli yoki predmet sohaning konseptual tavsifi – bular MB
loyihalashdagi eng abstrakt daraja.
Relatsion ma’lumotlar bazasining nuqtayi nazariy jihatidan, relatsion
modelning asosiy tamoyillarini konseptual darajada qo’yidagicha ta’riflash
mumkin:



barcha ma’lumotlar, satr va ustunlar shaklidagi munosabatdeb ataladigan,
tartiblangan tuzilishda bo’lishi;
hamma qiymatlar skalyar bo’lishi. Bu, ixtiyoriy munosabatning ixtiyoriy ustun
va satrlaridagi qiymatlar yagona bo’lishini bildiradi;
barcha amallar butun munosabat ustida bajariladi, amallarning bajarilishi
natijasida yana butun munosabat hosil bo’ladi. Bu tamoyil tutashuv deb ataladi.
Relatsion modelning tamoyillarini shakllantirishda, doktor E.F. Kodd o’zi
matematik bo’lgani uchun ham «munosabat» (relation) degan atamani tanladi,
chunki uning fikricha, bu atama bir xildagi ma’noni anglatadi. Munosabatning fizik
shakli ikki o’lchovli jadval bo’lib,u ustun va satrlardan iborat. Relatsion model
deyilishining sababi, uning jadvallar orasidagi aloqalarni aniqlashida, degan
noto’g‘ri talqin juda keng tarqalgan. Haqiqatda esa, ushbu modelning nomi
munosabat (MB jadvallari)dan, uning asosida yotuvchilardan kelib chiqadi.
Mantiqiy jihatdan MB – bu, ikki o’lchovli jadvallar va ular ustida ustunlarni tanlash
va birlashtirish amallariga ega bo’lgan to’plamdir. Shu asosda E.F. Kodd
quyidagicha deb yozgan «Amaliy programmachi ham, tasodifiy foydalanuvchi ham,
ma’lumotlar bazasi – bu vaqti-vaqti bilan o’zgarib turuvchi, hamma mumkin
bo’lgan darajalardagi normallashgan munosabatlarning to’plamidir».
Relatsion modellarda munosabatlar obyektlar xususidagi ma’lumotlarni MBda
saqlash uchun ishlatiladi. Munosabatlar, aytilgandek jadval ko’rinishida bo’lib,
undagi satrlar alohida yozuvlarga,ustunlar esa atributlarga mos keladi. Bundan
tashqari atributlar ixtiyoriy ketma-ketlikda kelishi mumkin, bundan munosabatning
ma’nosi o’zgarmaydi.
4.2. Relatsion model tuzilishi.
Relatsion modelning yana bir muqobil tushunchasi K. Deyt tomonidan
berilgan. K. Deyt bo’yicha relatsion model uch qismdan iborat:
 tuzilish;
 butunlik;
 ishlov qismi.
Tuzilish qismida qaysi obyektlarning relatsion modelda ishlatilishi
tavsiflanadi.
Butunlik qismida relatsion modeldagi barcha ma’lumotlarning tegishli
cheklashlari tavsiflanadi, jumladan mohiyat butunligi va tashqi kalitlar (havola)
butunligini.
Ishlov qismida ikkita ekvivalent bo’lgan ishlov, ya’ni relatsion algebra va
relatsion hisoblash usullari keltiriladi.
Tuzilish qismi
Umumiy holda MBB tizimlaridagi ma’lumotlarning uchta asosiy turlari
mavjud:
 oddiy;
 murakkab;
 havola.
Relatsion modelda ishlatiladigan turlar
Relatsion modelda oddiy, murakkab va havola turlari ishlatiladi. Relatsion
amallarda ma’lumotlarning ichki tuzilishi hisobga olinmaydi. Shu nuqtayi nazardan,
har qanday murakkab turdagi ma’lumotlarni oddiy turlarga olib kelish mumkin.
Buning uchun uni shartli ravishda yaxlit hisoblab, ichki tuzilishi hisobga olinmasligi
kerak. Bunday model postrelatsion hisoblanadi.
4.3. Domen tushunchasi
Relatsion modelda ma’lumotlar turi tushunchasi bilan uni aniqlovchi domen
tushunchasi bir-biriga uzviy bog‘liq. Domen bu semantik atamadir. Domen deb,
biror bir ma’lumotlar turini qandaydir ma’noga ega bo’lgan to’plamning qismi,
desak ham bo’ladi.
Domen quyidagi xossalarga ega:
 noyob ismga ega bo’lib, atribut nomi bilan bir xilda bo’ladi;
 biror bir oddiy tur yoki boshqa domen orqali aniqlanadi;
 domen biron bir mantiqiy shart bilan berilishi mumkin. Bu shart shu domenga
tegishli ma’lumotlar to’plamining terma qismini aniqlaydi;
 domen aniq bir ma’noga ega bo’lishi kerak.
Masalan, oliy o’quv yurti talabasining yoshini ko’rsatuvchi domenni quyidagicha
tavsiflash mumkin:
Tyoshq {n∈N: n≥16 and n≤60}
Domenni to’plamdan farqi shundaki, u aniq bir predmet sohaning semantik
atamalarini akslantiradi. Bitta to’plamning elementlari har xil ma’noga ega bo’lgan
domenlarga tegishli bo’lishi mumkin. Masalan, talabaning yoshi va og‘irligi
umumiy holda, bir to’plamning elementlari bo’lishi mumkin, lekin bu
elementlarning ma’nosi turlicha, shuning uchun ular turli domenlarga tegishli
bo’ladi. Buesa o’z navbatida, turli turdagi va hattoki bir turdagi domen elementlarini
taqqoslash taqiqlanadi. Domenlar ma’lumotlar bazasini to’g‘ri modellashtirishga
ta’sir qiladi. Lekin, hamma domenlarga ham chegaraviy shartlarni qo’yib bo’lmaydi.
Masalan, familiya domeniga.
Domen tushunchasi relatsion modellarda katta ahamiyatga ega, chunki
foydalanuvchi atributlar qabul qiladigan qiymatlarning ma’nosi va manbasini unga
nisbatan aniqlaydi. Natijada tizim relatsion amalni bajarganda, unda ko’proq
ma’lumot bo’ladi, bu esa tizimga semantik nokorrekt amallarni bajarishga yo’l
qo’ymaydi. Masalan, agarda ikkita atributlar uchun domen tomonidan belgili satrlar
aniqlangan bo’lsa ham, birida mahallaning nomi ikkinchisida ko’chaning nomi
saqlansada, ularni solishtirish mantiqsizlik bo’ladi. Lekin bu masalaga boshqa
tomondan qaralsa, masalan talabaning oladigan stipendiyasi miqdori va stipendiya
olgan oylar soni atributlariga e’tibor beraylik. Birinchi atribut «pul» («denejno’y»)
turida, ikkinchisi esa butun turida. Lekin ularni ko’paytirish mumkin. Mana shu
ikkita misoldan, domen tushunchasini to’liq amalga oshirishni ta’minlash, oson
emas, shuning uchun ham ko’pgina relatsion MBBTda ular to’liq emas, qisman
amalga oshgan.
4.4. Munosabat, atribut, kortej va boshqa atamalar
Ma’lumotlarning relatsion modelidagi asosiy tushunchalardan biri, bu
munosabatdir. Uni ta’riflashdan oldin bir nechta ta’riflarni beramiz.
Ta’rif 1. Munosabat atributi bu juftlikdan iborat, ya’ni atribut nomi:
domen nomi(<A : D>).
Ta’rif 2. (D1, D2, . . . Dn) har xil turda bo’lishi shart bo’lmagan domenlar
to’plamida aniqlangan R munosabat ikki qismdan, ya’ni sarlavha va tanadan iborat
bo’ladi.
Munosabat sarlavhasi fiksirlangan atributlar sonidan iborat bo’lib,
quyidagicha juftliklar ketma-ketligi shaklida yoziladi:
(<A1: D1>, <A2: D2>, . . . , <An: Dn>)
Munosabat tanasi kortejlar to’plamidan iborat. Munosabatning har bir korteji
<atribut ismi : atribut qiymati> juftlik to’plamidan iborat, ya’ni
(<A1: a1>, <A2: a2>, . . . , <An : an>)
bu yеrda, ai Di domendan olingan Ai atributning qiymati.
Munosabatning to’liq shaklda yozilishi
<R> (<A1: D1>, <A2: D2>, . . . , <An: Dn>)
yo qisqacha
R (A1, A2, . . . , An) yoki oddiygina R
Ta’rif 3. Munosabatlar to’plami relatsion ma’lumotlar bazasi, deb ataladi.
Ta’rif 4. Relatsion ma’lumotlar bazasining chizmasi, bazani tashkil etuvchi
munosabatlar nomidan tuzilgan to’plamdan iborat.
Ta’rif 5. Relatsion ma’lumotlar bazasi chizmasining nusxasi, bazani tashkil etuvchi
munosabatlarning tanasi (qiymati)dan tuzilgan to’plamdan iborat.
Munosabat va oddiy jadvallar (relatsion ma’noda emas) orasidagi asosiy
farqlar:
 Munosabatda bir xildagi kortejlar bo’lishi mumkin emas, chunki munosabat
tanasi to’plamdan iborat bo’lgani uchun, unda bir xildagi elementlar bo’lishi
mumkin emas. Aksincha, jadvalda bir xildagi satrlar bo’lishi mumkin.
 Munosabat kortejlari tartiblangan emas. Jadvalda esa, har bir satr o’z joyida
bo’lishi kerak.
 Sarlavhadagi atributlar tartiblangan emas. Jadvaldagi tartibi esa fiksirlangan.
 Atributlarni barcha qiymati skalyar. Jadval yacheykasida har narsa bo’lishi
mumkin.
Jadval munosabatga aylanishi uchun:
 oddiy tuzilishga ega bo’lishi, ya’ni har bir satrda ustunlar soni bir xil bo’lishi
kerak;
 ikkita bir xildagi satr bo’lmasligi kerak;
 ustunda bir xil turdagi qiymatlar bo’lishi kerak;
 ma’lumotlar turi oddiy bo’lishi shart.
Munosabat tanasi kortejlarning to’plamidan iborat bo’lgani uchun,
munosabatda n ta atribut bo’lsa, kortejlar n o’lchovli, ya’ni munosabat n – darajali
bo’ladi. 2- darajali munosabat binar, 3- darajali ternar, n- darajalisi esa n ar, deb
yuritiladi. Boshqacha qilib aytsak, atributlar soni munosabatning darajasini bildiradi.
Munosabatdagi kortejlar to’plami (jadvaldagi satrlar soniga o’xshash) uning quvvati
yoki kardinalligi deb ataladi.
Matematikada odatda ko’proq binar munosabatlar ishlatilsa, ma’lumotlar
bazasining nazariyasida esa asosan n-darajali munosabatlar ishlatiladi.
Matematikada munosabatlar cheksiz to’plamlar ustida beriladi va cheksiz quvvatga
ega. Ma’lumotlar bazasida esa aksincha, munosabatlarning quvvati cheklangan,
chunki saqlanadigan jadvallardagi satrlarning soni hamma vaqt cheklangan bo’ladi.
Shu nuqtayi nazardan MB relatsion modeli, turli ardagi cheklangan
munosabatlarning oldindan aniqlangan elementar ma’lumotlar to’plami orasidagi
cheklangan termalardan iborat, deyish mumkin.
MB relatsion modeli matematik mantiq ma’nosidagi chekli to’plamdan iborat.
Modeldagi munosabatlar ustida turli algebrayik amallarni bajarish mumkin. Shu
nuqtayi nazardan, matematik mantiq va algebraga asoslangan holda, aniq matematik
rasmiyatchilikni talab qiladi. MB relatsion modellariga ishlov beruvchi zamonaviy
tillar, ana shu talablar asosida yaratilgan (SQL, QBE, PL/SQL va h.k.).
Munosabat tuzilishining domen identifikatori va atributlar olishi mumkin
bo’lgan qiymatlarining ixtiyoriy cheklashlar bilan tavsifini, ba’zan uning
sarlavhasi(yoki mazmuni - intension) deyiladi. Odatda, yangi atributlar
qo’shilmaguncha munosabatning ma’nosi o’zgarmaydi, u fiksirlangan bo’ladi.
Kortejlar ma’lum vaqtdan keyin o’zgarishi mumkin.
4.5. Muqobil atamalar
Relatsion modelda ishlatiladigan atamalar ba’zan chalkashliklarga olib keladi,
chunki yuqorida biz keltirgan atamalardan tashqari yana boshqa bir atamalar
mavjud. Unda munosabat – fayl, kortej – yozuv, atributlar – maydon deyiladi. Bu
atamalar, MBBT fizik jihatdan har bir munosabatni alohida fayllarda saqlashidan
kelib chiqqan. Bu atamalardan programmachi ko’proq foydalanadi. Quyidagi
jadvalda ana shu muqobil atamalarni keltiramiz.
Relyatsion modelning har bir tushunchasini “Xodim” – mohiyati (ob’ekti)
misolida ko’rib chiqamiz:
munosabat sxemasi
Xodimlar
Atribut
Tabel
nomer
Familiya
Ism
Otasining ismi
Bo’lim
lavozimi
100
Abdullaev
Abdulla
Abdullaevich
002
Boshliq
101
Ismoilov
G‘ani
Komilovich
001
Injener
Karimov
Boltaboy
To’raevich
002
injener
102
Atribut, maydon
Kortej, yozuv, satr
domen, ustun
qiymati
satrli
sonli
ma’lumotlar tipi
“Xodimlar” ob’ekti xaqidagi jadval.
Munosabat quyidagi tavsiflarga ega:





munosabat relatsion chizmadagi hamma nomlardan boshqacha nomga ega;
munosabatning har bir katagi faqat bitta elementar qiymatga ega;
har bir atribut noyob ismga ega;
atributning qiymatlari bitta domendan olinadi;
har bir kortej noyob hisoblanadi, ya’ni ikkita bir xildagi kortej bo’lishi
mumkin emas;
 atributlarning kelish ketma-ketligi ahamiyatsiz;
 nazariy jihatdan munosabatda kortejlarning kelish ketma-ketligi
ahamiyatsiz.
Lekin amaliyotda kortejlarning kelish tartibi ularga kirish samaradorligiga ta’sir
qilishi mumkin. Quyidagi jadvalda relatsion atamalar keltirilgan.
4.6. Kalitlar
Aytib o’tilganidek, munosabatda takrorlanuvchi kortejlar bo’lmasligi kerak.
Shuning uchun har bir kortejni noyob tarzda bitta yoki bir nechta atributlar
yordamida identifikatsiyalash imkoniyati bo’lishi kerak. Bu atributlar kalit deyiladi.
Amaliy ish jarayonida kortejni– yozuv, atributni maydon deyishadi.
Birlamchi kalit– atributlar yoki ular to’plamining shunday elementidan iboratki, u
yagona tarzda bitta yozuv yoki guruhni belgilaydi. Birlamchi bo’lmagan boshqa
atributlarning birlashishidan tuzilgan kalit, tarkibli (birlashgan) kalit bo’ladi.
Kalit MB loyihalash va uni amalga oshirish jarayonlarida turlicha ma’no kasb
etadi. Loyihalash jarayonida kalit munosabatdagi satrni bir ma’noda tavsirlovchi
bo’lib, bitta yoki bir nechta tushuniladi. Har bir munosabat kamida bitta kalitga ega
bo’ladi, chunki har bir kortej noyob hisoblanadi. Maksimal tarzda kalit
munosabatdagi hamma domenlarning birlashmasidan tuzilishi mumkin.
Loyihani amalga oshirish jarayonida kalit atamasi boshqacha tushuniladi.
Ko’pgina relatsion MBBT kalit sifatida ustun olinadi va shu asosda boshqarish
tizimi indekslar yaratadi. Indeks berilgan ustundagi qiymatlarni tezda topishga
imkon yaratadi. Bu kalitlarning noyob bo’lishi shart emas, chunki ular faqatgina
tezlikni oshirishga xizmat qiladi.
Ana shu kalitlarni bir-biridan farqlash uchun mantiqiy va fizik kalitlar deb
atashadi. Mantiqiy kalit bu ustunni noyob elementlarini, fizik kalit esa tezlikni
oshiruvchi indeksdan iborat.
Berilgan munosabatning kortejini yagona tarzda aniqlovchi atribut yoki
atributlar majmuasi superkalit deyiladi. Superkalit munosabatdagi har bir kortejni
bir qiymatli aniqlaydi. Lekin superkalit noyob identifikatsiyalash shart bo’lmagan
qo’shimcha atributlarni ham saqlashi mumkin. Bizni noyob identifikatsiyalash shart
atributlar qiziqtiradi.
Berilgan munosabatning superkaliti bo’lgan va qism to’plami bo’lmagan
superkalit, nomzod kalit deyiladi. Berilgan R munosabatning N nomzod kaliti ikkita
xossaga ega:
 Noyoblik. R munosabatning har bir kortejida N nomzod kalitning
qiymati shu kortejni yagona ravishda identifikatsiyalaydi.
 Keltirib bo’lmaslik. N nomzod kalitning mumkin bo’lgan qism
to’plamidan hech biri noyoblik xususiyatiga ega emas.
Munosabat bir nechta nomzod kalitlarga ega bo’lishi mumkin. Agar kalit bir
nechta atributdan iborat bo’lsa, u tarkibli kalit deb ataladi.
Takrorlanuvchi qismga ega munosabatni, ikki qismga ajratib, biriga shu
takrorlanuvchi qismni alohida munosabatga ajratsak, biz shu munosabatni
normallashtirgan bo’lamiz. Hosil bo’lgan yangi munosabat o’z nomiga ega bo’ladi.
5. Relyatsion algebra va relyatsion hisoblash elementlari.
5.1. Relatsion algebra
Relatsion MB moslashuvchanligi munosabatlar ustida o’tkaziladigan
o’zgartirishlarning engil amalga oshishi bilan bog‘liq. Buning natijasida,
keyinchalik konseptual model foydalanuvchining modeli bilan bir xil bo’lmasligi
mumkin. Foydalanuvchining munosabatlari chizmadagi munosabatlardan kelib
chiqishi kerak. Matematik amallardan foydalangan holda, munosabatlar ustida turli
o’zgartirishlarni amalga oshirish mumkin.
Munosabatlar «haqiqiy dunyo»ning qaysidir bir qismidagi haqiqiy
obyektlarini akslantiradi. Dunyoning ixtiyoriy qismi esa vaqt o’tishi bilan o’zgaradi.
Shuning uchun munosabatlar ham vaqt o’tishi bilan o’zgaradi, ya’ni yangi kortejlar
qo’shilish, o’zgarish yoki yo’q qilinishi mumkin. Falsafiy kategoriyalar zamon va
makon bilan uzviy bog‘liqligiga misol bo’la oladi. Demak, vaqt oralig‘ida
munosabatlar bir holatdan ikkinchi, uchinchi va h.k. holatlarga o’tadi. Lekin
munosabat qaysi holatga o’tmasin, uning chizmasi o’zgarmaydi.
Shuningdek, domenlarni tartiblash axborot ma’nosida munosabatning
ma’nosini o’zgartirmaydi.
Har bir munosabat o’zi aniqlangan ma’lumotlar bazasi doirasida noyob ismga
ega bo’lishi shart. Munosabatning relatsion amal natijasida hosil bo’ladigan nomini,
tenglik ishorasining chap tomonida yozamiz. Agarda, relatsion amal natijasida hosil
bo’lgan munosabat yana bir boshqa relatsion amalda ishtirok etsa, unga nom qo’yish
shart emas. Bunday munosabatlarni nomsiz munosabat deb atashadi. Nomsiz
munosabatlar fizik jihatdan ma’lumotlar bazasining tarkibida ishtirok etmaydi,
faqatgina relatsion operatorning qiymatini hisoblash davridagina hisoblanadi xolos.
5.2. Relatsion algebra amallari
E.F. Kodd va keyinchalik boshqalar an’anaviy tarzda sakkizta relatsion
amallarni ikkita guruhga ajralgan holda aniqlashadi.
Nazariy-to’plam amallari:




kesishish;
birlashish;
ayirish;
dekart ko’paytma.
Maxsus relatsion amallar:




tanlash;
nusxalash;
birlashtirish;
bo’lish.
Bu amallarning hammasi ham bog‘liqsiz emas, chunki bu amallarning
ayrimlarini boshqa relatsion amallar orqali keltirib chiqarish mumkin.
5.3. Munosabatlar ustidagi amallar
Munosabatlar ustida bajariladigan maxsus amallardan oldin, ba’zi bir oddiy
to’plam amallarini munosabatlarga tatbiq etishni o’rganishdan boshlaymiz.
To’plamlar ustida bajariladigan ayrim to’plam amallarini munosabatlarga
ham qo’llash mumkin. Buning uchun munosabatlar еga bo’lishi talab qilinadi. Bu
esa o’z navbatida bir xil nomdagi atributlarning bo’lishinitalab qiladi.
Shuning uchun, misol tariqasida R va S munosabatlarni (A,V,S) chizmaga
asosan, quyidagicha holatda qabul qilamiz (5.1-rasm) va to’plam amallarini
bajarishda ana shu munosabatlardan foydalanamiz:
5.1-rasm.
Kesishish amali
Bir xildagi sarlavhaga ega bo’lgan R va S munosabatlar uchun kesishish
(intersection)amalining natijasidagi T = R ∩ S munosabat ham ana shu sarlavhaga
ega bo’ladi. T munosabat tanasi R va S munosabatlarning bir xildagi kortejlaridan
hosil bo’ladi.
Bu еrda va keyingi munosabatlar orasidagi = belgisidan shartli ravishda
yangi munosabatni ifodalash ma’nosidafoydalanamiz.
Kesishish amali natijasida, T munosabat quyidagicha hosil bo’ladi:
Birlashish amali
Birlashshish (union) amali R U S natijasida, T munosabat R va S
munosabatga tegishli kortejlardan hosil bo’ladi, lekin ikkala munosabatda
qatnashgan bir xildagi kortejlar yangi munosabatda bir marta qatnashadi.
Birlashish amali natijasida T = R U S, T munosabat quyidagicha hosil bo’ladi:
Ayirish amali
Munosabatlarni ayirish (difference) amali R - S natijasida, T munosabat R
ga tegishli, lekin S munosabatga tegishli bo’lmagan kortejlardan hosil bo’ladi.
Ayirish amali natijasida T = R - S, T munosabat quyidagicha hosil bo’ladi:
Dekart ko’paytmasi amali
Ikkita munosabatni ko’paytirish amalini dekart ko’paytmasi (cartesian
product) amali deb yuritishadi. Yangi munosabat (m * n) o’lchovli, birinchi
munosabatdagi hamma kortejlarni (m ta) ikkinchi munosabatdagi (n ta) hamma
kortejlar bilan tutashuvidan, iborat bo’ladi. Ko’paytma x – belgisi bilan belgilanadi.
5.2-rasmdagi RP munosabati ikkita kortejdan, SP munosabati esa uchta
kortejdan iborat. Yangi munosabati T = RP x SP 6ta kortejdan iborat bo’ladi (5.3rasm).
5.2-rasm.
5.3-rasm.
Tanlash amali
Tanlash (selection) amali munosabat ustidagi unar amaldan iborat, chunki u
bitta munosabat ustida shartga asosan (predikat) bajarilgan tanlash amali
natijasida olingan kortejlarni chiqaradi. Bu amal ma’lumotlarni izlashda juda
muhim ahamiyatga ega. Shuning uchun ushbu amal ustida batafsil to’xtab o’tamiz.
Tanlash amali, alohida yoki bir yo’la kortejlar ustida izlanishlar olib boradi. Bu
amalning bajarilishi natijasida, qo’yilgan shart qanoatlantirilsa, R munosabatning
qismi shaklida yangi munosabat tuziladi, aks holda natijaga ega bo’linmaydi. R
munosabat yuqoridagi keltirilgan (A,V,S) chizmaga hamda munosabat o’sha
elementlarga ega, atributlarning nomi A, V va S bo’lsin.
Shart bo’yicha oddiy tanlov. R munosabatdan, S atributning qiymati c2 ga teng
bo’lgan kortejlar tanlansin, deyilgan shartni, shartli ravishda rasmiylashtirib, «R dan
R.C = c2 TANLANSIN» shakldagi so’rovga aylantiramiz.
Natijada quyidagi munosabat hosil bo’ladi:
Keltirilgan shartli so’rovda (predikat shartida) biz tenglik (=) amalidan
foydalandik. Yana predikatda quyidagi taqqoslash belgilaridan foydalanishimiz
mumkin:
>
katta
>=
katta yoki teng
<
kichik
<=
kichik yoki teng
<>
teng emas.
Ulardan atributlar ustida bo’ladigan so’rovlarni shakllantirishda foydalanish
mumkin.
Shart bo’yicha oddiy tanlov. MUXANDIS munosabatidan (5.4-rasm) maoshi
1500 dan ko’p bo’lgan xizmatchilar tanlansin. Shartli so’rovimiz, «MUXANDISdan
MUXANDIS.MAOSh>1500 TANLANSIN» shaklida bo’ladi.
5.4-rasm.
So’rov natijasida olinadigan yangi munosabat quyidagicha bo’ladi:
Mantiqiy Bul amallari, ma’lumotlar bazalarining jadvallari bilan ishlashda
juda muhim ahamiyatga ega. Ayniqsa, asosiy uchta AND, OR va NOT orqali turli
sodda (bitta atribut ustida) va tarkibli predikatlardan iborat murakkab (bir nechta
atributlar ustida) so’rovlarni shakllantirish mumkin.
Mantiqiy Bul amallarining ishlash algoritmi quyidagicha:
 AND (VA) amali A AND V shakldagi, A va V ifodalarni argument
sifatida olib, ularni Bul qiymat («haqiqat» va «yolg‘on»)larga
tekshiradi. Natijada, ikkala argument haqiqiy bo’lsagina, A AND
V shart bajarilgan hisoblanadi;
 OR (YoKI) amali A OR V shakldagi, A va V ifodalarni argument
sifatida olib, ularni kamida bittasi haqiqiyligini tekshiradi, shunda
shart bajarilgan hisoblanadi;
 NOT (AKSINChA) amali NOT A shakldagi, A ifodani argument
sifatida olib, natijada olingan bul qiymatini teskarisiga o’zgartiradi.
MUXANDIS munosabatidan (5.4-rasm) va mantiqiy Bul amallaridan quyida
foydalanamiz.
Shart bo’yicha oddiy tanlov. Qarshi yoki Gulistondagi bo’limlarda ishlovchi
muhandislar aniqlansin. Shartli so’rov «MUXANDISdan (MUXANDIS.MANZIL
= ‘QARShI’) OR (MUXANDIS.MANZIL = ‘GULISTON’) TANLANSIN».
Shart bo’yicha oddiy tanlov. Maoshi 1500dan kam xodimlar aniqlansin.
Shartli so’rov «MUXANDISdan
NOT
(MUXANDIS.MAOSh>1500)
TANLANSIN».
Shart bo’yicha murakkab tanlov. 721 bo’limdagi 1500 va undan ortiq maosh
oladigan
xizmatchilarni
tanlashga
shartli
so’rov
yozamiz.
«MUXANDISdan (MUXANDIS.BO’LIM_RAQAMI=721) AND (MUXANDIS.
MAOSh>=1500) TANLANSIN».
Shart bo’yicha murakkab tanlov. Muhandislardan 1500dan ko’p, lekin
5000dan kam oylik oladiganlar tanlansin. Shartli so’rov «MUXANDISdan
(MUXANDIS.MAOSh>1500) AND (MUXANDIS. MAOSh <=5000)
TANLANSIN».
Shart bo’yicha murakkab tanlov. Navoiyda ishlovchi maoshi 2000dan ortiq
bo’lgan,
xodimlar
aniqlansin.
Shartli
so’rov
«MUXANDISdan
(MUXANDIS.MAOSh >2000) AND (MUXANDIS.MANZIL = ‘NAVOIY’)
TANLANSIN».
Bo’lish amali
Bo’lish amali algoritmini tushunish biroz qiyinroq. Bo’lish amali
munosabatning «tik-yotiq» to’plamini tuzishga, ya’ni bo’linuvchi munosabatning
«tik» qism to’plamini, bo’luvchi munosabatning «yotiq» holati bilan kesilishi
natijasidagi, «tik» qoldiqdan iborat. Bo’lish amalida qoldiq tushunchasi ishlatilgani
uchun uni ÷ bilan belgilashadi. Bo’lish amalini tushunish murakkab bo’lgani uchun
uning grafik tasvirini keltiramiz (5.5-rasm).
5.5-rasm.
Endi munosabatlar orqali bo’lish amalini tushuntiramiz. Faraz qilaylik, umumiy
Y1,Y2, . . . ,Ym atributlarga ega bo’lgan R(X1, X2, . . .,Xn, Y1,Y2, . . . ,Ym) va S(Y1,Y2,
. . . ,Ym) munosabatlar berilgan va hamma (y1,y2, . . .,yn) Є S kortejlar uchun R
munosabatda (x1,x2, . . .,xn, y1,y2, . . .,yn) kortej mavjud bo’lsin. R munosabatni S
munosabatga bo’lish deganda, sarlavhasi (X1,X2, . . .,Xn) va tanasi (x1,x2, . . .,xn)
iborat bo’lgan yangi munosabat tushuniladi. Munosabatlarni bo’lishni butun
sonlarni qoldiqli bo’lish bilan, «tik» qoldiqni esa qoldiq bilan taqqoslashimiz
mumkin.
Bo’lish amali xususida yaxshi tasavvurga ega bo’lish uchun misollarni turli
munosabatlar ustida keltiramiz.
5.1- misol. TA’MINOTChI munosabati va STATUS munosabatlari berilgan
bo’lsin (5.6-rasm).
5.6-rasm.
TA’MINOTChI ÷ STATUS natijasida, quyidagi munosabat hosil bo’ladi:
2- misol. QISM va RANG munosabatlari (5.7-rasm) quyidagi ko’rinishda bo’lsin:
5.7-rasm.
U holda, QISM ÷ RANG natijasida, quyidagi munosabat hosil bo’ladi:
3- misol. MANZIL munosabati (5.8-rasm) quyidagicha bo’lsin:
5.8-rasm.
U holda, munosabatlarni bo’lish QISM ÷ MANZIL natijasida, quyidagi
munosabat hosil bo’ladi:
Bo’lish amali natijasida amalga oshiriladigan so’rovlar, odatda «hamma»
so’zini o’z ichiga oladi. Masalan, Toshkentda ko’k rangdagi, Farg‘onada qizil
rangdagi qismlarni ishlab chiqaruvchi hamma qism raqamlari, nomlari va og‘irligi
aniqlansin.
Tutashish amali
Tutashish (join) amali dekart ko’paytmasining hosila amali hisoblanadi,
chunki u dekart ko’paytmasidagi tanlash amaliga ekvivalent bo’lib, ikkita operand-
munosabatlarning dekart ko’paytmasidan, ya’ni tutashish amalining predikatidagi
tanlash shartini qanoatlantiruvchi kortejlardan iborat.
Ushbu holdagi algoritm asosida birlashtirishni, ya’ni munosabatlardagi
tutashishga asos atributlarning elementlari bir xildagi qiymatga ega bo’lgan
kortejlarining kombinatsiyali tutashishini, (join) deb atashadi. Bu amalning natijasi,
ya’ni yangi munosabatga bir yo’la atributlarni nusxalash amalini ham qo’llash
mumkin.
Tutashish amalini
belgisi bilan ifodalaymiz.
Tutashish amalining turlari ko’p bo’lgani va ularni bir-birdan farqlash
uchun, har biri turli nomlar bilan ataladi:
 tutashish (tabiiy tutashish);
 yarim tutashish;
 ekvitutashish;

- tutashish;
 tashqi tutashish.
5.9-rasm.
5.9-rasmdagi R1(A,B,C), R2(B,D,E) va R3(E) munosabatlarni turli usullarda
tabiiy tutashish natijasida 5.10-rasmdagi T munosabat turli atributlar ishtirokida
keltirilgan, ya’ni bir yo’la nusxalash amali ham bajarilgan.
Munosabatlarning tutashish natijalari:
5.10-rasm.
a), b) va c) misollarda R1(A,B,C) va R2(B,D,E) munosabatlar birinchi
munosabatdagi, lekin ikkalasi uchun bir xil nomga ega bo’lgan, umumiy V atribut
asosida tutashtirildi va talab qilingan atributlargina hosil qilindi.
d) misolda R2 (B,D,E) va R3 (E) munosabatlar R2 munosabatidagi E atribut
asosida tutashtirildi va talab qilingan atributlar hosil qilindi.
e) misolda ketma-ket bajarilishi lozim bo’lgan amallar bir yo’la keltirilgan.
Avval R1 va R2 munosabatlar V atribut asosida tutashtiriladi, hosil bo’lgan, ya’ni
a) misolning natijasidagi E atribut bo’yicha R3 munosabat tutashtiriladi va talab
qilingan atributlar bo’yicha natija hosil qilindi.
f) misolda R2 va R3 munosabatlar E atribut bo’yicha birlashtirilgan, talab
qilingan atribut bo’yicha ikkita bir xildagi kortejlar qatnashgani uchun faqat bittasi
qoladi.
5.11-rasmda aniq jadvallar misolida tutashish amali va uning natijasiga misol
keltirilgan.
5.11-rasm. Uchta munosabatdan bitta munosabat hosil qilish.
Yarim tutashish amali
Yarim tutashish amali algoritmining asosida, ikkala munosabatdagi umumiy
atributning teng bo’lgan elementlarini birlashtirish yotadi. Yangi munosabatdagi
atributlar soni tutashayotgan birinchi munosabatdagi atributlar nomi asosida
yaratiladi.
5.9-rasmdagi R1(A,B,C), R2(B,D,E) va R3(E) foydalanib, yarim tutashish
amaliga uchta misol keltiramiz:
Ekvivalentlik bo’yicha tutashish amali
Ekvivalentlik bo’yicha tutashish (qisqacha,ekvitutashish)amalida, ikkita
munosabatni
turli
nomdagi
atributlarining
elementlari
taqqoslanadi.
Munosabatlarning bir xildagi qiymatga ega bo’lgan kortejlari kombinatsiyali
tutashadi va yangi munosabatni hosil qiladi. Oddiy tutashish amalidan farqi,
taqqoslashga asos atributlarning ikkalasi ham qatnashadi.
5.9-rasmdagi R1 va 12-rasmdagi R4 munosabatlarini mos ravishda C va E
atributlari bo’yicha tutashtiramiz. Boshqacha aytganda, F predikat (C va E) bo’yicha
teng qiymatli atributlarni kombinatsiyali tutashtiradi.
5.12-rasm.
Misollardagi = belgisi chap va o’ng ifodalarning aynan bir xilligini
ifodalaydi.
T(A,B,C,D,E)= R1
R4 ≡ R1[C=E] R4 ekvitutashish natijasida hosil
bo’lgan munosabat quyidagicha bo’ladi:
5.13-rasm.
5.13-rasmdagi kursiv bilan ajratilgan kortejlarga e’tibor bering.
- tutashish amali
- tutashish amali, munosabatlarni tutashish amalining kengaytirilgan varianti
bo’lib, ikkita munosabatning dekart ko’paytmasidagi F predikatni qondiruvchi
kortejlardan iborat bo’ladi. F predikatda turli taqqoslash belgilari hamda OR va
AND ishlatilishi mumkin.
14-rasmdagi
MA’LUMOT
va
OILA
munosabatlarini
XIZMATChI_RAQAMI va XIZMATChI_KODI atributlari bo’yicha = belgisi va
asosida Ө – tutashish natijasidagi to’rtta misolni ko’ramiz.
shakldagi F
predikat atributlariga turli taqqoslash belgilari va Bul amallarini qo’llash mumkin.
5.14-rasm.
a) MA’LUMOT
OILA ≡ MA’LUMOT[XIZMATChI_RAQAMI =
XIZMATChI_KODI] OILA amali orqali hosil bo’lgan munosabat
quyidagicha bo’ladi:
b) MA’LUMOT
OILA ≡ MA’LUMOT [XIZMATChI_RAQAMI
>53800 ORXIZMATChI_KODI> 53800] OILAformulasi orqali hosil
bo’lgan yangi munosabat esa quyidagicha bo’ladi:
c) MA’LUMOT
OILA ≡ MA’LUMOT[XIZMATChI_RAQAMI =
XIZMATChI_KODI OR STAJ ≥32] OILA formulasi orqali hosil bo’lgan
yangi munosabat quyidagicha bo’ladi:
d) MA’LUMOT
OILA ≡ MA’LUMOT [XIZMATChI_RAQAMI >
53800 AND STAJ ≥32] OILAformulasi orqali hosil bo’lgan yangi munosabat
quyidagicha bo’ladi:
e) R1
R4 ≡ R1[C > E] R4 formulasi orqali hosil bo’lgan yangi
munosabat quyidagicha bo’ladi:
Tashqi tutashish
Ikkita munosabatni tashqi tutashish (outer join) natijasida, turlicha algoritm
asosidagi yangi munosabat hosil bo’ladi. Tashqi tutashishni, munosabatlarning
turlicha tutashishiga nisbatan tashqi chap tutashish, tashqi o’ng tutashish va tashqi
to’liq tutashish deb atashimiz ham mumkin. Shunga asosan, tashqi tutashishni 3
xilda amalga oshirish mumkin. Mos kelmagan qiymatlar bo’yicha olingan kortejlar
null bilan to’ldiriladi.
1- xil. a) R1  F R2 ≡ R1 [B=B] R2 formula asosida birinchi
munosabatdagi kortejlarning hammasi hamda taqqoslanayotgan umumiy
atributlarda ikkinchi munosabatning mos qiymatlari bo’lmagan kortejlari ham yangi
munosabatga tutashilgan holda kiritiladi. Tashqi chap tutashish natijasida quyidagi
yangi munosabatni hosil qilamiz:
b) R1  F R2 ≡ R1 [B > B] R2 formula asosida tashqi chap tutashish
natijasida quyidagi yangi munosabatni hosil qilamiz:
2- xil. R1  F R2 ≡ R1 [B = B] R2 ikkinchi munosabatdagi kortejlarning
hammasi hamda taqqoslanayotgan umumiy atributlarda birinchi munosabatdagi mos
qiymatlari bo’lmagan kortejlar ham yangi munosabatga tutashilgan holda kiritiladi.
Tashqi o’ng tutashish natijasida quyidagi yangi munosabatni hosil qilamiz:
3- xil. R1  F R2 ikkala munosabatdagi kortejlarning hammasi hamda
taqqoslanayotgan umumiy atributlar bo’yicha ikkala munosabatdagi o’zaro mos
qiymatlari bo’lmagan kortejlar ham yangi munosabatga tutashilgan holda kiritiladi.
Tashqi to’liq tutashish natijasida quyidagi yangi munosabatni hosil qilamiz:
Quyidagi 1 jadvalda yuqorida keltirilgan relatsion amallarning muqobil
belgilash sintaksisi keltirilgan.
1-jadval
6. Ma’lumotlar bazasini normallashtirish. Normal formalar 1NF,
2NF, 3NF va Kodd.
6.1. Mantiqiy loyixalash
Bu bosqichning asosiy vazifasi MBBT ga mo’ljallangan mantiqiy sx’emani
yaratishdan iborat. Bu bosqichda relyatsion modelning munosabatlari (MBBT
jadvallari), atributlari (jadval ustunlari) va atributlar tiplari (ustunlardagi
ma’lumotlar tiplari) aniqlanadi.
Mantiqiy loyixalashning bir nechta asosiy metodlari mavjud. Bular::
- ER-diagrammani mantiqiy sxemaga aylantirish;
- jadvallarni normallashtirish.
6.2. Jadvallarni normallashtirish
Normallashtirish – bu ma’lumotlar bazasidagi ma’lumotlarni ortiqchaligini
kamaytirishdir.
Normallashtirish– bu jadvalni ma’lumotlarni qo’shish, o’zgartirish va
o’chirish uchun qulay bo’lgan ikkita yoki undan ko’p jadvallarga bo’lishdir.
Normallashtirishni asosiy maqsadi – shunday ma’lumotlar bazasini yaratishga
qaratilgan, unda faktlar bir marta qayt qilinadi, ya’ni ma’lumotlar ortiqcha yoki
takrorlanishi mumkin emas. Munosabatlar sxemasining jadvalga ma’lumot kiritish,
o’zgartirish va o’chirish uchun qulay xossaga ega bo’lgan relyatsion variantini
qurish.
Jadvallarni normallashtirish mantiqiy loyixalashning eng formal (tartibga
solingan) metodi bo’lib, uni qo’llanganda ER-diagrammani qurish talab еtilmaydi.
Normallashtirish jarayoni bir normal formadan boshqasiga o’tish amallaridan
iborat bo’lib, unda har bir navbatdagi jadval oldingisiga nisbatan yaxshi xossalarga
ega bo’ladi.
Har bir normal forma uchun bir qator talablar qo’yilgan va jadval
normallashtirilgan deyiladi agar u qo’yilgan talablarga javob bersa.
Relyatsion ma’lumotlar bazasi nazariyasida quyidagi normal formalar ketma
– ketligi ajratib ko’rsatiladi:
- birinchi normal forma (1NF);
- ikkinchi normal forma (2NF);
- uchinchi normal forma (3NF);
- Boys-Kodd normal formasi (BCNF);
- to’rtinchi normal forma (4NF);
- beshinchi normal forma yoki proektsiya – ulash normal formasi (5NF yoki
PJ/NF).
Normal formalarning asosiy xossalari:
- har bir navbatdagi normal forma qaysidir ma’noda oldingisiga qaraganda
yaxshi;
- navbatdagi normal formaga o’tganda oldingi normal forma xossalari saqlab
qolinadi.
6.2. Birinchi normal forma.
Jadval birinchi normal formada deyiladi, qachonki undagi hech bir qatorning
istalgan maydonda bittadan ortiq qiymat joylashgan bo’lmasa va birorta kalit
maydoni bo’sh (NULL qiymatli) bo’lmasa ;
Boshqacha aytganda birinchi normal forma bu har bir satr va ustun
kesishmasida bitta bo’linmas atomar qiymat joylashgan munosabat yoki jadvaldir.
Birinchi normal formani o’rganishdan oldin normal bo’lmagan forma
tushunchasini o’rganib chiqamiz.
Normal bo’lmagan forma (NNF) – bu bir yoki bir nechta takrolanuvchi
ma’lumotlar guruxiga ega bo’lgan jadval.
Takrolanuvchi gurux tushunchasi. Takrorlanuvchi gurux ER –
diagrammalardagi munosabatning ko’p qiymatli atributiga mos keladi.
Takrolanuvchi gurux (repeating group) - bu har bir maydonida bir nechta qiymat
joylashgan atribut.
Misol. Masalan xodimlar munosabatida (jadvalida) farzandlar nomini va
tug‘ilgan kunlarini saqlash zarur bo’lsin. Har bir xodimda bir nechta farzand bo’lishi
mumkin. Shuning uchun farzandlar tug‘ilgan kuni va ismlari takrorlanuvchi guruhni
tashkil etadi.
Xodimlar
Xodim_I
D
1001
1002
1003
Ism
Fam
Jane
John
Jane
Doe
Doe
Smith
Farzand ismlari
Farzand tug_kun
Masu, Sam
1/1/92,5/15/94
Mary, Sam
2/2/92,5/10/94
John, Pat, Lee, 10/5/94,10/12/90,6/6/96,8/21
Masu
/94
1004
John
Smith Michael
7/4/96
1005
Jane
Jones
Edward, Martha
10/21/95, 10/15/89
Rasm 6.1.Takrorlanuvchi guruxga ega bo’lgan normallashtirilmagan
munosabat
Bu jadvalda ko’rinib turganidek har bir satrning ikkita
(Farzand_ismlari, Farzand_tug_kun) bittadan ko’p qiymat joylashgan.
ustunida
6.3. Takrorlanuvchi guruxlarni bartaraf etish.
Keltirilgan jadvalni birinchi normal formaga keltirishning yoki takrorlanuvchi
guruxlarni bartaraf etishning ikkita usuli mavjud: noto’g‘ri va to’g‘ri.
Noto’g‘ri usul. Birinchi usulda takrorlanuvchi guruxlar har bir takrorlanuvchi
qiymat uchun jadvalga alohida ustun qo’shish orqali bartaraf etiladi. Ba’zi xolatlarda
bu usul to’g‘ri bo’ladi. Ba’zi xolatlarda esa jadval birinich normal formaga kelgani
bilan guruxdagi qiymatlarning soni bilan bog‘liq muammo kelib chiqadi.
Misol. Yuqorida keltirilgan jadvalda Farzand_ismlari va Farzand_tug_kun
ustunlarini uchta ustunga ajratamiz.
Xodimlar
Xodim
_ID
1001
1002
1003
1004
1005
Ism
Fam
Jane
John
Jane
John
Jane
Doe
Doe
Smith
Smith
Jones
Farzand1_
ismi
Masu
Mary,
John,
Michael
Edward
Farzand2_i
smi
Sam
Sam
Pat
Farzand3_i
smi
Lee
Martha
F1_tug_k
F2_tug_k
F3_tug_k
1/1/92
2/2/92,
10/5/94
7/4/96
10/21/95
5/15/94
5/10/94
10/12/90
6/6/96
10/15/89
Rasm 6.2. Takrorlanuvchi guruxlarni noto’g‘ri bartaraf etilishi
6.2 rasmda keltirilgan jadval birinchi normal forma talablarini qanoatlantiradi.
Biroq unda bir qator muammolar vujudga kelgan.
 Jadvalda xar bir xodim uchun faqat uchta farzand bilan chegaralangan.
Unda xodimning 4-farzandi xaqida ma’lumot saqlash imkoni yo’q.
 Xodimlarning farzandi uchtadan kam bo’lgan xodimlarda jadvalning
ko’gina qismi bekor qoladi.
 Konkret farzandni izlash amali murakkablashadi.
To’g‘ri usul. Ikkinchi usulda bolang‘ich jadvaldagi biror atribut yoki
atributlar kalit sifatida belgilanadi, keyin takrolanuvchi guruxlar joriy jadvaldan
olinib aloxida jadvalga o’tkaziladi. Bunda takrorlunvchi guruxdagi har bir qiymat
kalit nusxasi bilan birga yangi jadvalga o’tkaziladi. Yangi jadvalga o’tkazish har bir
takrorlanuvchi gurux uchun bajariladi. Agar yaratilgan jadvalda ham takrorlanuvchi
guruxlar mavjud bo’lsa ular uchun ham to’g‘ri yoki noto’g‘ri usul qo’llaniladi.
Misol. Keltirilgan misolda farzand ismlari va tug‘ilgan kunlari xaqidagi
ma’lumotlar yangi jadvalga o’tkaziladi. Unda boshlang‘ich jadvalda
Xodim_ID
1001
1002
1003
1004
1005
Xodimlar
Ism
Jane
John
Jane
John
Jane
Fam
Doe
Doe
Smith
Smith
Jones
Farzand
Xodim_ID
1001
1001
1002
1002
1003
1003
1003
1003
1004
Ism
Masu
Sam
Mary
Sam
John
Pat
Lee
Masu
Michael
Tug_yil
1/1/92
5/15/94
2/2/92
5/10/94
10/5/94
10/12/90
6/6/96
8/21/94
7/4/96
1005
1005
Edward
Martha
10/21/95
10/15/89
6.3-rasm. Takrorlanuvchi guruxlarni to’g‘ri bartaraf etilishi
Birinchi normal formaga bo’lgan talablar quyidagilardan iborat:
1) Berilgan boshlang‘ich munosabat tasvirlangan relyatsion jadvalning har bir
atributining qiymati atomar bo’lishi kerak. Ya’ni bu qiymat relyatsion jadval
(munosabat) bo’lishi mumkin emas;
2) boshlang‘ich munosabat ma’lumotlar orqali – ya’ni relyatsion jadval va unga
tegishli bo’lgan ma’lumotlar bazasining butunlik shartlari orqali ifodalanadi.
Xususan bu quyidagilarni bildiradi:
3) jadvalda bir satrlar (kortejlar, yozuvlar) mavjud emas;
4) har bir ustun jadvalda atribut nomi bilan nomlangan va atriutning joriy
qiymatlaridan iborat bo’ladi;
5) har bir atribut ma’lum domen (ma’lumotlarning abstrakt tipi) bilan
bog‘langan;
6)agar relyatsion jadvalda (munosabatda) ushbu jadval ilan ishlashe’tiborga
olinishi kerak bo’lgan funktsional bog‘lanishlar mavjud bo’lsa, u xolda ushbu
bog‘lanishlar ma’lumotlar bazasining butunlik shartida qayd qilinadi;
7) yozuvlar yaqqol va noyaqqol tartiblan
gan (masalan, jimlikka ko’ra foydalanuvchiga ma’lum yoki noma’lum shaklda). Xususan tartiblanganligiga
qat’iy talablar qo’yilmaydi (bu talab effektiflik bilan yoki ishlashdagi qulaylik bilan
bog‘liq);
8) birlamchi kalitning xech biri bo’sh (NULL) bo’lmasligi kerak;
9) agar 1NF darajasida kalitlar belgilansa (kalit keyinroq – 2NF da aniqlanishi
ham mumkin), u xolda ko’rsatgichlarning butunlik sharti qanoatlantirilishi kerak.
MB ni qurishdagi muammolar
Muammolarni quyidagi misolda tushuntiramiz
ПОСТАВЩИКИ (NAZV_POST, ADRES_POST, TOVAR, TSENA)
Bu sxemada quyidagi muammolar mavjud:
1. Ortiqchalik. Yetkasib beruvchi (postavщik) adresi har bir yеtkaziluvchi
tovar uchun takrorlanayapti.
2. Ziddiyatlilik (yangilash anomaliyalari). Ortiqchalik natijasida bir satrdagi
yеtkazib beruvchi (поставшик) adresini o’zgartirishimiz, boshqa satrda
o’zgartirishsiz qoldirish extimolligi mavjud. Natijada ba’zi еtkazib beruvchida har
xil adres yuzaga keladi. Aslida esa adres bitta bulishi kerak.
3. Qo’shishi anomaliyasi. Ma’lumotlar bazasiga еtkazib beruvchi adresini
qo’shish imkoni bo’lmaydi agarda u joriy vaqtgacha bitta xam tovar еtkazib
bermagan bo’lmasa. Albatta bu еrda еtkazib beruvchini nomi va adresini biror satrda
yozib, TOVAR va TSENA maydoniga ixtiyoriy qiymat kiritib qo’yishimiz mumkin.
Biroq u biror tovar еtkazganida ixtiyoriy qiymat yozilgan satrni o’chirishni
unutmaymizmi? Bundan tashqari TOVAR va NAZV_POST joriy jadvalda kalit
xisoblanadi va kalit qiymatlari ixtiyoriy bo’lgan satrni izlash qiyin yoki imkoni yo’q
buladi.
4.
O’chirish anomaliyasi. Joriy еtkazib beruvchi barcha tovarlarni
o’chirganda teskari muammo vujudga keladi, ya’ni еtkazib beruvchini adresini
yo’qotamiz.
Savol: «qanday o’zgartirishlar qilsak yaxshi xossali jadvalga ega bo’lamiz?»
6.4. Funktsional bog‘lanish tushunchasi.
Relyatsion MB da ma’lumotlarni strukturasidan tashqari ularni sxematik
informatsiyasiga ham e’tibor beriladi. MB ni strukturasi haqidagi informatsiya
munosabat sxemasi yordamida beriladi. Sxematik informatsiyalar esa atributlar
orasidagi funktsional bog‘lanishlar orqali ifodalanadi. MB munosabatlarida
atributlarni tarkibini quyidagi talablarga javob beradigan qilib guruxlash kerak:
 Atributlar orasidagi zaruriy bo’lmagan takrorlanishlar bo’lmasligi
kerak.
 Atributlarni guruxlaganda ma’lumotlar takrorlanishi minimal darajada
qilib ta’minlanishi kerak. Bu bevosita ma’lumotlarni tez qayta ishlash
imkonini beradi. Bunga normallashtirish jarayoni yordamida erishiladi.
Normallashtirishda mumkin bo’lgan barcha funktsional bog‘lanishlar
aniqlanadi.
Misol. A va V atributlar berilgan bo’lsin. Agar ixtiyoriy vaqtda A atributni
bittadan ortiq bo’lmagan qiymati mos kelsa, unda V atributda funktsional
bog‘langan deyiladi va quyidagicha belgilanadi:
A→V
Shaxsiy nomer → Familiya
Mansabi → Maosh
bog‘lanishlar
Funktsional bog‘lanish (functional dependency) — bu atributlar o’rtasidagi
bog‘lanishdir. Ya’ni, biror atribut qiymati orqali ikkinchi atribut qiymatini
xisoblash yoki topish mumkin. Masalan, bizga mijoz xisobining raqami ma’lum
bo’lsa, uning xisobi xolatin aniqlashimiz mumkin. Bu xolatda MijozXisobXolati
atributining qiymati MijozXisobRaqami atributiga funktsional bog‘liq deb ataladi.
Umumiy qilib aytganda, Y atribut X atributga funktsional bog‘liq deyiladi,
agar X qiymati orqali Y ni qiymati aniqlansa. Boshqacha aytganda, agar X qiymati
ma’lum bo’lsa u orqali Y ni qiymatini aniqlash mumkin.
Birinchi normal forma
Munosabat talablarini bajaruvchi ixtiyoriy jadval birinchi normal formada
(first normal form, 1NF) deyiladi. Jadval munosabat bo’lishi uchun quyidagilar
bajarilishi kerak: jadval kataklarida bo’linmas qiymatlar joylashishi va qiymati
takrorlanuvchi gurux yoki massiv bo’lmasligi kerak. Bitta ustundagi (atributdagi)
barcha yozuvlar bir xil tipli bo’lishi kerak. Har bir ustun unikal nomiga ega bo’lishi
va jadvalda ustunlarni joylashish ketma-ketligi ahamiyatga ega emas. Nihoyat,
jadvalda 2 ta bir xil satr bo’lmasligi va satrlarni joylashish ketma-ketligi ahamiyatga
ega emas.
Ikkinchi normal forma
Munosabat ikkinchi normal formada deyiladi, agar uning barcha kalit
bo’lmagan atributlari barcha kalit atributlarga bog‘liq bo’lsa. Ushbu talabga
asoslangan xolda aytish mumkin, agar munosabat kaliti yagona atributdan iborat
bo’lsa, u xold bu munosabat avtomatik xolda 2 –chi normal formada deyiladi.
Chunki agar kalit yagona atributdan iborat bo’lsa, u xolda har bir kalit bo’lmagan
atribut barcha kalitlarga bog‘liq bo’ladi va xususiy bog‘lanishlar mavjud bo’lmaydi.
Shunday qilib, ikkinchi normal forma kompozit (tarkibli) kalit mavjud bo’lgan
munosabatlar uchun o’rinli.
Uchinchi normal forma.
Ikkinchi normal formadagi munosabat ham anomaliyalarga (muammolarga)
ega bo’ladi. 6.4-rasmdagi
jadvalni ko’rib chiqamiz.
Unda kalit atribut
TalabaRaqami, va quyidagi funktsional bog‘liqliklar mavjud TalabaRaqami ->
TalabalarTurarJoyi --> To’lov. Bu bog‘lanish kelib chiqishi quyidagicha, har
bir talaba faqai bitta talabalar turar joyida yashaydi va har bir talabalar turar joyidagi
talabalardan bir xildagi to’lov olinadi. Masalan, Shaxriston-№1 talabalar uyida
yashaydigan talabalarning barchasi kvartal uchun 32000 so’m to’laydi.
TalabaRaqami TalabalarTurarJoyi To’lov
100
Shaxriston-№1
32000
150
Sebzar-№2
41000
200
Shaxriston-№1
32000
250
№5
25000
300
Shaxriston-№1
32000
Rasm-6.4. Funktsional bog‘lanishlar: TalabalarTurarJoyi ->To’lov,
TalabaRaqami ->TalabalarTurarJoyi ->To’lov
Ko’rib o’tganimizdek, TalabaRaqami atributi
TalabalarTurarJoyi
atributini aniqlaydi, TalabalarTurarJoyi esa To’lov ni aniqlaydi. Shuning uchun
TalabaRaqami bilvosita To’lov ni aniqlaydi. Funktsional bog‘liqlikni bunday
tuzilmasi tranzitiv
bog‘liqlik (transitive dependence) deb ataladi, chunki
TalabaRaqami atributi TalabalarTurarJoyi atributi orqali (bilvosita) To’lov
atributini aniqlaydi. Jadvalda TalabaRaqami yagona kalit xisoblanadi va jadval 2chi normal formada joylashgan (TalabalarTurarJoyi ham,
To’lov ham
TalabaRaqami orqali aniqlanadi.). Shunga qaramasdan bu jadval tranzitiv
bog‘liqlik tufayli anomaliyalarga ega..
Misolda keltirilgan jadvalda ikkinchi satrni o’chirsak nima yuz beradi? Bunda biz
№150 raqamli talaba Sebzar-№2 \tadabadar turar joyida yashashligi bilan birga
ushbu turar joyda kvartal to’lov 41000 so’m ekanligi faktini ham yo’qatamiz. Bu
o’chirishdagi anomaliya. Bu jadvalga №3 turar joyda yashash uchun kvartal to’lov
37000 so’m ekanligini qanday kiritamiz? Iloji yo’q, chunki bu turar joy xaqida
jadvalga ma’lumot kiritilmagan. Bu ma’lumot kiritish anomaliyasi.
TalabaRaqami
100
150
200
250
300
TalabalarTurarJoyi
Shaxriston-№1
Sebzar-№2
Shaxriston-№1
№5
Shaxriston-№1
TalabalarTurarJoyi
Shaxriston-№1
Sebzar-№2
Shaxriston-№1
№5
Shaxriston-№1
To’lov
32000
41000
32000
25000
32000
Keltirilgan ikkinchi normal formadagi munosabatdan anomaliyalarni bartaraf
etish uchun tranzitiv bog‘liqliklarni yo’q qilish kerak. Munosabat 3-chi normal
formada deyiladi, agar u 2-chi normal formada bo’lsa, hamda tranzitiv
bog‘liqliklarga ega bo’lmasa.
Boysa-Kodd normal formasi.
Funktsional bog‘lanishlar: O’qituvchi-> Mutaxassislik
Konsultant
TalabaRaqami
100
150
200
250
300
300
Mutaxassislik
Matematika
Psixologiya
Matematika
Matematika
Fizika
Psixologiya
O’qituvchi
Koshi
Yung
Riman
Koshi
Ridan
Perle
Bu munosabatda talaba bir nechta mutaxassislikka o’qishi mumkin,
TalabaRaqami atributi Mutaxassislik atributini aniqlamaydi. Qolaversa, talaba bir
nechta o’qituvchiga ega bo’lishi mumkin, shuning uchun TalabaRaqami atributi
O’qituvchi atributini ham aniqlay olmaydi. Shunday qilib munosabatda
TalabaRaqami kalit bo’lolmaydi.
(TalabaRaqami, Mutaxassislik) kombinatsiyasi O’qituvchi atributini
aniqlaydi, (TalabaRaqami, O’qituvchi) kombinatsiyasi Mutaxassislik atributini
aniqlaydi. Demak, ushbu kombinatsiyalarni ixtiyoriy biri kalit bo’lishi mumkin.
Kalit bo’lishi mumkin bo’lgan 2 ta yoki ko’p atributlar yoki atributlar gruppasi kalitkandidatlar (candidate keys) deb ataladi. Ushbu kalit-kandidatlardan kalit sifatida
tanlangani birlamchi kalit (primary key) deyiladi.
Kalit-kandidatlardan tashqari ko’rib chiqilishi kerak bo’lgan yana bir
funktsional bog‘liqlik mavjud: O’qituvchi atributi Mutaxassislik atributini
aniqlaydi (ixitiyoriy bir o’qituvchi bitta fan bo’yicha o’qitadi; demak o’qituvchi ismi
orqali mutaxassislikni aniqlash mumkin). Shunday qilib, O’qituvchi determinant
xisoblanadi.
Aniqlanishiga ko’ra, KONSULTANT munosabati birinchi normal formada.
Shuningdek u ikkinchi normal formada ham, chunki kalit bo’lmagan atributlarga ega
emas (har bir atribut kamida bitta kalitni qismi xisoblanadi). Nihoyat, bu munosabat
uchinchi normal formada deb ham ayta olamiz, chunki tranzitiv bog‘liqliklarga ega
emas. Shunga qaramasdan bu munosabat modifikatsiyalash anomaliyasiga ega.
Deylik 300 raqamli talaba universitetdan chiqarildi. Agar ushbu 300 raqamli
talaba xaqidagi satrni o’chirsak, u xolda Perle psixologiya fani bo’yicha o’qituvchi
ekanligi faktini xam yo’qotamiz. Yana, Keyns iqtisodiyot bo’yicha o’qituvchi
faktini qanday qo’shamiz?
Iqtisodiyot bo’yicha o’qiydigan talaba paydo
bo’lmaguncha buni iloji yo’q. Bu o’chirish anomaliyasi.
Yuqorida keltirilgan xolatlar Boysa-Kodda(Boyce-Codd normal form,
BK/NF ) normal formasi tushunchasiga olib keladi: munosabat NFBK da deyiladi,
agar har bir determinant kalit-kandidat bo’lsa. KONSULTANT munosabati NFBK
da emas, chunki O’qituvchi determinanti kalit-kandidat emas.
TalabaRaqami
O’qituvchi
100
150
200
250
300
300
O’qituvchi
Koshi
Yung
Riman
Koshi
Ridan
Perle
Koshi
Yung
Riman
Koshi
Ridan
Perle
Mutaxassislik
Matematika
Psixologiya
Matematika
Matematika
Fizika
Psixologiya
Boshqa misollardagi kabi KONSULTANT munosabatini anomaliyalarga ega
bo’lmagan 2 ta munosabatga ajratish mumkin.
Masalan, TALABA–
KONSULTANT (TalabaRaqami, O’qituvchi) va
KONSULTANTMUTAXASSISLIK (O’qituvchi, Mutaxassislik) anormaliyalarga ega emas.(rasm5).
To’rtinchi normal forma
Ko’p qiymatli bog‘lanishlar: TalabaRaqami->-> Mutaxassislik,
TalabaRaqami->->Sektsiya
TALABA
TalabaRaqami
100
100
100
100
150
Mutaxassislik
Musiqa
Bux xisobi
Musiqa
Buxgal xiobi
Matematika
Sektsiya
Suzish
Suzish
Tennis
Tennis
Soglomlashtiruvchi
yugirish
Rasm 6.5. Ko’p qiymatli munosabat
Rasm 6.5 dagi talabalar, mutaxassislar va sektsiya o’rtasidagi bog‘lanishlarni
tasvirlagan TALABA munosabatini ko’rib chiqamiz. Faraz qilamiz talabalar bir
nechta mutaxassisliklarda o’qishi va bir nechta sektsiyalarda shug‘ullanishi mumkin
bo’lsin. Bunday xolda yagona kalit (TalabaRaqami, Mutaxassislik, Sektsiya)
kombinatsiyasidan iborat. Masalan, 100 raqamli talaba musiqa va buxgalteriya
mutaxassisliklarida o’qishi, hamda bulardan tashqari suzish va tennis sektsiyalariga
qatnaydi. 150 raqamli talab esa faqat matematika mutaxassisligida o’qiydi va
yugurish setsiyasiga qatnaydi.
TalabaRaqami va Mutaxassislik atributlari o’rtasidagi bog‘lanish qanday?
Bu funktsional bog‘liqlik emas, chunki talaba bir necha mutaxassislikda o’qishi
mukin. TalabaRaqami atributining bitta qiymatiga Mutaxassislik atributining bir
necha qiymati mos keladi. Shu bilan birga TalabaRaqami atributining bitta
qiymatiga Sektsiya atributining bir necha qiymati mos keladi.
Atributlar o’rtasidagi buntday bog‘liqlik ko’p qiymatli bog‘liqlik )multivalue dependency)
deyiladi. Ko’p qiymatli bog‘lanishlar modifikatsiyalash anomaliyasiga olib keladi. Dastlab rasm
6 dagi ma’lumotlar ortiqligiga e’tibor qiling. 100 raqamli talaba xaqida 4 a yozuv bor bo’lib, ularni
har birida bitta mutaxxassisligi va bitta sektsiya ko’rsatilgan. Agar ushbu ma’lumotlar kamroq
sonli satrlarda (deylik 2 ta satrda joylashsa – biri musiqa va suzish, ikkinchisi bux xisobi va tennis),
joylashsa bu foydalanuvchiga noqulaylik tug‘diradi. Mutaxassislik va sektsiya bir biridan
mustaqil. Shuning uchun bunday xolatlarni bartaraf etish uchun mutaxassislik va sektsiyalarni
barcha juftliklarini saqlab qo’yiladi.
TALABA (6.6-rasm)
TalabaRaqami
100
100
100
100
100
150
Mutaxassislik
Musiqa
Musiqa
Buxgal xiobi
Musiqa
Bux xisobi
Matematika
a
Sektsiya
Lija
Suzish
Suzish
Tennis
Tennis
Yugurish
TalabaRaqami
100
100
100
100
100
100
150
Mutaxassislik
Musiqa
Bux xisobi
Musiqa
Buxgal xiobi
Musiqa
Bux xisobi
Matematika
Sektsiya
Lija
Lija
Suzish
Suzish
Tennis
Tennis
Yugurish
b
Faraz qilaylik 100 raqamli talaba Lija sektsiyasiga yozilmoqchi. Shuning
uchun jadvalga 6.6a-rasmda ko’rsatilgani kabi [100, Musiqa, Lija] satrini qo’shamiz.
Endi jadvalga qarab quyidagi: 100 raqamli talaba lija bilan musiqachi sifati
shug‘ullanishi, buxgalter sifatida shug‘ullanolmaydi degan noto’g‘ri xulosaga
kelinadi. Ma’lumotlar mos xarakterga ega bo’lishi uchun 100 – chi talabaga qancha
mutaxxassislik bo’lsa shuncha satr va ularni har birida lija sektsiyasini ko’rsatish
lozim bo’ladi. Shuning uchun yana 6.6b – rasmda keltirilganidek [100, Buxgalteriya
xisobi, Lija] satrini qo’shamiz. Bu ma’lumotlarni yangilash anomaliyasi, ya’ni oddiy
o’zgartish kiritish uchun juda ko’p modifikatsiyalarni amalga oshirish kerak.
Umuman olganda ko’p qiymatli bog‘liqlik munosabatda 3 ta atribut bo’lganda
mavjud bo’ladi.. bunda ulardan ikkitasi ko’p qiymatli bog‘langan va ularni qiymati
3-chi atributga bog‘liq bo’ladi. Boshqacha aytganda R(A, B, C) munosabatda ko’p
qiymatli bog‘lanish mavjud bo’ladi, agar A ko’p qiymatli tarzda B va C ni aniqlasa,
B va C ni o’zlari esa bir-biriga bog‘liq bo’lmasa. Yuqorida keltirilgan misolda
ko’rganimizdek, TalabaRaqami atributi ko’pqiymatli tarzda Mutaxassislik va
Sektsiya atributlarini aniqlaydi va Mutaxassislik va Sektsiya atributlari bir-biriga
bog‘liq emas.
Ushbu anomaliyani yo’qotish uchun ko’p qiymatli bog‘lanishlarni bartaraf
etish kerak. Buning uchun 2 ta munosabat yaratamiz va ularni har birida bittadan
ko’p qiymatli atribut uchun ma’lumotlar saqlanadi. Natijaviy munosabatlar
anomaliyaga ega bo’lmaydi. Bu 6.7 rasmda ko’rsatilganidek TALABA MUTAXASSISLIK (TalabaRaqami, Mutaxassislik) va TALABA - SEKTSIYa
(TalabaRaqami, Sektsiya) munosabatlaridir.
TalabaRaqami Sektsiya
100
Lija
TALABA
TalabaRaqami
100
100
150
Mutaxassislik
Musiqa
Buxgal xiobi
Matematika
100
100
150
Suzish
Tennis
Yugurish
Rasm -6.8. Ko’p qiymatli bog‘lanishlarni bartaraf etish
Munosabat to’rtinchi norma formada deyiladi agar u BKNF da bo’lsa va
ko’p qiymatli bog‘lanishlarga ega bo’masa.
Beshinchi normal forma
Beshinchi normal forma bir qator aniqlanmagan xarakterga ega bo’lgan
bog‘lanishar bilan bog‘liq. Bu еrda gap yuqoridagi kabi bir nechta mayda
munosabatlarga bo’linadigan va keyin qayta tiklash mumkin bo’lmagan
munosabatlar xaqida boradi.
Ushbu xolat yuz beradigan shart aniqmas va intuitiv interpretatsiya
qilinmaydi. Bunday bog‘lanishlarni oqibatlari bizga ma’um emas.
7. SQL tili. SQL operatorlarini yozish.
7.1. SQL tilining vazifalari
3. SQL ma’lumot toifalari
4. SQL tilining SELECT (tanlash) operatori va uning parametrlari
Ma’lumotlar bilan ishlash uchun mo’ljallangan MBBTichki tili ikki qismdan
tashkil topgan:
Ma’lumotlar aniqlash tili (DATA DEFINITION LANGUAGE) va
ma’lumotlar bilan manipulyatsiya qilish tili (DATA MANIPULATION
LANGUAGE)
DDL tili ma’lumotlar baza sxemasini aniqlash uchun ishlatiladi.
DML tili bazada saqlanayotgan ma’lumotlarni o’qish va tiklash uchun
ishlatiladi.
Bu tillar ma’lumotlarni qism tillari yuqori darajali dasturlash tillari
deyiladi, chunki ularni tarkibida barcha xisoblarni bajarish uchunzarur bo’lganda
bo’ladigan til kostruksiyalari bo’lmaydi (shartli o’tish amallari, yoki sikl
operatori).
Ma’lumot bazasi ishlaydigan
imkoniyatlarni berishi kerak:
ixtiyoriy
til
foydalanuvchiga
quyidagi
- Ma’lumot bazasi va jadvallarni tuzilishi va tafsifini yarata olish
- ma’lumotlar bilan manipulyatsiya qilishni asosiy amallarini jumladan jadvalga
ma’lumotlarni
kiritish,(
qo’shish),ularni
takomillashtirish, jadvaldan
ma’lumotlarni olib tashlash
-oddiy va murakkab so’rovlarni bajarish
SQL TILINING VAZIFASI. Ma’lumotlar bazasi bilan ishlash tillari
ko’rsatilgan masalalarni foydalanuvchi kim kuch sarf qilib еchishi imkoniyatini
berishi kerak. Tilning komandalarini tuzilishi va sintaksisi еtarli darajada sodda
va o’rganishga oson bo’lishi kerak. Bundan tashqari u universal bo’lishi kerak.
Ya’ni qandaydir standart talablariga javob berishi kerak. Bu esa uni komanda
strukturasini va sintaksisini (yozilishini) bir qancha MBBTishlatishini imkonini
beradi.
Bu talablarni barchasiga SQL javob beradi.
SQL-(STRUSTURE
QUERY
LANGUAGE)
(STRUKTURALAShGAN
SO’ROVLAR TILI) SQL ma’lumotlarni almashtirish tili bo’lib xisoblanadi,
ya’ni u jadvallar bilan ishlash mo’ljallangan bo’lib, kiruvchi ma’lumotlar talab
etilgan chiquvchi ko’rinishga ega xolga aylantirib beradi.
SQL tili ikkita asosiy komponentga ega:
-DDL tili (DATA DEFINITION LANGUAGE ma’lumotlar aniqlash tili) bu
ma’lumotlar ba’zi strukturasini aniqlash va ma’lumotlarga murojaatni boshqarish
uchun mo’ljallangan.
DML
tili
(DATA
MANIPULATION
LANGUAGE)
ma’lumotlarni
manipulyatsiyalash tili. Ma’lumotlarni ajratish va tiklash uchun mo’ljallangan.
-bu til noprotsedura tili ,shuning uchun unga qanday axborot olishi kerakligi
ko’rsatiladi, lekin axborotni qanday olish emas. Boshqacha aytganda SQL tili
ma’lumotlarga murojaat usulini ko’rsatishni talab etmaydi.
SQL tili operatorlarni erkin formatda yozishini ta’minlaydi. Buning
ma’nosi, operatorlar elementlarini yozilishi ekrandan fiksirlangan joylarga bog‘liq
еmas. Komanda strukturasi bir qancha kalit xizmatchi so’zlar bilan beriladi,
masalan:
CREATE TABLE (sozdat tablitsi- jadval yaratish)
INSERT (vstavka-qo’yish)
SELECT (vыbrat-ajratib olish)
SQL operatori xizmatchi so’zlar va foydalanuvchi qo’llaydigan so’zlardan
tashkil topadi.
Xizmatchi so’zlar SQL tili doimiy qismi bo’lib, ular aniq qiymatga еga.
Ularni standartda ko’rsatilganday yozish kerak va ularni bir satrdan ikkinchisiga
ko’chirish uchun bo’linmaydi. Foydalanuvchi tomonidan aniqlangan so’zlar,
foydalanuvchi tomonidan ma’lum sintaksis qoidalari asosida beriladi. Ular o’z
navbatida ma’lumot baza ob’ektivlarini xar xil nomlari iborat bo’ladi (jadval,
ustun, tasvirlar, indekslar va x.k.). Operatordan so’zlar o’rnatilgan sintaksis
qoidalariga moslab joylashtiriladi. Til standartida bu ko’rsatilmagan bo’lsa xam,
SQL tilining dialektlarida (ko’rinishida)matn tugallanganini bildiruvchi belgi,
ko’pgina xollarda nuqtali vergul(;) ishlatiladi.
SQL operator komponentalarini ko’pchiligi registrga bog‘liq еmas, ya’ni
ixtiyoriy xar qanday katta va kichik xarflvr ishlatishi mumkin. Bularda bitta istisno
bor. Bu istisno simvolli literallarga tegishli. Ulardalitera ma’lumotlar, ularga
mos bo’lgan ma’lumotldar bazasidagi qiymatlar qanday saqlansa shunday
yozilishi kerak. Masalan: agar ma’lumotlar bazasida familiyaning qiymati
«SWITH»ko’rinishida bo’lsa, qidirish shartida «SWITH» simvol literal
ko’rinishida berilsa, bunga tegishli yozuv xech kachon topilmaydi.
SQL tili еrkin formatga еga bo’lgani uchun, SQL aloxida operatorlari va
ularning ketma-ketligini, aloxida ajratib yozish va tekislab yozishni ishlatish
mumkin. Quyidagi qoidalarga bo’ysunish talab еtiladi:
-operatordagi xar bir konstruksiya yangi satrdan boshlanishi kerak;
-xar bir konstruksiya boshlanishida tashlab ketladigan bo’sh pozitsiyalar, boshqa
operator konstruksiyalari xam bo’lishi kerak;
-agar konstruksiya bir necha qismdan iborat bo’lsa, ularning xar biri qism yangi
satrlardan bo’sh o’rinlarni oldingi konstruksiyaga nisbatan siljitib yoziladi.
Amaliyotda ma’lumot bazasi tuzilishini (asosan uni jadvallarini) aniqlash
uchun DDL operatorlari ishlatadi, bu jadvallarni ma’lumotlar bilan to’ldirish
uchun va ulardan axborotlarni so’rovlar yordamida ajratib olish uchun - DML
operatorlari ishlatiladi.
Ma’lumotlar bilan manipulyatsiyalash SQL tilini DML peratorlarini ko’llaymiz.
7.2. Interaktiv va qurilgan SQL.
SQL tilini ikkita shaklida mavjud va ishlatiladi.
-interaktiv SQL
- qurilgan (kiritilgan) SQL
Interaktiv SQLda foydalanuvchi SQL- so’rovlar va natija interaktiv rejimda
olinadi.
Qurilgan SQL, SQLkomandalaridan tashkil topib, u boshqa birorta tilga
(C++, C, Delphi) yozilgan dastur ichiga joylashtiriladi. Bu shunday tillarni
ishlatadigan dasturlarni samarador, quvvatli qiladi. Ulargarelyatsion ma’lumotlar
bazasi bilan ishlash imkonini beradi.
SQL ma’lumot toifalari.
Simvollar satr ma’lumot
SQLstandartida matnlarni faqat bitta tavsifi keltiriladi. Uning sintaksisi
toifasi
CHARACTER[(UZUNLIGI)] YOKI
CHAR[(UZUNLIGI)]
Jadvalni matnli qiymatli CHAR toifasidagi fikrlangshan uzunlikda bo’lishi
mumkin. Bu parametr qiymati 1 - 255 bo’lishi mumkin, ya’ni u 255
simvolgacha bo’lishi mumkin. SQL tilini ba’zi birlardagina o’zgaruvchan
uzunlikdagi satr toifalari bor. Bu toifalar quyidagicha tavsiflanadi:
VARCHAR(),CHARVARYING YOKI CHARVARYING()
Ixtiyoriy uzunlikdagi matnli tasvirni tasvirlaydi.
CHARACTER va VARCHAR toifasidagi konstantalar apostrof ichiga yoziladi.
Quyidagi yozuvlarni barchasi ekvivalent
VARCHAR [(UZUNLIGI)],
CHARVARYING [(UZUNLIGI)]
CHARACTER VARYING[(UZUNLIGI)]
Agar uzunlik oshkor ko’rsatilmasa, u birga teng deb qabul qilinadi,
ya’ni barcha xollarda bita simvoldan iborat bo’ladi.
Sonli ma’lumot toifalari SQL standartida quyidagi son toifasida ishlatiladi.
INTEGER-butun sonlar uchun -2-31….231
SMOLLINT-butun sonlar 2-15…215
DECIMAL (aniqlik[masshtab]) - Fiksirlangan nuqtali unli son aniqlik sondagi
qiymatli raqamlar masshtab unli nuqtadan undagi raqamlarning maksimal soni
kursatadi
NUMERIC(aniqlik[masshtab])- Fiksirlangan nuqtali unli son. aniqlik sondagi
qiymatli raqamlar masshtab unli nuqtadan undagi raqamlarning maksimal soni
kursatadi
FLOAT[(aniklik)]suzuvchi nuktali son minimal aniklik bilan beriladi.
Shunday qilib xulosa qilish mumkin:
1. Simolli satrlar toifasi. Character [uzunligi] [char] uzun) da kursatiladi.
Bundan tashkari uzgaruvchan uzunlikdagi simvolli satrlar toifasini xam ishlatamiz.
Bunda uzgaruvchi toifalar ixtiyoriy uzunlikda buladi. Bunda uzunliklar zarur
bulmagan parametrlar xisoblashadi. Agar ular ishlatilmasa, unda 1 ta simvolga
joy ajratiladi.
Simvolli satrlarni belgilashni yana bir usuli bor.
Varchar [(uzunlik)] yoki charvaryina [(uzunlik)]
2. Ma’lumotlarni sonli tiplari
1. Integer
2. Smallint
3. Decimal (aniklik, masshtab). (DEC) fiksirlangan (__) li sonlarni
tasvirlash uchun ishlatiladi.
Aniqlik- sondagi qiymatli raqamlar.
Masshtab- nuktadan keyingi ung tomonda turgan rakamlarni maksimal soni
4. Numeric (aniklik, (masshtab).
5. FLOAT (aniklik). Suzunlikuvchi nuktali son va undagi minimal
aniklikni bildiradi.
6. REAL FLOAT kabi tip sonlari bilan kushimcha kilingan.
Sana va vakt toifasidagi ma’lumotlar standarti kushimcha kilinmagan. Bular
yozilishini texnik xujjatlarda kurish kerak.
7.3. NOANIK VA O’TKAZIB YUBORILGAN MA’LUMOTLAR
SQL da atribut kiymatlari noma’lum bulgan utkazibi yuborilgan yoki
mavjud bulmaganlarini NULL bilan yoziladi. NULL kiymat oddiy tushunchada
kiymat kiymat xisoblanmaydi. U fakat atributni xakikiy kiymati tushib
koldirilgan yoki noma’lumligini anglatadi. NULL ni ishlatishda kuyidagilarga
e’tibor berish kerak:
Agregat funksiyalar ishlatilganda birorta atributni kiymatlar tuplami
buyicha xisoblashlar bajarilganda aniklikni ta’minlash maksadida NULL kiymat
xisobga olinmaydi.
- shartli operatorlarda TRUE, FALSE dan tashkari UNKOWN paydo bulsa
natija NULL kiymatda chikadi.
- bu kiymatni tekshirish uchun IS NULL yoki IS NOT NULL lardan
foydalanamiz.
- almashtirish fuknsiyalari xam argument sifatida NULL bulsa natija NULL ga
teng buladi.
Misollar:
O’quv misoli: Yechilayotgan misollar kuyidagi jadvalari asosida bajarilgan;
MB jadvallari:
STUDENT (TALABA)
LECTURER (O’qituvchi)
SUBJECT (O’qitiladigan fanlar)
University(Universitet)
EXAM_ MARKS
SUBY_LECT (ukituvchilarni ukuv fanlari)
7.4. SELECT operatori
SELECT (tanlash) SQL tilining eng muhim va ko’p ishlatiladigan operatori
xisoblanadi. U ma’lumotlar bazasi jadvalidan axborotlarnitanlab olish uchun
muljallangan.
SELECT operatori sodda xolda kuyidagi kurinishda yoziladi.
SELECT [DISTINCT] <atributlar ruyxati>
FROM <jadvallar ruyxati>
[WHERE <tanlash sharti>]
[ORDER BY < atributlar ruyxati >]
[GROUP BY < atributlar ruyxati >]
[HAVING <shart> ]
[UNION <ON SELECT operatorli ifoda> ] ;
Bu еrda kvadrat kavslarda yozilgan elementlar xar doim xam yozilishi shart emas
SELECT xizmatchi suzunliki ma’lumot bazasidan axborotni tanlab olish
operatori yozilganini anglatadi. SELECT suzunlikidan keyin bir biridan vergul
bilan ajratilib suralaetgan maydon nomlari (atributlar ruyxati) yoziladi. SELECT
surov operatorini zarur xizmatchi suzunliki FROM (undan, dan) xisoblanadi.
FROM suzunlikidan keyin axborot olinayotgan jadval nomlari bir biridan vergul
bilan ajratilib yoziladi.
Masalan:
SELECT Name, Surname
FROM STUDENT ;
Ixtiyoriy SQL so’rov operatori nukta vergul (;) simvoli bilan tugaydi.
Keltirilgan surov STUDENT jadvalidan Name va Surname maydonlarni barcha
qiymatlarini ajratib olishni amalga oshiradi. Natijada kuyidagi jadval xosil
bo’ladi.
O’quv misoli:
8. Ma’lumotlar manipulyasiya qilish. Oddiy so‘rovlar
yaratish.
8.1 SELECT ma’lumotlarni tanlash operatori
Ma’lumotlarni tanlash SELECT operatori yordamida bajariladi. Bu SQL
tilining eng ko‘p qo‘llaniladigan operatori xisoblanadi. SELECT operatorini
sintaksisi quyidagicha:
SELECT [ALL/DISTINCT] <atributlarro‘yxati>/*
FROM <jadvallar ro‘yxati>
[WHERE <tanlash sharti >]
[ORDER BY < atributlar ro‘yxati >]
[GROUP BY < atributlar ro‘yxati >]
[HAVING <shart>]
[UNION< SELECT operatorli ifoda>]
Kvadrat qavslarda operatorni yozishda qatnashishi shart bo‘lmagan
elementlar ko‘rsatilgan. ALL kalit so‘zi natijaga shartni qanoatlantiruvchi barcha
satrlar, shuningdek takrorlanuvchi satrlar ham kirishini bildiradi. DISTINCT kalit
so‘zi natijaga takrorlanuvchisatrlarkiritilmasliginibildiradi.Keyin boshlang‘ich
jadvaldagi atributlar ro‘yxati ko‘rsatiladi. Bu atributlar natijaviy jadvalga kiritiladi.
* simvoli natijaviy jadvalga boshlang‘ich jadvalning barcha atributlari kiritilishini
bildiradi.
Operatorda qatnashishi shart bo‘lgan so‘zlardan FROM so‘zi xisoblanadi. Bu
so‘zdan keyin tanlov bajariladigan jadvallar nomi ko‘rsatiladi.
Tanlash ifodasida WHERE kalit so‘zidan keyin jadval satrlarini tanlab olish
sharti ko‘rsatiladi. Bunda natijaviy jadvalga WHERE
qiymat qabul qiladigan satrlarkiritiladi.
ifodasidagi
shart
rost
ORDER BY kalit so‘zi natijaviy jadval satrlarini ko‘rsatilgan ustunlar ro‘yxati
bo‘yicha tartiblash amalini bildiradi.
GROUP BY kalit so‘zidan keyin gruppalanadigan atributlar ro‘yxati
ko‘rsatiladi.
HAVING ifodasida har bir gruppaga qo‘yiladigan shartlar ko‘rsatiladi.
(GROUP BY va HAVING kalit so‘zlari keyinroq tushuntiriladi)
FROM, WHERE va ORDER BY kalit so‘zlari SQL tilining qolgan ma’lumotlarni
manipulyasiyalash operatorlarida ham shu tarzda ishlatiladi.
So‘rovlar yaratishni aniq misol uchun ko‘rib o‘tamiz (8.1-rasm)
8.1-rasm
exam_st
Student
id_s
Surname
id_ex
1
Subject Date
Matem
t
10.05.20
09
1
Xasanov
2
Karimov
3
Jabborov
2
Fizika
15.05.20
09
mark_st
mark
Id_exi _st
d
2
2
3
3
1
2
1
1
4
3
2
5
2
1
3
1
2
2
2
3
4
1
3
5
3
3
3
Barcha studentlar ro‘yxatini tanlash va tasvirlash.
SELECT *
FROM student
yoki
SELECT id_st, surname FROM student
Agar ushbu so‘rovga ORDER BY surname ifodasi qo‘shilsa, u xolda ro‘yxat
familiya bo‘yicha tartiblanadi. Jimlikka ko‘ra tartiblash o‘sish bo‘yicha bajariladi.
Agar kamayish bo‘yicha tartiblash kerak bo‘lsa, u xolda oxirgi ifodadagi atribut
nomidan keyin DESC so‘zi qo‘shiladi.
«1» kodli student olgan baxolar ro‘yxatini tanlab olish va tasvirlash
SELECT id_st, mark FROM mark_st Where id_st = 1
Ekzamenlarda kamida bitta 2 yoki 3 baxo olgan studentlar kodini tanlab
olish.
WHERE so‘zidan keyin solishtirish amallarini (<, >, =, <> va x.k.) va
mantiqiy operatorlar qatnashgan ifodalarni joylashtirish mumkin.
SELECT id_st, mark FROM mark_st
WHERE ( MARK >= 2 ) AND ( MARK <= 3 )
SQL tilida shart ifodalarini tuzish uchun solishtirish va mantiqiy
operatorlardan tashqari yana bir qator maxsus operatorlar qo‘llaniladi. Bu
operatorlar dasturlash tillarida mavjud emas. Bu operatolar:
IN – biror qiymatlar to‘plamiga tegishliligini tekshirish; BETWEEN – biror
qiymatlar diapozoniga tegishliligini tekshirish; LIKE – namuna bilan mosligini
tekshirish;
IS NULL – qiymat mavjudmasligini tekshirish.
IN operatori biror qiymatlar to‘plamiga tegishlilikni tekshirish uchun
ishlatiladi.
Quyidagi so‘rov oxigi keltirilgan misoldagi so‘rov natijalarini beradi
(ekzamenlarda kamida bitta 2 yoki 3 baho olgan studentlarni identifikatorini tanlab
oladi)
SELECT id_st, mark
FROM mark_st
WHERE mark IN (2,3)
Xuddi natijani BETWEEN operatoridan foydalanib olish mumkin:
SELECT id_st, mark
FROM mark_st
WHERE mark BETWEEN 2 AND 3
Familiyalari A xarfi bilan boshlanuvchi studentlar ro‘yxatini tanlab olish.
Bunday xolatda LIKE operatoridan foydalanish qulay xisoblanadi. LIKE
operatori faqat simvolli maydonlar uchun qo‘llaniladi va maydon qiymati
operatorda ko‘rsatilgan namunaga mosligini tekshirish imkonini yaratadi. Namuna
quyidagi maxsus simvollardan tashkil topadi:
_ (tagiga chizish belgisi) – bitta ixtiyoriy simvolni bildiradi;
% (foiz belgisi) – ixtiyoriy miqdordagi simvollar ketma – ketligini bildiradi.
SELECT id_st, surname FROM student
WHERE surname LIKE 'A%'
Ko‘pincha ustunlardagi minimal, maksimal yoki o‘rtacha qiymatlarni
xisoblashga to‘g‘ri keladi. Masalan, keltiligan jadvallarda o‘rtacha baxoni xisoblash
mumkin. Bunday xisoblashni bajarish uchun SQL tilida maxsus agregat funksiyalari
mavjud:
MIN() – ustundagi minimal qiymat;
MAX() – ustundagi maksimal qiymat;
SUM() – ustundagi qiymatlar summasi;
AVG() – ustundagi qiymatlarni o‘rtachasi;
COUNT() – ustundagi NULL dan farqli qiymatlar miqdori.
Quyidagi so‘rov studentlar olgan baxolarning o‘rtachasini xisoblaydi.
SELECT AVG(mark)
FROM mark_st
Albatta, agregat funksiyalarini WHERE so‘zi bilan birgalikda qo‘llash
mumkin.
Quyidagi so‘rov 100 kodli studentning ekzamenlarda olgan baxolarining
o‘rtachasini xisoblaydi:
SELECT AVG(mark)
FROM mark_st WHERE id_st = 100
Navbatdagi so‘rov 10 kodli studentning o‘rtacha baxosini xisoblaydi:
SELECT AVG(mark)
FROM mark_st WHERE id_ex = 10
SQL tili ko‘rib o‘tilgan mexanizmiga qo‘shimcha ravishda agregat
funksiyalarni to‘la jadval uchun emas, balki gruppalangan qiymatlar uchun qo‘llash
imkonini beruvchi vosita mavjud. Buning uchun SQL da maxsus GROUP BY
konstruksiyasi mavjud bo‘lib unda ko‘rsatilgan ustun qiymatlari bo‘yicha
gruppalash amalga oshiriladi. Masalan, har bir studentni ekzamenlarda olgan
baxolarining o‘rtachasini aniqlash mumkin. Buning uchun quyidagi so‘rov beriladi:
SELECT id_st, AVG(mark)
FROM mark_st
GROUP BY id_st
Bu imkoniyat ham odatdagidek WHERE so‘zi bilan birgalikda qo‘llanilishi
mumkin. Bu so‘rovni bajarishda MBBT avval jadvaldan WHERE ifodasidagi
shartni qanoatlantiruvchi satrlarni tanlab oladi, keyin tanlangan satrlarni gruppalash
va agregatlash amalini bajaradi.
Quyidagi so‘rov har bir studentning 100 kodli ekzamendan olgan baxolarining
o‘rtachasini aniqlaydi.
SELECT id_st, AVG(mark) FROM mark_st
WHERE id_ex = 100 GROUP BY id_st
Ko‘rib turganimizdek gruppalash bittadan ko‘p maydon bo‘yicha bajarilishi
mumkin. GROUP BY seksiyasiga ega bo‘lgan so‘rovlar uchun quyidagi muxim
cheklanish mavjud: bunday so‘rovlar natijasi tarkibiga gruppalash bajarilgan
ustunlar va agregatlash natijasiga ega bo‘lgan ustunlar kiradi.
Biror xulosaga kelishdan oldin SQL tilining barcha imkoniyatlarini ko‘rib
chiqish kerak. Masalan, ixtiyoriy tekstni so‘rov tarkibiga kiritish mumkin. Bunga
misol keltiramiz:
SELECT 'O‘rtacha ball =’, AVG(mark)
FROM mark_st WHERE id_ex = 10
Ushbu so‘rov natijasida foydalanuvchi faqat oddiy sonlarni emas, balki tekstni
ham ko‘radi.
Bir necha jadvallardan ma’lumotlarni tanlash uchun SQL ni qo‘llash
Shu paytgacha faqat bitta jadvaldan ma’lumotlarni tanlash miollari keltirildi.
Relyasion amallarga mos bo‘lgan bir nechcha jadvallardan ma’lumotlar tanlab
olishni ham bajarish mumkin. Bir nechta jadvallardan ma’lumotlarni tanlab olishga
to‘liq misollar keltirish imkoni yo‘q. Bunga doir ba’zi misollarni ko‘rib o‘tamiz.
Qoidaga ko‘ra, ma’lumotlar tanlab olinadigan jadvallar u yoki bu shaklda bir
biri bilan bog‘langan. Masalan, birga ko‘p va x.k.
1 rasmdagi ER-diagrammaga qarang. Bu miolda bog‘langan jadvallar
mavjud. student, mark_st va exam_st jadvallarini ko‘rib chiqamiz.
mark_st jadvali id_ex maydoni bo‘yicha exam_st jadvali bilan bog‘langan.
mark_st jadvali id_st maydoni bo‘yicha student jadvali bilan bog‘langan.
Masalan, studentlarni ro‘yxatini ular ekzamenlardan olgan baxolari bilan
birgalikda tanlash zarur bo‘lsin. Buning uchun quyidagi so‘rov beriladi:
SELECT student.surname, mark_st.id_ex, mark_st.mark
FROM student, mark_st
WHERE student.id_st = mark_st.id_st
Keltirilgan ko‘p jadvalli so‘rov bir jadvalli so‘rovdan quyidagilar bilan farq
qiladi.
1.
FROM seksiyasida ikkita jadval ko‘rsatilgan.
2.
jadvallar soni bitta ko‘p, shuning uchun ko‘rsatilgan maydonlar
nomining bir qiymatliligi yo‘qoladi. Masalan, ko‘p xollarda maydonni FROM da
ko‘rsatilgan jadvallar ro‘yxatidagi qaysi jadvaldan olish noma’lum bo‘lib qoladi.
Maydon nomlarining ko‘p qiymatliligini bataraf etish uchun maydon nomida prefiks
- jadval nomi qo‘shimcha qilinadi. Jadval nomi maydon nomidan nuqta
bilanajratiladi.
3.
WHERE ifodasida jadvallarni birlashtirish sharti ko‘rsatiladi.
Ko‘rinib turganidek jadval nomidan iborat prefiksdan foydalanish so‘rovni
murakkablashtiradi. Bunday murakkablikni bartaraf etish uchun psevdonim
ishlatiladi. Yuqoridagi so‘rovni quyidagicha yozish mumkin:
SELECT E.surname, M.id_ex, M.mark FROM student E, mark_st M
WHERE E.id_st = M. id_st
8.2. INSERT ma’lumotlarni kiritish operatori
INSERT INTO jadval_nomi [(<ustunlar ro‘yxati >) ] VALUES (<qiymatlar
ro‘yxati >)
Bunday sintaksis jadvalga faqat bitta satr kiritish imkonini beradi. Agar
satrdagi barcha ustunlarga qiymat kiritilayotgan bo‘lsa, so‘rovda barcha ustunlar
nomini ko‘rsatish zarur emas.
Masalan, BOOKS jadvaliga yangi kitob ma’lumotlari kiritiladi
INSERT INTO BOOKS ( ISBN, TITL, AUTOR, COAUTOR, EARIZD,
PAGES)
VALUES
("5-88782-290-2","Аппаратные
средства
IBM
PC.Енциклопедия", “Guk M. ", "",2000, 816)
Bu kitob avtori faqat bitta va soavtor (hammuallif) mavjud emas, biroq
ustunlar ro‘yxatida COAUTOR ustuni ham ko‘rsatilgan. Shuning uchun VALUES
bo‘limida bu ustunga mos qiymatni ko‘rsatish zarur. Misolda bu maydon uchun
bo‘sh satr ("") ko‘rsatilgan. Bu soavtor yo‘qligini bildiradi. Shuningdek bu еrda
aniqlangmagan NULL qiymatini ko‘rsatish ham mukin edi.
Satrdagi barcha ustunlarga qiymat kiritishda ustunlar ro‘yxatini ko‘rsatish
zarur emas. Bunda faqat qiymatlar ro‘yxatini ko‘rsatish еtarli bo‘ladi. Bunday xolda
operator ko‘rinish quyidagicha shaklda bo‘ladi:
INSERT INTO BOOKS VALUES ("5-88782-290-2", "Аппаратные
средства IBM PC. Ensiklopediya"."Guk M.","".2000.816)
Shuningdek to‘liq miqdorda bo‘lmagan qiymatlarni ko‘rsatish mumkin. Ya’ni
iymatlar qatorida soavtorni ko‘rsatmaslik mumkin, chunki jeoriy kitobda soavtor
yo‘q. Biroq bunda qiymat kiritiladigan ustun nomlarini quyidagicha shaklda
ko‘rsatish kerak bo‘ladi:
INSERT INTO BOOKS VALUES ("5-88782-290-2", "Apparatnыe sredstva
IBM PC. Ensiklopediya"."Guk M.","".2000.816)
Bu xolda COAUTOR ustuniga NULL qiymati yoziladi.
Agar jadvalni yaratishda ustun yoki atributga majburiy qiymat (NOT NULL)
belgisi qo‘yilgan bo‘lsa, u xolda INSERT operatorida joriy ustunning har bir satriga
kiritiladigan qiymatg ko‘rsatilishi kerak. Shuning uchun, agar jadvalning hamma
ustuni majburiy qiymat li bo‘lsa, u xolda har bir yangi kiitladigan satrda barcha ustun
uchun qiymat mavjud bo‘lishi kerak va bunda ustunlar ro‘yxatini ko‘rsatish shar
emas. Aks xolda jadvalda kamida bitta maburiy qiymatli bo‘lmagan ustun bo‘lsa, u
xolda albatta ustunlar ro‘yxatini ko‘rsatish shart bo‘ladi.
Qiymatlar ro‘yxatida maxsus funksiyalar va ifodalar ko‘rsatilish ham
mumkin. Bunda ushbu funksiyalarning qiymatlari ma’lumotlarni kiritish momentida
xisoblangan bo‘lishi zarur.
Ma’lumotlarni kiritish operatori birdaniga bir necha satrlarni kiritish imkoniga
ham ega. Bunda qiymatlar satri boshqa bir jadvaldan tanlab olinadi. Masalan
studentlar xaqidagi jadval mavjud bo‘lsin. Unda studentlarning familiyasi, adresi,
uy telefoni va tug‘ilgan sanasi ko‘rsatilgan bo‘lsin. U xolda bitta operator yordamida
ularni bibliotekaning kitobxonlariga aylantirish mumkin:
INSERT INTO READER (FIO_studenta, Adres, Telefon, Data_rojd)
SELECT (FIO_studenta, Adres, Telefon, Den_rojd) FROM STUDENT
8.3. DELETE o‘chirish operatori
Ma’lumotlarni o‘chirish operatori jadvaldan shartni qanoatlantiruvchi bir yoki
bir neta satrlarni o‘chirishi mumkin.
DELETE FROM jadval _nomi[WHERE tanlash_sharti]
Agar satrlarni tanlash sharti ko‘rsatilmasa, u xolda jadvaldagi barcha satrlar
o‘chiriladi. Natijada ma’lumotlarga ega bo‘lmagan bo‘sh bo‘lgan jadval xosil
bo‘ladi.
Agar jadvaldan oldingi sessiya natijalarini o‘chirish kerak bo‘lsa, u xolda R1
jadvalidagi barcha satrlar o‘chiriladi:
DELETE FROM R1 WHERE
qismidagi shart ifodasi xuddi SELECT operatoridagi filtrlash shartiga o‘xshash
bo‘ladi. Bu shart jadvaldan qaysi satrlar o‘chirilishi kerakligini aniqlaydi.
Masalan, student Mironova A.V. o‘chirilmasli kerak bo‘lsa, quyidagi so‘rov
beriladi:
DELETE FROM R2 WHERE FIO = “Mironov A.V.”
WHERE qismida biror so‘rov ko‘rsatilishi mumkin. Masalan, agar jadvaldan
o‘zlashtirmagan studentlarni o‘chirish kerak bo‘lsin. Oliy ta’lim qonuniga ko‘ra
oxirgi sessiyada ikkita va undan ortiq fandan ikki baxo olgan student
o‘zlashtirmagan xisoblanadi. U xolda tanlab olish sharti ikkita va undan ko‘p ikki
baxo olgan studentlarni va ikkita undan ko‘p ekzamenlarni topshirmagan
studentlarni aniqlashi kerak. Bunday studentlarni aniqlash uchun R1 jadvalidan 2
baxoli va baxo ko‘rsatilmagan satrlar tanlab olinishi, keyin olingan natija FIO ustuni
bo‘yicha gruppalanishi kerak. Keyin har bir gruppadagi satrlar soni aniqlanadi (bu
har bir studentning olgan ikki baxolari bilan topshirmagan ekzamenlar sonini
bildiradi) va ikkitadan ko‘p satrga ega ustunlar tanlab olinadi. Endi ushbu murakkab
bo‘lgan konstruksiyani SQL tilida yozamiz va sodda ko‘rinishga ega bo‘lishini
ko‘ramiz.
DELETE FROM R2 WHERE R2.FIO IN (SELECT R1.FIO FROM R1
WHERE Osenka = 2 OR Osenka IS NULL GROOP BY R1.FIO HAVING
COUNT(*) >= 2
DELETE operasiyasini bajarishda unda qatnashgan qism so‘rovda satrlar
o‘chiriladigan jadval ko‘rsatilmasligi kerak.
Ma’lumotlarni manipulyasiyalash operasiyalarining barchasi ma’lumotlar
bazasining butunligi tushunchasi bilan bog‘langan. Manipulyasiyalash amallari
sintaktik jixatdan to‘g‘ri bo‘lsada butunlik talablari tufayli bajarilmasligi mmkin.
8.4. UPDATE ma’lumotlarni yangilash operasiyasi
O‘zgarish yuz berganda va mos xolda bu o‘zgarishni ma’lumotlar bazasida
akslantirish uchun ishlatiladi.
UPDATE jadval_nomi SET ustun_nomi = yangi_qiymat [WHERE
tanlash_sharti]
Bu yеrda ham WHERE qismi DELETE operatoridagi kabi ko‘rsatilishi shart
emas. U DELETE operatoridagi kabi bir xil vazifani bajaradi va o‘zgartirish amali
bajariladigan satlarni tanlash imkonini beradi. Agar tanlash sharti (WHERE qismi)
ko‘rsatilmagan bo‘lsa, u xolda o‘zgartirish amali jadvlning barcha satrlari uchun
bajariladi.
Masalan, student Stepanova K. E. ma’lumotlar bazasi fanidan “2” baho oldi,
keyin uni “3” bahoga qayta topshirgan bo‘lsin. Bu xolatga mos xolda R1 jadvalini
o‘zgartirish amali quyidagi operator bilan amalga oshiriladi:
UPDATE R1
SET R1.Otsenka = 3
WHERE R1.FIO = "Stepanova K.E." AND R1.Dissiplina ="Bazы dannыx"
Qanday xolatlarda bir nechta satrlarni o‘zgartirish zarurati paydo bo‘ladi?
Bu kam uchaydigan masala emas. Masalan, agar guruxlar jadvalidagi guruxlarni
kursini bittaga oshirish zarr bo‘lsa quyidagi o‘zgartirish amali bajarishi mumkin.
Guruxlar jadvali quyidagicha sxemaga ega bo‘lsin:
R4 = < Gurux, Kurs> UPDATE R4
SET R4.Kypc = R4.Kypc + 1
Nazorat savollari
1. SQL tilining SELECT tanlash operatori.
2. SELECT tanlash operatorining sintaksisi
3. SELECT operatorining WHERE ifodasi shartini yaratishda solishtirish
operatorlari bilan birgalikda ishlatiladigan maxsus operatorlar.
4. IN, BETWEEN, LIKE, IS NULL operatorlari. Ularni ta’riflang va misollar
keltiring.
5. SELECT operatoriga oid misollar tuzing.
6. Agregat funksiyalari.
7. agregat funksiyalari qatnashtirib SELECT operatoriga oid misollar tuzing.
8. SELECT operatorida yordamida bir nechta jadvallardan ma’lumotlarni
tanlash
9. SQL tilining INSERT ma’lumotlarni kiritish operatori.
10. SQL tilining DELETE ma’lumotlarni o‘chirish operatori
11. SQL tilining UPDATE ma’lumotlarni yangilash operatori
12. SQL tilining create database operatori.
9. SQL tili yordamida maʼlumotlarni tavsiflash
9.1. Jadvallarni yaratish
Jadvallar CREATE TABLE komandasi bilan yaratiladi. Bu komanda
qatorlarsiz bo‘sh jadval yaratadi. CREATE TABLE komandasi jadval nomini va
jadvalning o‘zini ko‘rsatilgan tartibdagi ustunlar ketma – ketligi ko‘rinishida
aniqlaydi. Unda har bir ustundagi maʼlumotlarning tiplari va ustunlar o‘lchovi
ko‘rsatiladi. Har bir jadval juda bo‘lmaganda bitta ustunga ega bo‘lishi kerak.
CREATE TABLE
komandasi sintaksisi:
CREATE TABLE <table-name >
( <column name> <data type>[(<size>)],
<column name> <data type>[(<size>)], ... );
Argument qiymati kattaligi maʼlumot turiga bog‘liqdir.Agar siz maxsus
ko‘rsatmasangiz, tizim avtomatik qiymatni o‘rnatadi.
Misоl uchun sоtuvchilar jadvalini yaratishni ko‘rib chiqamiz:
CREATE TABLE Salepeople
(SNum
integer,
SName
char (10),
City char (10),
Comm
decimal );
9.2. Jadvallarni o‘chirish
Jadvalni o‘chirish imkоniga ega bo‘lish uchun, jadval egasi (Ya’ni
yaratuvchisi) bo‘lishingiz kerak. Faqat bo‘sh jadvalni o‘chirish mumkin. Qatоrlarga
ega bo‘lgan, to‘ldirilgan jadvalni o‘chirish mumkin emas, Ya’ni jadval o‘chirishdan
оldin tоzalangan bo‘lishi kerak. Jadvalni o‘chirish kоmandasi quyidagi ko‘rinishga
ega:
DROP TABLE < table name >;
Masalan: DROP TABLE Salepeople;
9.3. Jadvalni o‘zgartirish
Jadvalni o‘zgartirish uchun ALTER TABLE kоmandasidan fоydalaniladi. Bu
kоmanda jadvalga Yangi ustunlar qo‘shish, ustunlarni o‘chirish, ustunlar kattaligini
o‘zgartirish,hamda cheklanishlarni qo‘shish va оlib tashlash imkоniyatlariga ega. Bu
kоmanda ANSI standarti qismi emas, shuning uchun har хil tizimlarda har хil
imkоniyatlarga ega.
Jadvalga ustun qo‘shish uchun kоmandaning tipik sintaksisi:
ALTER TABLE <table name> ADD <column name>
<data type> <size>;
Masalan:
ALTER TABLE Salepeople ADD Phone CHAR(7);
9.4. Jadvallar uchun cheklanishlar
Cheklanishlarni kiritish.
Ko‘p хоllarda ustunga kiritilgan qiymatlar bir biridan farq qilishi kerak. Agar
ustun uchun UNIQUE cheklanishi o‘rnatilsa, bu ustungsha mavjud qiymatni
kiritishga urinish rad etilapdi. Bu cheklanish bo‘sh bo‘lmaydigan (NOT NULL)
debe’lоn qilingan maydоnlarga qo‘llanishi mumkin.
Masalan:
CREATE TABLE Salepeople
( SNum integer NOT NULL UNIQUE,
SName char (10),
City char (10),
Comm
decimal);
Unikalligi talab qilinadigan maydоnlar(birlamchi kalitlardan tashqari)
kandidat kalitlar yoki unikal kalitlar deyiladi.
Jadval cheklanishi UNIQUE maydоnlar guruхiga o‘rnatilishi mumkin. Bu bir
necha maydоnlar qiymatlari kоmbinatsiyasi unikalligini ta’minlaydi. Bizning
ma’lumоtlart bazamizda har bir buyurtmachi bitta sоtuvchiga biriktirilgan. Ya’ni
Buyurtmachilar jadvalida buyurtmachi nоmeri (cnum) va sоtuvchi nоmeri (snum)
kоmbinatsiyasi unikal bo‘lishi kerak. Bu cheklanishni UNIQUE (cnum, snum)
yordamida, Customers jadvalini yaratishda kiritish mumkin. Bu ustunlar uchun NOT
NULL cheklanishini kiritish zarurdir.
Birlamchi kalitlar cheklanishlari.
SQL birlamchi kalitlarni to‘g‘ridan to‘g‘ri birlamchi kalit (PRIMARY KEY)
cheklanishi оrqali ta’riflaydi. PRIMARY KEY jadvalni yoki ustunlarni cheklashi
mumkin. Bu cheklanish UNIQUE cheklanishi kabi ishlaydi, jadval uchun faqat bitta
birlamchi kalit (iхtiyoriy sоndagi ustunlar uchun ) aniqlanishi mumkin bo‘lgan
хоldan tashqari. Birlamchi kalitlar NULL qiymatga ega bo‘lishi mumkin emas.
Misоl:
CREATE TABLE Salepeople
( SNum integer NOT NULL PRIMARY KEY, SName char (10),
City char (10), Comm decimal);
Maydоn qiymatlarini tekshirish (CHECK cheklanishi).
CHECK cheklanishi jadvalga kiritilayotgan ma’lumоt qabul qilinishidan
оldin mоs kelishi lоzim bo‘lgan shart kiritishga imkоn beradi. CHECK cheklanishi
CHECK kalit so‘zi ko‘rsatilgan maydоndan fоydalanuvchi predikat ifоdalaridan
ibоratdir.
Misоl: Salepeople jadvali Comm ustuniga kiritilayotgan qiymat 1 dan kichik bo‘lish
sharti.
CREATE TABLE Salepeople
( SNum integer NOT NULL PRIMARY KEY,
SName char(10) NOT NULL UNIQUE,
City char(10),
Comm decimal CHECK ( Comm < 1 ));
Ko‘zda tutilgan qiymatlarni o‘rnatish.
Birоr bir maydоn uchun qiymat ko‘rsatmagan хоlda jadvalga satr qo‘shsangiz,
SQL bunday maydоnga kiritish uchun ko‘zda tutilgan qiymatga ega bo‘lishi kerak,
aks хоlda kоmanda rad etiladi. Eng umumiy ko‘zda tutilgan qiymat NULL
qiymatdir. CREATE TABLE kоmandasida ko‘zda tutilgan qiymat DEFAULT
оperatоri оrqali, ustun cheklanishi sifatida ko‘rsatiladi. Masalan:
CREATE TABLE Salepeople
( SNum integer NOT NULL PRIMARY KEY,
SName char(10) NOT NULL UNIQUE,
City char(10) DEFAULT 'New York',
Comm decimal CHECK ( Comm < 1 ));
Ma’lumоtlar yaхlitligini ta’minlash
Jadval bir maydоnidagi hamma qiymatlar bоshqa jadval maydоnida aks etsa,
birinchi maydоn ikkinchisiga ilоva qiladi deyiladi. Bu ikki maydоn оrasidagi
bоg‘liqlikni ko‘rsatadi. Masalan, buyurtmachilar jadvalida har bir buyurtmachi,
sоtuvchilar jadvalida o‘ziga biriktirilgan sоtuvchiga ilоva qiluvchi SNum
maydоniga ega. Bir maydоn ikkinchisiga ilоva qilsa tashqi kalit, u ilоva
qilayotgan maydоn ajdоd kalit deyiladi. Buyurtmachilar jadvalidagi SNum
maydоni tashqi kalit, sоtuvchilar jadvalidagi SNum - ajdоd kalitdir.
Tashqi kalit bitta maydоndan ibоrat bo‘lishi shart emas. Birlamchi kalit kabi,
tashqi kalit bitta mоdul sifatida qayta ishlanuvchi bir necha maydоnlarga ega bo‘lishi
musmkin. Maydоn tashqi kalit bo‘lsa ilоva qitlayotgan jadval bilan ma’lum usulda
bоg‘liqdir. Tashqi kalit har bir qiymati (satri), ajdоd kalitning bitta va faqat bitta
qiymatiga( satriga) ilоva qilishi kerak. Bu хоlda tizim ilоvali yaхlit хоlatda deyiladi.
Shu bilan birga ajdоd kalit qiymati tashqi kalit bir necha qiymatlariga ilоva
qilishi mumkin.
Cheklanish FOREIGN KEY.
SQL ilоvali yaхlitlikni FOREIGN KEY yordamida ta’minlaydi. Tashqi kalit
vazifasi ajdоd kalitda ko‘rsatilmagan qiymatlarni tashqi kalit maydоnlariga
kiritmaslikdir. FOREIGN KEY cheklanishi sintaksisi:
FOREIGN KEY <column list> REFERENCES
<pktable> [<column list>]
Birinchi ro‘yхat kоmanda tоmоnidan o‘zgartiriluvchi ustunlar ro‘yхatidir.
Pktable - bu ajdоd kalitli jadval. Ikkinchi ustunlar ro‘yхati bu ajdоd kalitni tashkil
qiluvchi ustunlardir.
Misоl uchun Sоtuvchilar jadvaliga ilоva qiluvchi tashqi kalit sifatida e’lоn qilingan
SNum maydоniga ega bo‘lgan Buyurtmachilar jadvalini yaratamiz:
CREATE TABLE Customers
( CNum integer NOT NULL PRIMARY KEY,
CName char(10),
City char(10),
SNum integer,
FOREIGN KEY (SNum) REFERENCES Salepeople (SNum) );
Nazorat savollari
1. SQL tilida maʼlumotlarning tiplari
2. SQL DDL maʼlumotlarni aniqlash tili
3. SQL tilida jadvallar yaratish operatori
4. SQL tilida domen yaratish operatori.
5. SQL tilining Create Table operatori
6. SQL tilining Drop Table operatori
10. SQLda jarayonlar va standart funksiyalar
10.1. Saqlanadigan MySQL protseduralari
Saqlanadigan MySQL protsedurasi - bu ma'lumotlar bazasida saqlanadigan
qism dastur. Unda nom, parametrlar ro'yxati va SQL operatorlari mavjud.
Ma'lumotlar bazasini boshqarishning barcha mashhur tizimlari saqlanadigan
protseduralarni qo'llab-quvvatlaydi. Ular MySQL 5-da joriy etilgan va ulardan
foydalanish uchun sizda ROUTINE CREATE imtiyozi bo'lishi kerak. Ikkilik
ro'yxatdan o'tishga ruxsat berilgan bo'lsa, ushbu ko'rsatmalar ham SUPER
imtiyozlarini talab qilishi mumkin.
Ikki xil tartib mavjud: boshqa SQL ko'rsatmalarida ishlatiladigan
saqlanadigan protseduralar va funktsiyalar (masalan, pi ()).
Asosiy farq shundaki, funktsiyalar SQL ko'rsatmalaridagi har qanday boshqa
iboralar kabi ishlatilishi mumkin va saqlangan protseduralar CALL buyrug'i
yordamida chaqirilishi kerak.
10.2. Saqlanadigan protseduralarning afzalligi nimada?
Saqlanadigan protseduralar tez ishlaydi. MySQL serverining afzalligi
shundaki, u keshlashdan ham, oldindan belgilangan operatorlardan ham foydalanadi.
Tezlikning asosiy ortishi tarmoq trafigini pasaytirishdan kelib chiqadi. Bir nechta
qayta ishlashni talab qiladigan va bir vaqtning o'zida foydalanuvchining o'zaro
ta'sirini talab etmaydigan takroriy vazifalar mavjud bo'lsa, bu serverda saqlanadigan
protseduraga bitta murojaat bilan amalga oshirilishi mumkin;
MySQLda saqlanadigan protseduralar umumiydir. SQLda saqlanadigan
protseduralarni yozishda u MySQLdan foydalanadigan har qanday platformada
ishlaydi. Bu SQLning Java, C yoki PHP kabi boshqa tillarga nisbatan ustunligi;
Saqlanadigan protseduralar uchun kod har doim ma'lumotlar bazasida
mavjud. Bu ma'lumotni uni qayta ishlaydigan jarayonlar bilan bog'lash uchun yaxshi
amaliyotdir.
10.3. CREATE PROCEDURE protseduralarni yaratish operatori
Odatda, protsedura hozirda ishlatiladigan ma'lumotlar bazasi bilan bog'liq.
Protsedurani ma'lum bir ma'lumotlar bazasi bilan bog'lash uchun, saqlanadigan
protsedurani
yaratishda
uni
belgilang:
ma’lumotlar_bazasi_nomi.saqlanadigan_protsedura_nomi.
To'liq sintaksis:
CREATE [DEFINER = { user | CURRENT_USER }]
PROCEDURE protsedura_nomi ([protsedura_parametrlari[,...]])
[characteristic ...] qism_dastur
protsedura_parametrlari: [ IN | OUT | INOUT ] parameter_nomi
TYPE;
Bu еrda type MySQL mavjud har qanday ma'lumot tipi. xususiyatlari: COMMENT
'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA
| MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
qism_dastur: SQL dasturi operatori
Protsedura parametrlari nima? Aslida, bu funktsiyalar parametrlari, dasturlash
tillaridagi protseduralar bilan bir xil. Parametrlar quyidagi turlarga bo'linadi:
 IN parametrlari. Kiruvchi. Buni biz SQL so'rovi bilan birga
yuboramiz. Ushbu parametrlar protseduraga kiradi, protsedura ularni
bajarish paytida ularni qayta ishlaydi.
 OUT parametrlari. Chiqish. Bu qandaydir natija. Protsedura ishladi va
OUT parametrlari orqali biz o'z natijamizni olishimiz mumkin.
 INOUT parametrlari. Bir vaqtning o'zida kirish va chiqish. Ular IN
yoki OUT sifatida ishlatilishi yoki bir vaqtning o'zida, masalan,
hisoblagich yaratishda ishlatilishi mumkin.
Murojaat qilish. Protsedurani yaratish. CALL buyrug'i ma'lumotlar bazasida
saqlanadigan protsedurani chaqirish uchun ishlatiladi. Sintaksis quyidagicha:
• CALL protsedura_nomi([parametr[,...]]) CALL protsedura_nomi [()]
MySQL
Hech
qanday
parametrga
ega
bo'lmagan
saqlanadigan
protseduralarni qavslarsiz chaqirish mumkin.
• Shuning uchun CALL job_data() bilan CALL job_data teng.
• SHOW CREATE PROCEDURE
Ushbu operator MySQL kengaytmasi. Belgilangan saqlash tartibini qayta
tiklash uchun ishlatilishi mumkin bo'lgan aniq satrni qaytaradi. Sintaksis
quyidagicha:
• SHOW CREATE PROCEDURE protsedura_nomi
10.4. characteristic xarakteristikalar bloki
CREATE PROCEDURE operatorining sintaksisida siz protseduraning
xususiyatlarini tavsiflovchi bloklardan foydalanishingiz mumkin. Bloklar
qavslardan keyin paydo bo'ladi, ammo protsedura tanasidan oldin. Ushbu bloklar
ixtiyoriydir.

CHARACTERISTIC:

COMMENT 'string'

| LANGUAGE SQL

| [NOT] DETERMINISTIC

| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL
DATA }

| SQL SECURITY { DEFINER | INVOKER }

COMMENT xususiyati MySQL kengaytmasi. Saqlanadigan protsedurani
tasvirlash uchun foydalaniladi va ushbu ma'lumot SHOW CREATE
PROCEDURE operatori yordamida ko'rsatiladi.

LANGUAGE tavsifi protseduraning asosiy qismi SQL-da yozilganligini
anglatadi.

NOT DETERMINISTIC. Bu ma'lumot beruvchi xususiyat. Agar protsedura
har doim bir xil kirish parametrlari uchun bir xil natijani beradigan bo'lsa,
"deterministik" deb hisoblanadi, aks holda "aniqlanmaydigan" bo'ladi.

CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA
CONTAINS SQL MySQL saqlanadigan protsedurada ma'lumotlarni o'qiydigan
yoki yozadigan hech qanday ko'rsatma mavjud emasligini anglatadi. Masalan, SET
@x = 1 yoki DO RELEASE_LOCK ('abc') buyruqlari bajariladi, lekin ular
ma'lumotlarni o'qimaydi va yozmaydi. Agar xarakteristikada boshqacha
ko'rsatilmagan bo'lsa, bu odatiy hisoblanadi.

NO SQL protsedura SQL operatorlarini o'z ichiga olmaydi.

READS SQL DATA - protsedura ma'lumotlarni o'qiydigan parametrlarini
o'z ichiga oladi (masalan, SELECT), ammo ma'lumotlarni yozadigan
ko'rsatmalar mavjud emas.

MODIFIES SQL DATA - bu ma'lumotlarni yozishi mumkin bo'lgan
iboralarni o'z ichiga oladi (masalan, INSERT yoki DELETE).

SQL SECURITY {DEFINER | INVOKER}
SQL SECURITY qiymati SQL SECURITY DEFINER yoki SQL
SECURITY INVOKER sifatida belgilanishi mumkin. Bu belgilangan usul
DEFINER-bandida ko'rsatilgan qayd yozuvining imtiyozlari yoki MySQL-da
saqlangan protsedurani chaqiradigan foydalanuvchining hisobi imtiyozlaridan
foydalangan holda bajarilishini belgilaydi. Ushbu hisob qaydnomasi muntazam
ravishda bog'langan ma'lumotlar bazasiga kirish huquqiga ega bo'lishi kerak. Odatiy
qiymat - DEFINER. Agar protsedura DEFINER xavfsizlik kontekstida bajarilgan
bo'lsa, protsedurani bajaradigan foydalanuvchi EXECUTE imtiyoziga ega bo'lishi
kerak.
Barcha sanab o'tilgan xususiyatlar bloklari standart qiymatlarga ega. Quyidagi
ikkita operator bir xil natijani beradi:

mysql> CREATE PROCEDURE job_data()
-> SELECT * FROM JOBS; $$
Query OK, 0 rows affected (0.00 sec)
Quyidagi bilan bir hil:
 mysql> CREATE PROCEDURE new_job_data()
 ->COMMENT ''
 ->LANGUAGE SQL
 ->NOT DETERMINISTIC
 ->CONTAINS SQL
 ->SQL SECURITY DEFINER
 ->SELECT * FROM JOBS;
 $$
 Query OK, 0 rows affected (0.26 sec)
10.5. MySQL: Murakkab operatorlar
Murakkab operator - bu boshqa bloklarni o'z ichiga olgan blok: o'zgaruvchan
deklaratsiyalar, holat va kursorni qayta ishlash moslamalari, oqimlarni boshqarish
konstruktsiyalari, sikllar va shartli testlar. MySQL 5.6 holatiga ko'ra quyidagi
tarkibiy tuzilmalar mavjud:
• BEGIN … END murakkab operatori;
• Operatorlar belgilanishi;
• DECLARE;
• Saqlangan dasturlardagi o'zgaruvchilar;
• Ma'lumot oqimini boshqarish operatorlari;
• Kursorlar;
• Shartlarni qayta ishlovchilar.
CREATE PROCEDURE operatorining parametrlari bilan bog'liq dastlabki to'rtta
operatorlarni ko'rib chiqamiz.
10.6. BEGIN ... END murakkab operatori sintaksisi
Bu operator ichiga bir nechta operatorlarni joylashtirish kerak bo'lganda
ishlatiladi (masalan, MySQL-da saqlanadigan protsedura, funktsiya, trigger yoki
voqea). Sintaksis quyidagicha:
• [belgi_boshi:] BEGIN
• [operatorlar_ ro'yxati]
• END [belgi_oxiri])
Operatorlar ro’yhati: nuqta-vergul bilan (yoki) tugatilgan bir yoki bir nechta
iboralar. Operatorlar ro'yxatining o'zi ixtiyoriy, shuning uchun bo'sh BEGIN END
ko'rsatmasi haqiqiydir.
10.7. Operatorlar belgisi
Belgilar bu BEGIN ... END bloklari va REPEAT va WHILE tsikllari uchun
bajarishga ruxsatdir. Sintaksis quyidagicha:
• [boshlash_belgisi:] BEGIN
•
[operatorlar_royxati]
• END [tugash_belgisi]
• [boshlash_belgisi:] LOOP
• operatorlar_royxati
• END LOOP [tugash_belgisi]
• [boshlash_belgisi:] REPEAT
• operatorlar_royxati
• UNTIL search_condition
• END REPEAT [tugash_belgisi]
• [boshlash_belgisi:] WHILE условие_поиска
• DO operatorlar_royxati
END WHILE [tugash_belgisi]
10.8. DECLARE bayonoti
Saqlanadigan protsedurani yaratishda MySQLdagi turli xil lokal elementlarni
aniqlash uchun ishlatiladi. Masalan, lokal o'zgaruvchilar, shartlar, ishlov
beruvchilar , kursorlar. DECLARE faqat BEGIN ... END operatori ichida
ishlatiladi va boshqa barcha operatorlardan oldin joylashadi.
E’lon qilishlar uchun quyidagi qoidalar qo'llaniladi:
• Kursor deklaratsiyalari ishlov beruvchilar deklaratsiyalari oldiga qo'yilishi
kerak;
• Argumentlar va shartlar kursor yoki ishlov beruvchilar, deklaratsiyalar
oldin joylashtirilgan bo'lishi lozim.
Saqlanadigan dasturlardagi o'zgaruvchilar. Saqlanadigan dasturlar lokal
o’zgaruvchilarni aniqlash uchun DECLARE operatoridan foydalanadi.
Protseduralar va funktsiyalar, e'lon qilinganida, uni chaqirayotgan agent va qism
dastur bilan qiymatlar almashadigan parametrlarni qabul qilishi mumkin.
O’zgaruvchini e’lon qilish:
• DECLARE o'zgaruvchi_nomi [, o'zgartiruvchi_nomi] ... type [DEFAULT
qiymati]
O'zgaruvchiga standart qiymatni berish uchun DEFAULT bloki ishlatiladi.
Qiymatni ifoda sifatida ko'rsatish mumkin; bu konstanta bo'lishi shart emas.
Agar DEFAULT bloki bo'lmasa, boshlang'ich qiymat NULL ga teng.
Misol - lokal o'zgaruvchilar. Lokal o'zgaruvchilar MySQL saqlanadigan
protseduralari ichida e'lon qilinadi. Ular faqat END ... BEGIN blokida
ishlatiladi. Lokal o'zgaruvchilar har qanday SQL ma'lumot turiga ega bo'lishi
mumkin. Quyidagi misol saqlanadigan protsedurada lokal o'zgaruvchilardan
foydalanishni namoyish etadi:
DELIMITER $ $
CREATE PROCEDURE my_procedure_Local_Variables ()
BEGIN /* lokal o'zgaruvchilar deklaratsiyasi */
DECLARE a INT DEFAULT 10;
o'zgaruvchini ishlatish */
SET a = a + 100; SET b = 2;
o’zgaruvchi ichma ich blokda */
DECLARE b, c INT;
/* lokal
SET c = a + b ; BEGIN /* local
DECLARE c INT ;
SET c = 5; /* lokal o'zgaruvchi
yopiq blokda e'lon qilingan xuddi shu nomdagi o'zgaruvchiga nisbatan
ustunlikka ega. */
SELECT a, b, c; END; SELECT a, b, c;
END $$
Protsedurani bajaring:
• mysql> CALL my_procedure_Local_Variables();
• +------+------+------+
• |a
|b
|c |
• +------+------+------+
• | 110 | 2 | 5 |
• +------+------+------+
• 1 row in set (0.00 sec)
• +------+------+------+
• |a
|b
|c
|
• +------+------+------+
• | 110 | 2 | 112 |
• +------+------+------+
• 1 row in set (0.01 sec)
• Query OK, 0 rows affected (0.03 sec)
Masalan:
foydalanuvchi
o'zgaruvchilari.
MySQLda
saqlanadigan
protseduralarda foydalanuvchi o'zgaruvchisiga foydalanuvchi o'zgaruvchisi oldidagi
(masalan, @x va @y) ampersand (@) belgisi yordamida kirish mumkin. Quyidagi
misol saqlanadigan protsedura ichida maxsus o'zgaruvchilardan foydalanishni
namoyish etadi:
• DELIMITER $$
• CREATE PROCEDURE my_procedure_User_Variables()
• BEGIN SET @x = 15;
SET @y = 10;
• SELECT @x, @y, @x-@y;
• END$$
Protsedurani bajarilishi:
mysql> CALL my_procedure_User_Variables() ;
+------+------+-------+
| @x | @y | @x-@y |
+------+------+-------+
| 15 | 10 |
5 |
+------+------+-------+
1 row in set (0.04 sec)
Query OK, 0 rows affected (0.05 sec)
Parametrlar uchun CREATE PROCEDURE sintaksisi quyidagicha:
• CREATE [DEFINER = { foydalanuvchi | CURRENT_USER }]
PROCEDURE
protsedura_nomi
([protsedura_parametri[,...]])
[xarakteristikalar ...] qism_dastur_tanasi
• protsedura_parametrlari: [ IN | OUT | INOUT ] protsedura_nomi type
Sintaksis variantlari:
• CREATE PROCEDURE protsedura_nomi () …
• CREATE
PROCEDURE
protsedura_nomi
([IN]
protsedura_nomi
type)…
• CREATE PROCEDURE protsedura_nomi ([OUT] parametr_nomi
type)…
• CREATE PROCEDURE protsedura_nomi ([INOUT] parametr_nomi
type)…
Birinchi misolda parametrlar ro'yxati bo'sh.
Ikkinchi misolda IN parametri protseduraga qiymatni uzatadi. Ushbu
protsedura qiymatni o'zgartirishi mumkin. Ammo protsedura qiymatni qaytarganda,
u murojaat qiluvchiga ko'rinmaydi.
Uchinchi misolda OUT parametri protseduradan murojaat qiluvchiga
qaytariladi. Uning protseduradagi boshlang'ich qiymati NULL bo'ladi va
protsedura qaytib kelganda, u murojaat qiluvchiga ko'rinadi.
To'rtinchi misolda, INOUT parametri chaqiruvchi tomonidan o'rnatiladi, uni
protsedura o'zgartirishi mumkin va protsedura qaytib kelganda, MySQLda
saqlangan protseduralar tomonidan qilingan har qanday o'zgarishlar murojaat
qiluvchiga ko'rinadi.
Protsedurada har bir parametr IN parametr uchun birlamchi bo'ladi. Buni
o'zgartirish uchun parameter nomidan oldin OUT yoki INOUT kalit so'zidan
foydalaning.
IN parametriga misol. Quyidagi protsedura IN paraemtridan foydalanadi
"var1" (turi butun), foydalanuvchidan raqam oladi. Protseduraning asosiy
qismida "jobs" jadvalidan satrlarni tanlaydigan SELECT operatori mavjud.
Qatorlarning soni foydalanuvchi tomonidan belgilanadi. Quyida protsedura
keltiriladi:
• mysql> CREATE PROCEDURE my_proc_IN (IN var1 INT)
•
-> BEGIN
• -> SELECT * FROM jobs LIMIT var1;
•
-> END$$
• Query OK, 0 rows affected (0.00 sec)
"jobs" jadvalidan birinchi ikkita qatorni tanlash uchun quyidagi buyruq bajariladi:
• mysql> CALL my_proc_in(2)$$
•
«jobs» jadvalining birinchi 5 satri:
• mysql> CALL my_proc_in(5)$$
OUT parametriga misol. OUT parametridan foydalanadigan MySQL
protseduraga misol quyidagi MySQL protsedurasining bir qismi sifatida, MAX()
funktsiyasi “jobs” jadvalining MAX_SALARY ustunidan maksimal maoshni
oladi:
• mysql> CREATE PROCEDURE my_proc_OUT (OUT highest_salary INT)
• -> BEGIN
• -> SELECT MAX(MAX_SALARY) INTO highest_salary FROM JOBS;
• -> END$$
• Query OK, 0 rows affected (0.00 sec)
Jarayon tanasida parametr MAX_SALARY ustunidan eng yuqori ish haqini
oladi. Protsedurani chaqirgandan so'ng OUT so'zi MBBTga protseduradan kelib
chiqadigan qiymatni xabar qiladi highest_salary - bu chiqish parametrining nomi
va CALL operatorida biz uning qiymatini @M nomli seans o'zgaruvchisiga
o'tkazdik:
• mysql> CALL my_proc_OUT(@M)$$
Query OK, 1 row affected (0.03 sec)
mysql> SELECT @M$$
+-------+
| @M |
+-------+
| 40000 |
+-------+
1 row in set (0.00 sec)
INOUT parametriga misol. Quyidagi misolda INOUT va IN
parametrlaridan foydalanadigan MySQL saqlanadigan protsedurasi ko'rsatilgan.
Foydalanuvchi “M” yoki “F” orqali IN parametrga (emp_gender) user_details
jadvalidagi erkak yoki ayol xodimlari sonini hisoblaydi. INOUT (mfgender)
parametri natijani foydalanuvchiga qaytaradi. Bu еrda protsedura kodi va natijasi:
• mysql> CREATE PROCEDURE my_proc_INOUT (INOUT mfgender INT,
IN emp_gender CHAR(1))
• -> BEGIN
• -> SELECT COUNT(gender) INTO mfgender FROM user_details WHERE
gender = emp_gender;
• -> END$$
• Query OK, 0 rows affected (0.00 sec)
Belgilangan jadvalda biz ayollar va erkaklar sonini tekshiramiz:
• mysql> CALL my_proc_INOUT(@C,'M')$$
• Query OK, 1 row affected (0.02 sec)
• mysql> SELECT @C$$
+------+
| @C |
+------+
| 3|
+------+
1 row in set (0.00 sec)
mysql> CALL my_proc_INOUT(@C,'F')$$
Query OK, 1 row affected (0.00 sec)
mysql> SELECT @C$$
+------+
| @C |
+------+
| 1|
+------+
1 row in set (0.00 sec)
Nazorat savollari
1. SQLda saqlanadigan protsedura. Ikki turdagi SQL qism dasturi.
2. Saqlanadigan protseduralarning afzalligi nimada?
3. CREATE PROCEDURE protsedurasini yarating. Sintaksis.
4. SQLda saqlanadigan protsedura parametrlari.
5. SQL characteristic saqlanadigan protseduralar bloklari.
6. SQLning saqlanadigan protseduralari murakkab operatorlari.
7. Saqlanadigan SQL dasturlaridagi o'zgaruvchilar. DECLARE operatori.
8. Saqlanadigan dasturlardagi o'zgaruvchilar. IN, OUT , INOUT parametrlari.
11. Tranzaktsiyalarni boshqarish. So'rovlarni yaratish va qayta
ishlash.
11.1. Tranzaktsiya tushunchasi
Tranzaktsiya - bu ma'lumotlar bazasida amalga oshiriladigan, butun bo'lib
bajariladigan va ma'lumotlar bazasini bir izchil holatdan ikkinchisiga boshqa holatga
o'tkazish operatsiyalarining ketma-ketligi.
Tranzaktsiyaga kiritilgan operatsiyalar soni birdan yuzlab, minglab bo'lishi
mumkin.
Dasturchi qaysi buyruqlar bitta operatsiya sifatida bajarilishini va qaysi
ketma-ketlikdagi tranzaktsiyalarga bo'lishini hal qiladi.
Tranzaktsiyani amalga oshirayotganda, ma'lumotlar bazasi ma'lumotlar
bazasi tizimning to'g'ri va ishonchli ishlashini ta'minlash uchun tranzaktsiyaga
kiritilgan buyruqlar to'plamini qayta ishlashni ta'minlashi kerak.
Tranzaktsiya ACID talablariga javob berishi kerak .
11.2. ACID - talablar
ACID - talablar tizimining to'g'riligini va ishonchliligini kafolatlaydi va
tranzaktsiyalarni qayta ishlashning asosiy xususiyatidir
 Atomic (atomarlik) - Tranzaktsiya qisman bajarilmaydi, to'liq
bajariladi yoki umuman amalga oshirilmaydi
 Consistency (muvofiqlik) - Tranzaktsiyadan keyin barcha
ma'lumotlar izchil holatda bo'lishi kerak)
 Isolation (izolyatsiya) - Tranzaktsiya avtonom bo'lishi kerak va
boshqa tranzaktsiyalarga ta'sir qilishi yoki ularga bog’liq bo’lishi
kerak.
 Durability (barqarorlik) - Tranzaktsiya tugagandan so'ng,
o'zgarishlar o'zgarishsiz qoladi .
Tranzaktsiyalarni tugatish variantlari . Tranzaktsiyani tugatishning 2 varianti:
muvaffaqiyatli
barcha operatsiyalar
bajarildi
muvaffaqiyatsiz
Tranzaktsiyani qaytarish – bu
operatsiyani bajarish paytida
kiritilgan ma'lumotlar bazasidagi
barcha o'zgartirishlarning bekor
qilinishini ta'minlaydigan harakatlar
Tranzaktsiyani mustahkamlash
– bu operatsiyani bajarish paytida
qilingan ma'lumotlar bazasidagi
o'zgarishlar diskda saqlanishini
ta'minlaydigan harakatlar
Bloklashlar. Kichik tranzaktsiyalardan foydalanish samaradorligining oshishi,
operatsiya tugagandan so'ng, server ma'lumotlarga bloklash kiritishi bilan bog’liq.
 Bloklash - bu ma'lum bir ma'lumotlarni qayta ishlash operatsiyalarini
vaqtincha cheklash. Blokash jadvalning bitta qatoriga ham, butun
ma'lumotlar bazasiga ham qo'llash mumkin.
 Bloklashlarni boshqarish serverda bloklash menejeri tomonidan
boshqariladi, u ularni qo'llash va konfliktlarni hal qilishni boshqaradi.
Tranzaktsiyalar va bloklashlar bir-biri bilan chambarchas bog'liq.
Tranzaktsiyalar
ACID
talablari
bajarilishini
ta'minlash
uchun
ma'lumotlar bloklanadi. Bloklashlardan foydalanmasdan, bir nechta
operatsiyalar bir xil ma'lumotlarni o'zgartirishi mumkin.
Bloklash - bu ketma-ket jarayonlarni boshqarish usuli bo'lib, unda ma'lumotlar
bazasi ob'ekti operatsiyadan xabarsiz o'zgartirilishi mumkin emas, ya'ni. ob'ektga
boshqa operatsiyalar tomondan kirish blokirovka qilinadi, bu esa ob'ektga oldindan
aytib bo'lmaydigan o'zgarishlarni istisno qiladi. Bloklashning ikki turi mavjud:

Yozuvni blokirovka qilish - tranzaktsiyalar satrlarni jadvallarga shunday
joylashtiradiki, bunda boshqa tranzaktsiyalarning ushbu satrlarga bo'lgan
so'rovi bekor qilinadi.

o'qish blokirovkasi - tranzaktsiyalar satrlarni blokirovka qiladi, shunda
ushbu yozuvlarni blokirovka qilish bo'yicha boshqa tranzaktsiyaning
so'rovi rad qilinadi, o'qishni blokirovkasi esa qabul qilinadi.
MBBT parallelizmni oldini olish uchun ma'lumotlarga ruhsat protokolidan
foydalanadi. Uning mohiyati quyidagicha:

jadvalda ma'lumotlar satrida bajarilgan natija, uni qidirish natijasi
bo'lgan tranzaktsiya ushbu satrda o'qilgan blokga ega bo'lishi kerak;

ma'lumotlar satrini o'zgartirishga mo'ljallangan operatsiya yozuv
blokirovkasini qo'yadi;

agar mavjud blokirovka tufayli qatorda talab qilingan bloklash rad
qilinsa, u holda blokirovka qo'yilguncha tranzaktsiya kutish rejimiga
o'tkaziladi;

yozish blokirovkasi tranzaktsiya oxirigacha saqlanib qoladi.

Ma'lumotlar bazasini parallel ravishda qayta ishlash muammosining
еchimi shundaki, jadval satrlari bloklangan va ushbu qatorlarni
o'zgartiruvchi keyingi operatsiyalar rad etilib, kutish holatiga o'tkaziladi.
Ma'lumotlar bazasining yaxlitligini saqlab qolish xususiyati tufayli
tranzaktsiyalar
foydalanuvchilarni
xavfsiz
holatga
keltiradigan
birliklardir. Darhaqiqat, agar ma'lumotlar bazasi bilan o'zaro ishlashning
har bir seansi tranzaktsiya orqali amalga oshirilsa, foydalanuvchi
ma'lumotlar bazasining izchil holatiga - foydalanuvchi o'zi bilan
ishlayotgan bo'lsa ham, bo'lishi mumkin bo'lgan holatga murojaat
qilishdan boshlanadi.
11.3. Tranzaktsiyalarni bajarishda muammolar
Agar blokirovka mexanizmlari ma'lumotlar bazasini boshqarish tizimida
amalga oshirilmasa, bir vaqtning o'zida bir nechta foydalanuvchi bir xil ma'lumotni
o'qiydi va o'zgartiradi, kirishda quyidagi parallel muammolar paydo bo'lishi
mumkin:
 oxirgi o'zgartirish (lost update) muammosi bir nechta foydalanuvchi bitta
satrni dastlabki qiymatiga qarab o'zgartirganda paydo bo'ladi; keyin
ma'lumotlarning bir qismi yo'qoladi, chunki har bir keyingi operatsiya
avvalgisiga kiritilgan o'zgarishlarning ustiga yoziladi. Ushbu vaziyatdan
chiqish yo'li - izchil o'zgarishlar kiritish;
 «iflos» o'qish (dirty read) muammosi, agar foydalanuvchi mantiqiy to'g'ri
holatga ega bo'lishidan oldin ma'lumotlarni ko'p marta o'zgartirishni talab
qiladigan ma'lumotlarni qayta ishlash bo'yicha murakkab operatsiyalarni
bajarsa. Agar ma'lumotni o'zgartirayotganda boshqa foydalanuvchi ularni
o'qisa, u mantiqiy noto'g'ri ma'lumotni olishi mumkin. Bunday
muammolarni oldini olish uchun barcha o'zgarishlar tugagandan so'ng
ma'lumotlarni o'qish kerak;
 takrorlanmaydigan
o'qish
muammosi
(non-repeatable
read)
-
tranzaktsiyalar bo'yicha bir xil ma'lumotlarni qayta-qayta o'qish natijasida.
Birinchi operatsiyani bajarish paytida, boshqasi ushbu ma'lumotlarga
o'zgartirishlar kiritishi mumkin, shuning uchun qayta ko'rib chiqishda
birinchi operatsiya turli xil ma'lumotlar to'plamini oladi, bu ularning
yaxlitligini yoki mantiqiy nomuvofiqligini buzilishiga olib keladi;
 fantomlarni o'qish bilan bog'liq muammolar (phantom reads) bitta
operatsiya jadvaldan ma'lumotlarni olgandan so'ng paydo bo'ladi, boshqasi
birinchi tugashidan oldin satrlarni qo'shadi yoki o'chiradi. Jadvaldan
tanlangan qiymatlar noto'g'ri bo'ladi.
Yuqoridagi muammolarni hal qilish uchun maxsus ishlab chiqilgan standart
to'rtta blokirovka darajasini belgilaydi. Tranzaktsiyalarni izolyatsiya qilish darajasi
boshqa (parallel) tranzaktsiyalar joriy tranzaktsiya tomonidan o'zgartirilgan
ma'lumotlarga o'zgartirishlar kiritishi mumkinligini va joriy tranzaktsiyalar parallel
ravishda amalga oshirilgan o'zgarishlarni ko'ra oladimi yoki aksincha. Har bir
keyingi daraja avvalgisining talablarini qo'llab-quvvatlaydi va qo'shimcha
cheklovlarni qo'yadi: ketma-ket, takroriy o'qiladigan, o'qishga topshirilgan,
o'qilmagan.
Har bir keyingi daraja avvalgisining talablarini qo'llab-quvvatlaydi va
qo'shimcha cheklovlarni qo'yadi:
 0-bosqich - ma'lumotlar "ifloslanishi" ni taqiqlaydi. Ushbu daraja faqat
bitta tranzaktsiya ma'lumotni o'zgartirishi kerakligini talab qiladi; agar
boshqa operatsiya xuddi shu ma'lumotni o'zgartirishi kerak bo'lsa, u
birinchi tranzaktsiyaning tugashini kutishi kerak;
 1-bosqich - "iflos" o'qishni taqiqlash. Agar tranzaktsiya ma'lumotni
o'zgartira boshlasa, birinchi tugallanguniga qadar boshqa hech qanday
operatsiya uni o'qiy olmaydi;
 2-bosqich - qaytarib bo'lmaydigan o'qishni taqiqlash. Agar tranzaktsiya
ma'lumotni o'qisa, uni boshqa hech qanday operatsiya o'zgartira olmaydi.
Shunday qilib, qayta o'qiyotganda, ular asl holatida bo'ladi;
 3-bosqich - fantomlarning man etilishi. Agar tranzaktsiya ma'lumotlarga
murojaat qilsa, unda boshqa hech qanday operatsiya tranzaktsiya
davomida o'qilishi mumkin bo'lgan yangi satrlarni qo'sholmaydi yoki
o'chirolmaydi. Ushbu qulflash darajasi kalitlarni bloklash yordamida
amalga oshiriladi. Bunday blok jadvalning ma'lum qatorlariga emas, balki
ma'lum bir mantiqiy shartni qanoatlantiradigan qatorlarga o'rnatiladi.
Tranzaksiyani izolyatsiya qilish darajalari
 Serializable – boshqa tranzaksiya ishlatayotgan ma'lumotlarga
murojaat qila olmaysiz.
 Repeatable Read – yangilangan yoki o'chirilgan ma'lumotlarga
murojaat qila olmaysiz, ammo qo'shilgan ma'lumotlarga murojaat
qilishingiz mumkin.
 Read Committed – olingan ma'lumotlarga kirishingiz mumkin.
 Read Uncommitted – har qanday yangilangan va saqlanmagan
ma'lumotlarga murojaat qilishingiz mumkin.
 Snapshot – har bir operatsiya ma'lumotlarning o'z versiyasi bilan
ishlaydi.
SET TRANSACTION ISOLATION LEVEL
{ READ UNCOMMITTED | READ COMMITTED |
REPEATABLE READ | SNAPSHOT | SERIALIZABLE }
Izolyatsiya darajasi
Lost updateyo’qolgan
o’zgarish
Dirty read«Iflos» o’qish
Nonrepeatable
readtakrorlanmaydi
gan o’qish
Phantom readfantom o’qish
Serializable
Repeatable Read
Read Committed
Read Uncommitted
Snapshot
Rasm. Tranzaktsiyani izolyatsiya qilish darajasi va butunlik xatolari.
READ UNCOMMITTED
 O’qishga blokirovka o’rnatilmaydi
 Tranzaktsiyalar boshqa tranzaktsiyalar tomonidan o'zgartirilgan
satrlarni o'qishi mumkin, ammo saqlanmagan satrlarni emas. Bu sizga
saqlanmagan o’zgarishlarni o’qishga imkon beradi
 Ma'lumotlar tarkibidagi qiymatlar o'zgarishi mumkin va tranzaktsiya
tugashidan oldin ma'lumotlar bazasida satralar paydo bo'lishi va yo'q
bo'lib ketishi mumkin. Bu izolyatsiya darajasida eng kichik cheklov.
 Boshqa tranzaktsiyalar tomonidan o'zgartirilgan ma'lumotlarni o'qiy
olmaysiz, ammo hali amalga oshirilmagan - "iflos" ma'lumotlar.
 Mavjud tranzaktsiya ishlayotgan paytda o'qilgan ma'lumotlar boshqa
tranzaktsiya orqali o'zgartirilishi mumkin, natijada ma'lumotlar
takrorlanmaydi va o'qilmaydi.
 Bu rejim SQL Serverda odatiy tarzda o’rnatilgan
REPEATABLE READ
 O'zgartirilgan, ammo boshqa tranzaktsiyalar tomonidan amalga
oshirilmagan ma'lumotlarni o'qish mumkin emas.
 Umumiy bloklashlar barcha o'qilgan ma'lumotlarga qo'llaniladi va ular
tugatilgunga qadar saqlanadi. Bu boshqa tranzaktsiyalarni joriy
tranzaktsiya tomonidan o'qilgan satrlarni o'zgartirishga to'sqinlik
qiladi.
 Boshqa tranzaktsiyalar joriy tranzaktsiyani qidirish shartlariga mos
keladigan yangi satrlarni joylashtirishi mumkin. Diapazonni qayta
o'qiyotganda yangi "fantom" satrlari paydo bo'lishi mumkin.
SNAPSHOT
 Tranzaktsiya boshida ma'lumotlar bazasidan nusxa ko'chiradi. Joriy
tranzaktsiya boshlanganidan beri boshqa tranzaktsiyalar tomonidan
kiritilgan ma'lumotlar o'zgarishini ko'rmaydi.
 O'chirilgan tranzaktsiyalar bo'yicha ma'lumotlarni o'qish boshqa
operatsiyalarni yozishga to'sqinlik qilmaydi.
 Agar tranzaktsiya boshlanganidan keyin kimdir tomonidan
o'zgartirilgan ma'lumotlarni yozishga harakat qilsa, u to'xtatiladi.
 Momental surat izolatsiyasi darajasidan foydalangan holda
tranzaktsiyani boshlashdan oldin
ALLOW_SNAPSHOT_ISOLATION ma'lumotlar bazasi parametrini
ON holatiga qo'yish kerak.
 Momental tasvirni izolatsiyalash darajasida amalga oshirilgan
tranzaktsiyada qilingan o'zgarishlar ko'rib chiqilishi mumkin.
SERIALIZABLE
 Boshqa tranzaktsiyalar tomonidan o'zgartirilgan, ammo hali amalga
oshirilmagan ma'lumotlarni o'qiy olmaysiz.
 Boshqa tranzaktsiyalar joriy tranzaktsiya tomonidan o'qilgan
ma'lumotlarni o'zgartira olmaydi.
 Boshqa tranzaktsiyalar joriy tranzaktsiya tugagunga qadar o'qilgan
asosiy qiymatlari bo'lgan yangi qatorlar qo'sha olmaydi. Qayta
o'qishda bir xil satrlar to'plami bo'ladi.
 O'qish oralig'idagi blokirovkalar tranzaktsiya tugaguncha saqlanadi.
 Bir vaqtning o'zida mos kelmasligi sababli, ushbu parametr faqat
kerak bo'lganda tavsiya etiladi.
11.4 Tranzaktsiyalarni boshqarish
Tranzaktsiyalarni boshqarish relyatsion MBBT doirasida bajariladigan
ma'lumotlar bo'yicha turli xil operatsiyalarni boshqarish qobiliyatini anglatadi.
Avvalo, INSERT, UPDATE va DELETE operatorlarini bajarilishi nazarda
tutilyapti. Masalan, jadval yaratgandan so'ng (CREATE TABLE buyrug'ini
bajarish), natijani saqlash shart emas: jadvalni yaratish avtomatik ravishda
ma'lumotlar bazasiga o'tkaziladi. Shunga o'xshab, tranzaktsiyani bekor qilish
yordamida, DROP TABLE operatori bilan o'chirilgan jadvalni tiklab bo’lmaydi.
Bitta tranzaktsiyaning tarkibiga kiritilgan buyruqlar muvaffaqiyatli
bajarilgandan so'ng ma'lumotlar darhol o'zgarmaydi. Tranzaktsiyani yakunlash
uchun tranzaktsiyalarni boshqarish buyruqlari mavjud bo'lib, ularning yordamida siz
ularni bajarish paytida yuz bergan barcha o'zgarishlarni ma'lumotlar bazasida
saqlashingiz yoki ularni butunlay bekor qilishingiz mumkin.
Tranzaktsiyalarni boshqarish uchun ishlatiladigan uchta buyruq mavjud:

COMMIT – o'zgarishlarni saqlash uchun;

ROLLBACK – o'zgarishlarni bekor qilish;

SAVEPOINT – aniq qaytib kelish nuqtalarini o'rnatish.
Tranzaktsiyalarni aniqlashning turlari.

Aniq - Tranzaktsiyalarni boshlash va tugatish buyruqlarini aniq
ko'rsatish talab etiladi

Avtomatik - Har bir buyruq alohida tranzaktsiya sifatida ko'rib
chiqiladi;

Yashirin (nazarda tutilgan) - tranzaktsiya birinchi SQL operatoridan
boshlanadi va tranzaktsiya tugashining aniq ko'rsatmasi bilan tugaydi;
Tranzaktsiya va blokirovka qiladigan so'rovlar.
MySQL so'rovlar orqali tranzaktsiyalarni qo'llab-quvvatlaydi (berilgan klient
sessiyasi ichida):
• SET autocommit
• START TRANSACTION
• COMMIT
• ROLLBACK
Tranzaktsiyalarni boshqarish operatorlari.
SET autocommit. Odatda MySQL AUTOCOMMIT rejimida ishlaydi. Bu
shuni anglatadiki, agar siz aniq tranzaktsiyani amalga oshirmasangiz, har bir so'rov
avtomatik ravishda alohida tranzaktsiyada bajariladi. Siz konfiguratsion
o'zgaruvchiga quyidagi qiymatni o'rnatib, joriy ulanish uchun AUTOCOMMIT
rejimini yoqishingiz yoki o'chirib qo'yishingiz mumkin:
mysql> SHOW VARIABLES LIKE 'AUTOCOMMIT';
START TRANSACTION [transaction_characteristic [,
transaction_characteristic] ...]
transaction_characteristic: {
WITH CONSISTENT SNAPSHOT
| READ WRITE
| READ ONLY
}
BEGIN [WORK]
COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
SET autocommit = {0 | 1}
START TRANSACTION yoki BEGIN - quyidagilar uchun ishlatiladi:
Tranzaktsiya boshlanganligini saqlash. Qaysi obyektlar qo'lga
olinayotganligini (agar kerak bo'lsa) va ularni bloklash darajasini ko’rsatish
SAVEPOINT <NAME>
Tranzaktsiya qisman orqaga qaytarilganda mumkin bo'lgan qaytarish
nuqtasini belgilaydi.
SAVEPOINT saqlash_nuqtasi_nomi
RELEASE SAVEPOINT <NAME>
Muvaffaqiyatli yakunlangan qaytish nuqtasini o'chirish
COMMIT - quyidagilar uchun ishlatiladi:
 joriy tranzaktsiyada "doimiy" ravishda barcha o'zgarishlarni amalga
oshirish (aslida ma'lumot biroz keyinroq o'zgarishi mumkin).
 ushbu operatsiyani bajarish uchun barcha saqlash joylarini tozalash
 tranzaktsiyani yakunlash
 ushbu tranzaktsiya uchun barcha bloklarni bo'shatish
ROLLBACK - quyidagilar uchun ishlatiladi:
 tranzaktsiya boshlanishidan yoki ba'zi saqlash joyidan (SAVEPOINT)
qilingan barcha o'zgarishlarni bekor qilish.
 ushbu operatsiyani bajarish uchun barcha saqlash joylarini tozalash
 tranzaktsiyani yakunlash
 ushbu tranzaktsiya uchun barcha bloklarni bo'shatish
misollar:
BEGIN;
INSERT INTO table1 VALUES (1);
SAVEPOINT my_savepoint;
INSERT INTO table1 VALUES (2);
ROLLBACK TO SAVEPOINT my_savepoint;
INSERT INTO table1 VALUES (3);
COMMIT;
BEGIN;
INSERT INTO table1 VALUES (3);
SAVEPOINT my_savepoint;
INSERT INTO table1 VALUES (4);
RELEASE SAVEPOINT my_savepoint;
COMMIT;
START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summary=@A WHERE type=1;
COMMIT;
O’zaro bloklashlar
Ikki yoki undan ortiq tranzaktsiyalar o'zaro bir xil resurslarni ushlab turilib,
bir xil resurslarni bloklaganda aylanma qaramlik yuzaga keladi. Bunday holatlar,
shuningdek, tranzaktsiyalar resurslarni boshqa tartibda blokirovka qilishga
uringanda ham kuzatiladi. Ular bir nechta tranzaktsiyalar bitta manbani blokirovka
qilishganda yuz berishi mumkin. Misol sifatida, StockPrice jadvaliga kiradigan
ikkita operatsiyani ko'rib chiqamiz:
Tranzaktsiya №1
START TRANSACTION;
UPDATE StockPrice SET close = 45.50 WHERE stock_id = 4 and date = '200205-01';
UPDATE StockPrice SET close = 19.80 WHERE stock_id = 3 and date = '200205-02';
COMMIT;
Tranzaktsiya №2
START TRANSACTION;
UPDATE StockPrice SET high = 20.12 WHERE stock_id = 3 and date = '200205-02';
UPDATE StockPrice SET high = 47.20 WHERE stock_id = 4 and date = '200205-01';
COMMIT;
Agar omadingiz kelmasa, har bir operatsiya birinchi so'rovini bajaradi va
ma'lumotlar satrini yangilab, uni blokirovka qiladi. Keyin barcha operatsiyalar
ikkinchi qatorni yangilashga harakat qiladi, ammo u allaqachon bloklanganligini
topadi. Natijada, har bir tranzaktsiya blokni olib tashlaydigan tashqi aralashuv
bo'lmaguncha, boshqa tranzaktsiyaning bajarilishini kutadi.
Nazorat savollari
1. Tranzaktsiya nima. Tranzaktsiya tushunchalari.
2. ACID - tranzaktsiya talablari.
3. Bloklar. Bloklashning vazifalari. Bloklash turlari.
4. Tranzaktsiyalarni amalga oshirishdagi muammolar.
5. Tranzaktsiyalarni amalga oshirishda muammoni hal qilish.
Tranzaksiyani izolyatsiya qilish darajasi.
6. Tranzaksiyalarni boshqarish uchun SQL operatorlari.
7. Tranzaksiya nazorati bo'yicha SQL operatorlari: START
TRANSACTION va SAVEPOINT.
8. Tranzaktsiyalarni boshqarishning SQL operatorlari: COMMIT va
ROLLBACK.
9. Tranzaktsiyalarning o’zaro bloklanishi nima.
12. Maʼlumotlar bazasini administratorlash va xavfsizligini
taʼminlash.
Foydalanuvchi hisobini boshqarish.
Ma'lumotlar bazasi tizimlari rivojlanishi bilan MySQLni o'rnatish va undan
foydalanish tartiblari osonlashmoqda. Ko'rinishidan, bu MySQL bilan ishlashning
soddaligi, bu uning foydalanuvchilar orasida keng tarqalishining asosiy sababi
bo'ldi. Bu, ayniqsa, dasturchi bo’lmagan va bo'lishni istamaydiganlarga tegishli.
Kompyuter mutaxassisining bilimlari juda foydali bo'lishi mumkin, ammo
MySQLdan muvaffaqiyatli foydalanish uchun tajribali dasturchi bo'lish shart emas.
12.1. Xavfsizlik masalalari va MySQLga kirish
imtiyozlari tizimi
Imtiyozlar tizimi
MySQL imtiyozlar tizimi foydalanuvchilarga faqat ularga ruxsat berilgan
narsani bajarishni kafolatlaydi.
MySQL foydalanuvchini host nomi va foydalanuvchi nomi orqali
identifikatsiyalaydi.
12.2. GRANT va REVOKE komandalari sintaksisi
GRANT va REVOKE buyruqlari tizim administratoriga MySQL
foydalanuvchilari yaratishga va to'rtta imtiyoz darajasida foydalanuvchilarga
huquqlarni berishga yoki rad etishga imkon beradi:
Global daraja
Global imtiyozlar ko'rsatilgan serverdagi barcha ma'lumotlar bazalariga
qo'llaniladi. Ushbu imtiyozlar mysql.user jadvalida saqlanadi.
Ma'lumotlar bazasi darajasi
Ma'lumotlar bazasi imtiyozlari ko'rsatilgan ma'lumotlar bazasidagi barcha
jadvallarga qo'llaniladi. Ushbu imtiyozlar mysql.db va mysql.host jadvallarida
saqlanadi.
Jadval darajasi
Jadval imtiyozlari ko'rsatilgan jadvalning barcha ustunlariga qo'llaniladi.
Ushbu imtiyozlar mysql.tables_priv jadvalida saqlanadi.
Ustun darajasi
Ustun imtiyozlari ko'rsatilgan jadvaldagi alohida ustunlarga qo'llaniladi.
Ushbu imtiyozlar mysql.columns_priv jadvalida saqlanadi.
GRANT komandasi sintaksisi
GRANT
priv_type [(column_list)]
[,priv_type [(column_list)]] ...
ON [object_type] priv_level
TO user_or_role [, user_or_role] ...
[AS user
[WITH ROLE
DEFAULT
| NONE
| ALL
| ALL EXCEPT role [, role ] ...
| role [, role ] ...
]
]
}
GRANT PROXY ON user_or_role
TO user_or_role [, user_or_role] ...
[WITH GRANT OPTION]
GRANT role [, role] ...
TO user_or_role [, user_or_role] ...
[WITH ADMIN OPTION]
[WITH GRANT OPTION]
object_type: {
TABLE
| FUNCTION
| PROCEDURE
}
priv_level: {
*
| *.*
| db_name.*
| db_name.tbl_name
| tbl_name
| db_name.routine_name
}
user_or_role: { user | role }
GRANT priv_type [(column_list)] [,priv_type
[(column_list)]...]
ON {tbl_name | * | *.* | db_name.*}
TO user_name [IDENTIFIED BY 'password']
[, user_name ...]
[WITH GRANT OPTION]
REVOKE priv_type [(column_list)] [,priv_type
[(column_list)]...]
ON {tbl_name | * | *.* | db_name.*}
FROM user_name [, user_name ...]
Agar imtiyozlar mavjud bo'lmagan foydalanuvchiga berilsa, u holda foydalanuvchi
yaratiladi.
Priv_type parametri uchun mumkin bo'lgan qiymatlar ro'yxati:
ALL [PRIVILEGES]
GRANT OPTIONdan tashqari barcha oddiy imtiyozlarni belgilaydi
ALTER
ALTER TABLEdan foydalanishga ruxsat beradi
CREATE
CREATE TABLEdan foydalanishga ruxsat beradi
CREATE TEMPORARY TABLES
CREATE TEMPORARY TABLEdan foydalanishga ruxsat beradi
DELETE
DELETEga ruxsat beradi
DROP
DROP TABLEdan foydalanishga ruxsat beradi
EXECUTE
Foydalanuvchiga saqlanadigan protseduralarni ishga tushirishga ruxsat
beradi (MySQL 5.0 uchun)
FILE
SELECT ... INTO OUTFILE va LOAD DATA INFILE dan foydalanishga ruxsat
beradi
INDEX
CREATE INDEX va DROP INDEX dan foydalanishga ruxsat beradi
INSERT
INSERT dan foydalanishga ruxsat beradi
LOCK TABLES
SELECT imtiyozlari bor jadvallarda LOCK TABLES dan foydalanishga ruxsat
beradi
PROCESS
SHOW FULL PROCESSLIST dan foydalanishga ruxsat beradi
REFERENCES
Keyinchalik foydalanish uchun zahiralangan
RELOAD
FLUSH dan foydalanishga ruxsat beradi
REPLICATION CLIENT
Foydalanuvchiga asosiy va boshqariladigan serverlarning manzilini so'rash
huquqini beradi
REPLICATION SLAVE
Replikatsiya paytida boshqariladigan serverlar uchun talab qilinadi (bosh
serverning binar jurnallaridan ma'lumotlarni o'qish uchun)
SELECT
SELECT dan foydalanishga ruxsat beradi
SHOW DATABASES
SHOW DATABASES barcha ma’lumotlar bazalarini chiqaradi
SHUTDOWN
mysqladmin shutdown dan foydalanishga ruxsat beradi
SUPER
Agar maksimal_connections qiymatiga erishilgan bo'lsa ham, bitta ulanishni
o'rnatishga va CHANGE MASTER, KILL thread, mysqladmin debug, PURGE
MASTER LOGS va SET GLOBAL buyruqlarini bajarishga imkon beradi.
UPDATE
UPDATE dan foydalanishga ruxsat beradi
USAGE
«Imtiyozsiz»sinonimi
GRANT OPTION
WITH GRANT OPTION sinonimi
Jadval uchun faqat quyidagi priv_type qiymatlarini ko'rsatish mumkin:
SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT OPTION,
INDEX va ALTER.
Ustun uchun faqat quyidagi priv_type qiymatlari (column_list operatoridan
foydalanganda) belgilanishi mumkin: SELECT, INSERT va UPDATE.
Global imtiyozlar ON *. * sintaksisi va ma'lumotlar bazasi imtiyozlari
yordamida ON db_name yordamida o'rnatilishi mumkin.
Agar siz joriy ma'lumotlar bazasi ochilganda ON * ni belgilasangiz, u holda
ushbu ma'lumotlar bazasi uchun imtiyozlar belgilanadi. (Diqqat: joriy ma'lumotlar
bazasi ochilmaganda ON * ni belgilash global imtiyozlarga ta'sir qiladi)
Eslatma. GRANT operatorida ma'lumotlar bazasi nomini belgilashda '%'
shablon belgilaridan foydalanish mumkin emas.
Foydalanuvchi nomi (user_name) user @ host shaklida ko'rsatilishi mumkin.
Maxsus belgilar (masalan, '-') yoki satr xostini o'z ichiga olgan satrli foydalanuvchini
(masalan, '%') o'z ichiga olgan simli foydalanuvchini ko'rsatishingiz kerak bo'lsa,
masalan, masofaviy kompyuter yoki foydalanuvchi nomini qo'shtirnoq ichiga
qo'shish kerak (masalan, '). test-foydalanuvchi '@' test-xost nomi ').
Bundan tashqari, masofadan turib kompyuter nomidan guruh belgilaridan
foydalanishingiz mumkin. Masalan, user@'%.loc.gge 'loc.gre domenidagi barcha
masofaviy kompyuterlarning foydalanuvchisini anglatadi va user@'144.155.166.%'
144.155.166 pastki tarmog'idagi barcha masofaviy kompyuterlarning
foydalanuvchisini anglatadi.
Oddiy shakl foydalanuvchisi - "@" foydalanuvchisining sinonimi.
Jadval yoki ustun uchun imtiyozlar to'rtta darajaning har biridagi
imtiyozlardan mantiqiy OR operatori yordamida yaratiladi. Masalan, agar
mysql.user jadvali foydalanuvchi global SELECT imtiyoziga ega ekanligini bildirsa,
bu imtiyoz ma'lumotlar bazasi, jadval yoki ustunlar darajasida bekor qilinmaydi.
Ustun uchun imtiyozlar quyidagicha hisoblanishi mumkin:
global imtiyozlar
OR ma'lumotlar bazasi uchun imtiyozlar
OR jadvaldagi imtiyozlari
OR ustun imtiyozlari
Ko'pgina hollarda, foydalanuvchi huquqlari faqat bitta imtiyoz darajasida
belgilanadi, shuning uchun bu protsedura odatda yuqorida tavsiflangan kabi
murakkab emas.
Agar imtiyozlar mysql.user jadvalida bo'lmagan @ masofaviy kompyuter
kombinatsiyasiga berilgan bo'lsa, ikkinchisiga yozuv qo'shiladi, u DELETE buyrug'i
yordamida o'chirilguncha jadvalda qoladi.
Bular GRANT buyrug'i jadvalda foydalanuvchi yozuvlarini yaratishi
mumkin, ammo REVOKE buyrug'i ularni o'chira olmaydi. Buni DELETE buyrug'i
yordamida bajarish kerak.
12.3. GRANT misollari
Sintaksis qisqa:
• mysql> GRANT <imtiyozlar turi> ON <obyekt> TO <foydalanuvchi>
[IDENTIFIED BY <parol>] <qo'shimcha imkoniyatlar>;
Masalan, ushbu buyruq foydalanuvchiga ruxsat beradi va agar mavjud bo'lmasa, uni
yaratadi:
 mysql> GRANT ALL PRIVILEGES ON *.* TO 'dbuser'@'localhost'
IDENTIFIED BY 'password' WITH GRANT OPTION;
Buyruq tavsifi:
 ALL PRIVILEGES: ma'lumotlardan to'liq foydalanish huquqini beradi.
*.*: huquqlar barcha ma'lumotlar bazalariga va barcha jadvallarga beriladi.
 dbuser: hisob nomi.
 localhost: hisobga faqat lokal kompyuterdan kirish huquqi beriladi.
 password: foydalanuvchiga beriladigan parol.
 WITH GRANT OPTION: foydalanuvchiga boshqa foydalanuvchilarga
o’ziga belgilangan imtiyoz darajasida berilgan barcha imtiyozlarni berish
huquqini beradi.
MySQLdagi jadvalga imtiyozlar berish misollarini ko'rib chiqaylik.
Masalan, dbadam foydalanuvchi nomi bilan contacts jadvalida SELECT, INSERT,
UPDATE va DELETE imtiyozlarini berish uchun siz quyidagi GRANT operatorini
bajarasiz:
 GRANT SELECT, INSERT, UPDATE, DELETE ON contacts TO
‘dbadam'@'localhost';
'dbadam' nomli foydalanuvchiga GRANT OPTIONdan tashqari barcha ruxsatlarni
berish.
 GRANT ALL ON contacts TO ‘dbadam'@'localhost';
 Barcha foydalanuvchilarga contacts jadvalida SELECT ruxsatini berish
 GRANT SELECT ON contacts TO '*'@'localhost';
 GRANT SELECT, UPDATE (birthday) ON people TO root3@localhost;
12.4. Jadvaldagi imtiyozlarni bekor qilish
Sintaksis:
 REVOKE privileges ON object FROM user;
 Contacts jadvalidagi DELETE va UPDATE imtiyozlarini dbadam ismli
foydalanuvchidan olib tashlash:
 REVOKE DELETE, UPDATE ON contacts FROM ‘dbadam'@'localhost';
 dbadam nomli foydalanuvchi uchun jadvaldagi barcha ruxsatlarni bekor
qilish (GRANT OPTIONdan tashqari):
 REVOKE ALL ON contacts FROM ‘dbadam'@'localhost';
12.5. Funktsiyalar / protseduralarga imtiyozlar berish
MySQLdagi funktsiya / protseduraga EXECUTE imtiyozlarini berish uchun
sintaksis:
 GRANT EXECUTE ON [ PROCEDURE | FUNCTION ] object TO user;
 EXECUTE - biron bir funktsiya yoki protsedurani bajarish qobiliyati.
 PROCEDURE -
MySQLning
protseduralariga
imtiyoz
berilganda
foydalaniladi.
 FUNCTION - MySQLda biron bir funktsiya uchun imtiyoz berilganda
foydalaniladi.
 object - imtiyozlar berilgan ma'lumotlar bazasi obyektining nomi. Agar biron
bir funktsiya yoki protseduraga EXECUTE imtiyozlari berilsa, bu funktsiya
nomi yoki protsedura nomi bo'ladi.
 user - EXECUTE.RE | FUNCTION] object TO user imtiyozlari beriladigan
foydalanuvchining ismi
Foydalanuvchi paroli, IDENTIFIED BY operatori bilan aniqlanadi, agar u
ko’rsatilgan bo’lsa. Agar foydalanuvchi allaqachon parolga ega bo'lsa, bu parol
yangisi bilan almashtiriladi.
Agar siz yangi foydalanuvchi yaratishda identifikatsiya qilingan parolni
ko'rsatmasangiz, parolsiz foydalanuvchi yaratiladi. Bu xavfsizlik nuqtai nazaridan
ishonchsizdir.
Parollarni SET PASSWORD buyrug'i yordamida ham o'rnatish mumkin.
SET PASSWORD FOR root@localhost = PASSWORD('new_password');
Agar foydalanuvchi jadvalda biron bir imtiyozga ega bo'lmasa, u holda
jadvallar ro'yxati so'ralganda, jadval ko'rsatilmaydi (masalan, SHOW TABLES
operatoridan foydalangan holda).
WITH
GRANT
OPTION
operatori
foydalanuvchiga
boshqa
foydalanuvchilarga belgilangan imtiyoz darajasida o'zlari ega bo'lgan har qanday
imtiyozlarni berish huquqini beradi. GRANT imtiyozini berishda ehtiyot bo'ling,
chunki turli imtiyozlarga ega ikkita foydalanuvchi o'z imtiyozlarini birlashtirishi
mumkin!
Siz boshqa foydalanuvchiga siz mavjud bo'lmagan imtiyozni bera olmaysiz.
GRANT imtiyozi sizga faqat mavjud imtiyozlarni berish huquqini beradi.
E'tibor bering, agar foydalanuvchi ma'lum bir imtiyoz darajasida GRANT
imtiyoziga ega bo'lsa, unda ushbu foydalanuvchi tomonidan berilgan barcha
imtiyozlar (yoki kelajakda unga tayinlanishi mumkin bo’lgan) ushbu foydalanuvchi
tomonidan ham tayinlanishi mumkin.
Aytaylik, foydalanuvchiga ma'lumotlar bazasida INSERT imtiyozi berilgan.
Agar siz ma'lumotlar bazasida SELECT imtiyozini belgilasangiz va GRANT
OPTION WITH ni belgilansangiz, foydalanuvchi nafaqat SELECT imtiyozini, balki
INSERT ni ham belgilashi mumkin. Agar siz keyin foydalanuvchiga ma'lumotlar
bazasida UPDATE imtiyozini beradigan bo'lsangiz, foydalanuvchi INSERT,
SELECT va UPDATE ni tayinlashi mumkin.
Oddiy foydalanuvchilarga ALTER imtiyozlarini tayinlamang. Bu
foydalanuvchiga jadvallarning nomini o'zgartirish orqali imtiyozlar tizimini yo'q
qilish imkoniyatini beradi!
GRANT va REVOKE buyruqlari bilan berilgan jadvaldagi o'zgarishlar darhol
server tomonidan qayta ishlanadi. Agar siz imtiyozlarni tayinlash jadvallarini qo'lda
o'zgartirsangiz (INSERT, UPDATE va hokazolarni ishlatib), siz FLUSH
PRIVILEGES yoki mysqladmin flush- privileges operatorlarini serverga
imtiyozlar jadvallarini qayta yuklash to'g'risida ko'rsatma berishingiz kerak.
12.6. MySQLga yangi foydalanuvchilarni qo'shish
Foydalanuvchilar uch xil usulda qo'shilishi mumkin:
1) CREATE USER buyrug'i yordamida;
2) GRANT buyrug'i yordamida;
3) to'g'ridan-to'g'ri imtiyozlarni tayinlash jadvallariga.
GRANT buyrug'idan foydalanish afzalroq - bu usul osonroq va kam xatolarga
yo'l qo'yadi.
Shuningdek, foydalanuvchilarni yaratish va boshqarishga xizmat qiluvchi
juda ko'p sonli dasturlar (masalan, phpmyadmin) mavjud.
CREATE USER komandasi
CREATE USER user [IDENTIFIED BY [PASSWORD] 'password'] [,
user [IDENTIFIED BY [PASSWORD] 'password']] .
CREATE USER buyrug'i yangi MySQL hisoblarini yaratadi. Uni ishlatish
uchun, siz global CREATE USER imtiyoziga yoki mysql ma'lumotlar bazasi uchun
INSERT imtiyoziga ega bo'lishingiz kerak.
Har bir hisob uchun CREATE USER, hech qanday imtiyozga ega bo'lmagan
mysql.user jadvalida yangi qator yaratadi. Agar hisob allaqachon mavjud bo'lsa, xato
yuz beradi.
Har bir hisob nomiga GRANT bayonotida ko'rsatilgan format qo'llaniladi;
masalan, 'jeffrey'@'localhost'. Hisob nomining foydalanuvchi va xost qismlari hisob
uchun foydalanuvchi jadvallari satrining User va Host ustunlari qiymatlariga mos
keladi.
CREATE USER operatori MySQL ma'lumotlar bazasiga kirishga imkon
beruvchi ma'lumotlar bazasi qayd yozuvini yaratadi. MySQLdagi CREATE USER
buyrug'ining sintaksisi:
CREATE USER user_name
IDENTIFIED BY [ PASSWORD ] ‘password_value’;
Parametrlar va argumentlar
user_name - siz yaratmoqchi bo'lgan ma'lumotlar bazasi qayd yozuvining
nomi.
PASSWORD majburiy emas. Ushbu parametrni belgilaysizmi yo’qmi,
CREATE USER bir xil ishlaydi.
password_value bu foydalanuvchi nomini tayinlash uchun parol.
CREATE USER komandasiga misollar
CREATE USER
'saman'@'localhost' IDENTIFIED BY ‘123456789';
Ushbu misolda CREATE USER so'zi MySQL ma'lumotlar bazasida saman
nomli yangi foydalanuvchi yaratadi, uning paroli '123456789'.
Bir nechta foydalanuvchilarni yaratish
Siz MySQLda bir vaqtning o'zida bir nechta foydalanuvchi yaratishingiz
mumkin. Har bir foydalanuvchi / parol kombinatsiyasi bilan vergul bilan ajratilgan
bir nechta foydalanuvchilarni yaratish uchun CREATE USER buyrug'idan
foydalanishingiz mumkin.
Masalan:
CREATE USER
'samvel'@'localhost' IDENTIFIED BY 'klondike',
'serg'@'localhost' IDENTIFIED BY 'titidog';
Ushbu CREATE USER misoli MySQLda ikkita foydalanuvchi yaratadi.
Birinchi foydalanuvchiga "klondike" paroli bilan samvel, ikkinchi foydalanuvchiga
esa "titidog" paroli bilan serg nomi beriladi.
Parol uchun xesh qiymatidan foydalanish
Yuqoridagi misollar oddiy matn parolini ko'rsatadi. Shuningdek, parol uchun
xesh qiymatini belgilash imkoniyati mavjud.
Masalan:
CREATE USER
'samvel'@'localhost' IDENTIFIED BY
'*39C549BDECFBA8AFC3CE6B948C9359A0ECE08DE2';
Ushbu CREATE USER misoli MySQL ma'lumotlar bazasida parol xesh
qiymati bilan yangi foydalanuvchi namunasini yaratadi.
SELECT ('xyz');
Natija: * 39C549BDECFBA8AFC3CE6B948C9359A0ECE08DE2
SELECT PASSWORD('password');
Natija:
*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19
SELECT PASSWORD('google');
Natija:
*288CAC5A9F4E53A9DCEA23A3EDCE42C695CF48B9
SELECT PASSWORD(NULL);
Natija:
NULL
12.7. GRANT komandasi
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost
-> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@"%"
-> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.*
-> TO admin@localhost;
mysql> GRANT USAGE ON *.* TO dummy@localhost;
Ushbu GRANT buyruqlari uchta yangi foydalanuvchilarni yaratadi.
monty
To'liq superfoydalanuvchi - u har qanday joydan serverga ulana oladi, lekin
buning uchun some_pass parolidan foydalanishi kerak. E'tibor bering, biz monty @
localhost va monty @ "%" ni ham GRANT qilishimiz kerak. Agar siz localhostdan
yozuvni qo'shmasangiz, mysql_install_db bilan yaratilgan localhost uchun
noma'lum foydalanuvchi yozuvi mahalliy kompyuterdan ulanishda ustunlikka ega
bo'ladi, chunki u host maydoni uchun yanada aniqroq qiymatni belgilaydi va
foydalanuvchi jadvalida oldinroq joylashgan.
admin
localhostdan parolsiz ulanadigan foydalanuvchi; unga RELOAD va
PROCESS ma'muriy imtiyozlari berilgan. Ushbu imtiyozlar foydalanuvchiga
mysqladmin qayta yuklash, mysqladmin yangilash va mysqladmin flush-*
buyruqlarini, shuningdek mysqladmin jarayon ro'yxatini boshqarishga imkon
beradi. Unga ma'lumotlar bazasi bilan bog'liq biron bir imtiyoz berilmagan
(keyinchalik ularni GRANT operatoridan foydalanib tayinlashingiz mumkin).
dummy
Serverga parolsiz ulanish mumkin bo'lgan foydalanuvchi, faqat mahalliy
kompyuterdan. Barcha global imtiyozlar "N" ga o'rnatildi, foydalanuvchilarga
imtiyozlarsiz yaratishga imkon beradigan USAGE imtiyoz turi. Keyinchalik
ma'lumotlar bazasiga tegishli imtiyozlar berilishi kutiladi.
INSERT buyrug'i yordamida to'g'ridan-to'g'ri foydalanuvchi yaratish
mysql> INSERT INTO user VALUES('localhost','monty',
-> PASSWORD('some_pass'),
->
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')
;
mysql> INSERT INTO user
VALUES('%','monty',PASSWORD('some_pass'),
->
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user SET Host='localhost',User='admin',
-> Reload_priv='Y', Process_priv='Y';
mysql> INSERT INTO user (Host,User,Password)
-> VALUES('localhost','dummy','');
mysql> FLUSH PRIVILEGES;
admin foydalanuvchisi uchun yaxshiroq o'qiladigan kengaytirilgan INSERT
sintaksisidan foydalanish mumkin.
Administrator yaratish uchun siz db yoki host jadval yozuvlarida qiymatlarni
belgilashingiz shart emas.
Foydalanuvchi qo'shishga misol
Localhost, server.com va whitehouse.ru kompyuterlaridan ulanadigan
foydalanuvchi qo'shiladi. U bank ma'lumotlar bazasiga faqat localhost
kompyuteridan, faqat whitehouse.ru saytidagi ma'lumotlar bazasidan va har uch
kompyuterdan customer ma'lumotlar bazasidan foydalanishi, shuningdek uchta
kompyuterdan ulanishda student parolidan foydalanishi kerak.
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
->
ON bank.*
->
TO custom@localhost
->
IDENTIFIED BY ' student';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
->
ON exp.*
->
TO custom@whitehouse.ru
->
IDENTIFIED BY ' student';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
->
ON customer.*
->
TO custom@'%'
->
IDENTIFIED BY 'student';
Eslatma. SHOW PRIVILEGES buyrug'i MySQL serveri tomonidan qo'llabquvvatlanadigan tizim imtiyozlari ro'yxatini ko'rsatadi.
mysql> show privileges;
+------------+--------------------------+-------------------------------| Privilege | Context
| Comment
+------------+--------------------------+--------------------------------
| Select
| Tables
| To retrieve rows from
| Insert
| Tables
| To insert data into
| Update
| Tables
| To update existing
| Delete
| Tables
| To delete existing
| Index
| Tables
| To create or drop
| Alter
| Tables
| To alter the
| Create
| Databases,Tables,Indexes | To create new databases and
| Drop
| Databases,Tables
| To drop databases and tables
| Grant
| Databases,Tables
| To give to other users those
privileges you possess
| References | Databases,Tables
| To have references on tables
| Reload
| To reload or refresh tables,
| Server Admin
logs and privileges
| Shutdown | Server Admin
| To shutdown the
| Process
| To view the plain text of
| Server Admin
currently executing queries
| File
| File access on server | To read and write files on the
server
+------------+--------------------------+-------------------------------14 rows in set (0.00 sec)
13. Maʼlumotlar bazasiga murojaatni tashkil etishda ODBC
va C++dan foydalanish
13.1. Ulagichlar va API MySQL
MySQL Connectors mijoz dasturlari uchun MySQL serveriga ulanishni
ta'minlaydi. APIlar MySQL protokoli va MySQL manbalariga past darajadagi
kirishni ta'minlaydi. Connectrs ham, API ham boshqa til yoki muhitdan, shu
jumladan ODBC, Java (JDBC), Perl, Python, PHP, Ruby va boshqalardan MySQLni
ulash va bajarishga imkon beradi.
Ulagichlar va API qo'llanmasi
MySQL Connectors. Oracle bir nechta ulagichlarni ishlab chiqmoqda:
 Connector / C++ C ++ ilovalariga MySQLga ulanish imkonini beradi.
 Connector / J standart Java Database Connection (JDBC) API-dan
foydalanib Java dasturlaridan MySQLga ulanish uchun drayverni
qo'llab-quvvatlaydi.
 Connector / NET dasturchilarga MySQLga ulanadigan .NET
dasturlarini yaratishga imkon beradi. Connector / NET to'liq xususiyatli
ADO.NET interfeysini amalga oshiradi va ADO.NET vositalari bilan
ishlashni qo'llab-quvvatlaydi. Connector / NET-dan foydalanuvchi
dasturlar har qanday qo'llab-quvvatlanadigan .NET tilida yozilishi
mumkin.
MySQL Connectors
 Visual Studio uchun MySQL MySQL ulagichlari bilan ishlaydi
 Visual Studio uchun MySQL Connector / NET va Microsoft Visual
Studio 2012, 2013, 2015 va 2017 bilan ishlaydi
 Connector / ODBC, Open Database Connectivity (ODBC) API-dan
foydalanib MySQLga ulanish uchun drayverlarni qo'llab-quvvatlaydi.
ODBCni
qo'llab-quvvatlash
Windows,
Unix
va
macOS
platformalarida mavjud.
 Connector / Python Python DB API 2.0 versiyasiga mos keladigan API
yordamida Python dasturlaridan MySQLga ulanish uchun drayverlarni
qo’llab quvvatlaydi. Python yoki MySQL mijoz kutubxonalariga
qo'shimcha modullar kerak emas.
 Connector / NET va Microsoft Visual Studio 2012, 2013, 2015 va
2017. Visual Studio uchun MySQL Visual Studio ichidagi MySQL
obyektlari va ma'lumotlariga kirishni ta'minlaydi. Visual Studio
to'plami sifatida u to'g'ridan-to'g'ri Server Explorerga birlashtirilib,
yangi ulanishlarni yaratish va MySQL ma'lumotlar bazasi obyektlari
bilan ishlash imkoniyatini beradi.
13.2. Tashqi API MySQL
Environ API
ment
Ada
GNU Ada MySQL
Bindings
C
C API
C++
Connector/C++
Cocoa
MySQL++
MySQL wrapped
MySQL-Cocoa
Type
Notes
libmysqlclient See MySQL Bindings for GNU Ada
libmysqlclient See Section 28.6, “MySQL C API”.
libmysqlclient See MySQL Connector/C++ 8.0
Developer Guide.
libmysqlclient See MySQL++ website.
libmysqlclient See MySQL wrapped.
libmysqlclient Compatible with the Objective-C
Cocoa environment. See http://mysqlcocoa.sourceforge.net/
D
Eiffel
MySQL for D
Eiffel MySQL
libmysqlclient See MySQL for D.
libmysqlclient See Section 28.12, “MySQL Eiffel
Wrapper”.
Erlang erlang-mysql-driver
libmysqlclient See erlang-mysql-driver.
Haskell Haskell MySQL
Native Driver See Brian O'Sullivan's pure Haskell
Bindings
MySQL bindings.
hsql-mysql
libmysqlclient See MySQL driver for Haskell.
Java/JDB Connector/J
Native Driver See MySQL Connector/J 5.1 Developer
C
Guide.
Kaya
MyDB
libmysqlclient See MyDB.
Lua
LuaSQL
libmysqlclient See LuaSQL.
.NET/Mo Connector/NET
Native Driver See MySQL Connector/NET Developer
no
Guide.
Objective OBjective Caml
libmysqlclient See MySQL Bindings for Objective
Caml
MySQL Bindings
Caml.
Octave Database bindings for libmysqlclient See Database bindings for GNU Octave.
GNU Octave
ODBC
Connector/ODBC
libmysqlclient See MySQL Connector/ODBC
Developer Guide.
Perl
DBI/DBD::mysql
libmysqlclient See Section 28.8, “MySQL Perl API”.
Net::MySQL
Native Driver See Net::MySQL at CPAN
PHP
mysql, ext/mysql interf libmysqlclient See Original MySQL API.
ace (deprecated)
mysqli, ext/mysqli inte libmysqlclient See MySQL Improved Extension.
rface
PDO_MYSQL
libmysqlclient See MySQL Functions (PDO_MYSQL).
PDO mysqlnd
Native Driver
Python Connector/Python
Native Driver See MySQL Connector/Python
Developer Guide.
Python Connector/Python C libmysqlclient See MySQL Connector/Python
Extension
Developer Guide.
MySQLdb
libmysqlclient See Section 28.9, “MySQL Python API”.
Ruby
MySQL/Ruby
libmysqlclient Uses libmysqlclient.
See Section 28.10.1, “The MySQL/Ruby
API”.
Ruby/MySQL
Native Driver See Section 28.10.2, “The Ruby/MySQL
API”.
Scheme Myscsh
libmysqlclient See Myscsh.
SPL
sql_mysql
libmysqlclient See sql_mysql for SPL.
Tcl
MySQLtcl
libmysqlclient See Section 28.11, “MySQL Tcl API”.
13.3. MySQL PHP API
PHP to'rt xil MySQL API kengaytmalarini ta'minlaydi:
“MySQL Improved Extension”: "MySQL takomillashtirilgan" degan
ma'noni anglatadi; ushbu kengaytma PHP 5.0.0 dan beri mavjud. U MySQL 4.1.1
va undan keyingi versiyalarda foydalanish uchun mo'ljallangan. Ushbu kengaytma
MySQL 5.0 da ishlatiladigan autentifikatsiya protokoli va tayyorlangan operatorlar
va bir nechta API-ni to'liq qo'llab-quvvatlaydi. Bundan tashqari, ushbu kengaytma
keng obyektga yo'naltirilgan dasturiy interfeysni ta'minlaydi.
“MySQL Functions (PDO_MYSQL)”: Bu xususiy API emas, balki PHP
PDO (PHP Data Objects) uchun MySQL drayveri. MySQL PDO drayveri PDOning
o'zidan pastda turadi va MySQLga tegishli funktsiyalarni ta'minlaydi. Ushbu
kengaytma PHP 5.1.0 dan beri mavjud.
Mysql_xdevapi: Ushbu kengaytma MySQL X DevAPIdan foydalanadi va
mysql_xdevapi nomli PECL kengaytmasi sifatida mavjud.
“Original MySQL API”: PHP 4 va 5-versiyalari uchun foydalanish mumkin,
bu kengaytma MySQL 4.1-dan oldin MySQL-versiyalari bilan foydalanish uchun
mo'ljallangan. Ushbu kengaytma MySQL 4.1-da ishlatiladigan kengaytirilgan
autentifikatsiya protokolini qo'llab-quvvatlamaydi, shuningdek tayyorlangan yoki
bir nechta operatorlarni qo'llab-quvvatlamaydi. MySQL 4.1 bilan ushbu
kengaytmani ishlatish uchun.
MySQL PHP drayverlari haqida umumiy ma'lumot
PHP versiyasiga qarab MySQL ma'lumotlar bazasiga kirish uchun ikkita yoki
uchta
PHP
API
mavjud.
PHP
5
foydalanuvchilari
eski
mysql, mysqli yoki PDO_MySQL kengaytmalaridan birini tanlashi mumkin. PHP 7
mysql kengaytmasini olib tashlaydi va faqat oxirgi ikkita variantni qoldiradi.
Terminologik ma'lumot
API nima?
Ilovaning dasturiy interfeysi yoki API, kerakli vazifani bajarish uchun
dasturingiz chaqirishi kerak bo'lgan sinflarni, usullarni, funktsiyalarni va
parametrlarni belgilaydi. Ma'lumotlar bazalari bilan o'zaro ishlashi kerak bo'lgan
PHP dasturlari uchun odatda zarur bo'lgan API lar PHP kengaytmalari orqali
ta'minlanadi.
API nima?
Ilovaning dasturiy interfeysi yoki API, kerakli vazifani bajarish uchun
dasturingiz chaqirishi kerak bo'lgan sinflarni, usullarni, funktsiyalarni va
parametrlarni belgilaydi. Ma'lumotlar bazalari bilan o'zaro ishlashi kerak bo'lgan
PHP dasturlari uchun odatda zarur bo'lgan API lar PHP kengaytmalari orqali
ta'minlanadi.
Connector nima?
MySQL hujjatlarida "ulagich" atamasi sizning ilovangizga MySQL
ma'lumotlar bazasi serveriga ulanishga imkon beradigan dasturiy ta'minotni
anglatadi. MySQL turli tillar, jumladan PHP uchun ulagichlarni taqdim etadi.
Driver nima?
Driver - bu ma'lum bir ma'lumotlar bazasi serveri bilan aloqa qilish uchun
mo'ljallangan dasturiy qism. Shuningdek, drayver MySQL Client Library yoki
MySQL Native Driver kabi kutubxonaga murojaat qilishi mumkin. Ushbu
kutubxonalar MySQL ma'lumotlar bazasi serveri bilan bog'lanish uchun
ishlatiladigan past darajadagi protokolni amalga oshiradi.
Masalan, PHP Data Objects (PDO) ma'lumotlar bazasini abstrakatsiya qilish qatlami
ma'lumotlar bazasiga tegishli bir nechta drayverlardan birini ishlatishi mumkin.
Mavjud drayverlardan biri PDO MYSQL drayveri bo'lib, u MySQL serveri bilan
bog'lanish imkoniyatini beradi.
Extension nima?
Siz PHP hujjatlarida boshqa bir atama bilan tanishasiz - kengaytma. PHP kodi
asosiy funktsiyalar uchun ixtiyoriy kengaytmali yadrodan iborat. MySQL bilan
bog'liq PHP kengaytmalari, masalan mysqli kengaytmasi va mysql kengaytmasi
PHP kengaytmasi doirasidan foydalangan holda amalga oshiriladi.
13.4. Uchta MySQL API larini taqqoslash
<?php
// mysqli
$mysqli = new mysqli("example.com", "user", "password",
"database");
$result = $mysqli->query("SELECT 'Hello, dear MySQL user!'
AS _message FROM DUAL"); $row = $result->fetch_assoc();
echo htmlentities($row['_message']);
// PDO $pdo = new
PDO('mysql:host=example.com;dbname=database', 'user',
'password'); $statement = $pdo->query("SELECT 'Hello, dear
MySQL user!' AS _message FROM DUAL"); $row = $statement>fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['_message']);
// mysql $c = mysql_connect("example.com", "user",
"password"); mysql_select_db("database");
$result = mysql_query("SELECT 'Hello, dear MySQL user!' AS
_message FROM DUAL");
$row = mysql_fetch_assoc($result);
echo htmlentities($row['_message']); ?>
14. XML va ma'lumotlar bazasi (MySQL)
14.1. XML nima?
XML (eXtensible Markup Language) - bu kengaytiriladigan belgilash tili.
XMLning asosiy yo'nalishi ma'lumotlarga qaratilgan. XMLda ma'lumotlarning
tarkibiy belgilari va ma'lumotlar taqdimoti qat’iy ravishda ajratilgan.
XML yaratishning asosiy sabablari:
1. barchaga ma'lumotlarni formatlash va strukturalash uchun kuchli
vositalarni taqdim etishga urinish;
2. oddiy foydalanuvchilar uchun mavjud bo'lgan yordamchi vositalarni
yaratish oson bo'lgan hujjat tuzilish tilini barqaror ravishda amalga oshirish
zarurati.
XML bu meta til - maxsus til bo'lib, unda siz boshqa tillar sinfining to'liq
tavsifini yozishingiz mumkin, o'z navbatida bu orqali hujjatlar tuziladi. Bu
o'zlarining vazifalariga xos bo'lgan ilovalar va ma'lumotlar to'plamlarini yaratishga
imkon beradigan qoidalar to'plami.
Har bir XML hujjati ishlatilayotgan XML tilining versiyasini va kodlash
usulini ko'rsatadigan prolog bilan boshlanishi kerak, masalan:
<?xml version="1.0" encoding="WINDOWS-1251"?>
<? xml version="1.0" encoding="WINDOWS-1251" ?>
<memo>
<recipient> Ildarov M. </recipient>
<message>Message </message>
</memo>
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
14.2. XML funktsiyalari
nomi
ma’lumot
ExtractValue()
XPath notatsiyasi yordamida XML satridan qiymat olish
UpdateXML()
XML o’zgartirilgan fragmentini qaytarish
XPath 1.0 (XML Path Language, versiya 1.0) asosiy imkoniyatlarini
ta'minlaydigan ikkita funktsiya mavjud. XPath sintaksisi va ulardan foydalanish
haqida ba'zi asosiy ma'lumotlar ushbu bo'limda keyinroq berilgan; ammo, ushbu
mavzularni batafsil muhokama qilish ushbu mavzu doirasiga kirmaydi va to'liq
ma'lumot olish uchun siz XML Path Language (XPath) 1.0 standartiga murojaat
qilishingiz kerak. XPath uchun yangi bo'lganlar yoki asoslarni o'rganmoqchi
bo'lganlar uchun foydali manba zvon.org da XPath o'quv qo'llanmasi bo'lib, u bir
necha tillarda mavjud.
Ushbu funktsiyalarda ishlatiladigan XPath ifodalari maxsus o'zgaruvchilar va
mahalliy saqlanadigan dasturiy parametrlarni qo'llab-quvvatlaydi. Foydalanuvchi
o'zgaruvchilari zaif tekshiriladi; Saqlanadigan protseduralar uchun lokal
o'zgaruvchilar qat'iy tekshiriladi.
14.3. Xpath misollari
1-misol (/ AAA). Asosiy XPath sintaksisi fayl tizimining manziliga o'xshash. Agar
yo'l '/' bilan boshlangan bo'lsa, u berilgan elementga mutlaq yo'lni anglatadi.
AAA
ildiz tuguni
tanlanadi
<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC/>
</AAA>
2-misol. Agar yo'l // bilan boshlangan bo'lsa, unda belgilangan shablonga mos
keladigan barcha hujjatlar elementlari tanlanadi.
BBB barcha elementlari
tanlanadi
<AAA>
<BBB/>
<CCC/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC>
<DDD>
<BBB/>
<BBB/>
</DDD>
</CCC>
</AAA>
3-misol. '*' belgisi uning oldidagi yo'lga mos keladigan barcha elementlarni
tanlash kerakligini bildiradi.
14.4. ExtractValue() - XML funktsiyasi
nomi
ma’lumot
ExtractValue()
XPath notatsiyasi yordamida XML satridan qiymat olish
ExtractValue (xml_frag, xpath_expr)
ExtractValue() ikkita satrli argumentlarni, xml_frag XML belgilash
fragmentini va xpath_expr XPath ifodasini (shuningdek, lokator sifatida ham
tanilgan) oladi; u XPath ifodasiga mos keladigan element yoki elementlarning bolasi
bo'lgan birinchi matn tugunining matnini (CDATA) qaytaradi.
Foydalanuvchi parametrlari (zaif tekshiriladi). Sintaksisdan foydalanadigan
o'zgaruvchilar (ya'ni foydalanuvchi o’zgaruvchilari) tekshirilmaydi. Agar
o'zgaruvchi nomutanosib bo'lsa yoki oldindan qiymat belgilanmagan bo'lsa, server
ogohlantirish yoki xato qilmaydi. Bu shuni anglatadiki, foydalanuvchi har qanday
tipografik xatolar uchun javobgardir, chunki agar (masalan) mo'ljallangan joyda
ishlatilsa, hech qanday ogohlantirish bo'lmaydi.
Agar sizga mos keladigan xml_frag elementi yoki yo'qligini aniqlash kerak
bo'lsa yoki bunday element topilgan bo'lsa, lekin uning tarkibida bolalar matni
tugunlari bo'lmagan bo'lsa, siz XPath count() funktsiyasidan foydalanadigan ifoda
natijasini tekshirishingiz kerak. Masalan, ushbu operatorlarning ikkalasi bu еrda
ko'rsatilgandek bo'sh satrni qaytaradi:
SELECT ExtractValue('<a><b/></a>', '/a/b'); natija bo’sh
SELECT ExtractValue('<a><c/></a>', '/a/b'); bu еrda ham
natija bo’sh
Ammo, quyidagilardan foydalanib, haqiqatan ham mos keladigan
element mavjudligini aniqlay olasiz:
SELECT ExtractValue('<a><b/></a>', 'count(/a/b)'); natija
1
SELECT ExtractValue('<a><c/></a>', 'count(/a/b)'); natija
0
mysql> SET @xml = '<a><b>X</b><b>Y</b></a>';
Query OK, 0 rows affected (0.00 sec)
mysql> SET @i =1, @j = 2;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @i, ExtractValue(@xml, '//b[$@i]');
+------+-----------------------------------------+
| @i | ExtractValue(@xml, '//b[$@i]') |
+------+-----------------------------------------+
|1
|
X
|
+------+------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT @j, ExtractValue(@xml, '//b[$@j]');
+------+----------------------------------------+
| @j | ExtractValue(@xml, '//b[$@j]') |
+------+----------------------------------------+
| 2|
Y
|
+------+----------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT @k, ExtractValue(@xml, '//b[$@k]');
+------+--------------------------------+
| @k | ExtractValue(@xml, '//b[$@k]')
| +------+--------------------------------+
| NULL |
|
+------+--------------------------------+
1 row in set (0.00 sec)
Saqlangan dasturlardagi o'zgaruvchilar (qat'iy tekshirish). Sintaksisdan
foydalanadigan o'zgaruvchilar saqlangan dasturlar ichkarisida chaqirilganida, ular
ushbu funktsiyalar bilan e'lon qilinishi va ishlatilishi mumkin. Bunday
o'zgaruvchilar saqlanadigan dastur uchun lokal bo'lib, unda aniqlanadi, turi va
qiymati qat'iy tekshiriladi. $variable_name
Misol:
mysql> DELIMITER |
mysql> CREATE PROCEDURE myproc ()
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE xml VARCHAR(25) DEFAULT '<a>X</a><a>Y</a><a>Z</a>';
WHILE i < 4 DO
SELECT xml, i, ExtractValue(xml, '//a[$i]');
SET i = i+1;
END WHILE;
END
| Query OK, 0 rows affected (0.01 sec)
mysql> DELIMITER ;
mysql> CALL myproc();
14.5. LOAD XML operatori
LOAD XML
[LOW_PRIORITY | CONCURRENT] [LOCAL]
INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE [db_name.]tbl_name
[CHARACTER SET charset_name]
[ROWS IDENTIFIED BY '<tagname>']
[IGNORE number {LINES | ROWS}]
[(field_name_or_user_var
[, field_name_or_user_var] ...)]
[SET col_name={expr | DEFAULT},
[, col_name={expr | DEFAULT}] ...]
14.6. UPDATEXML operatori
UpdateXML (xml_target, xpath_expr, new_xml)
Ushbu funktsiya belgilangan xml_targetXML belgilaydigan qismning bir
qismini yangi new_xml XML fragmentiga almashtiradi va keyin o'zgartirilgan
XML-ni qaytaradi. Xml_target almashtirish qismi foydalanuvchi tomonidan taqdim
etilgan XPath xpath_expr ifodasiga mos keladi.
Agar xpath_expr mos kelmasa yoki bir nechta mosliklar topilmasa, funktsiya
xml_target XMLning asl nusxasini qaytaradi. Uchala argument ham satrlar bo'lishi
kerak.
mysql> SELECT
UpdateXML (xml_target, xpath_expr, new_xml)
Ushbu funktsiya belgilangan xml_targetXML belgilaydigan qismning bir
qismini yangi new_xml XML fragmentiga almashtiradi va keyin o'zgartirilgan
XMLni qaytaradi. Xml_target almashtirish qismi foydalanuvchi tomonidan taqdim
etilgan XPath xpath_expr ifodasiga mos keladi.
Agar xpath_expr mos kelmasa yoki bir nechta mosliklar topilmasa, funktsiya
xml_target XMLning asl nusxasini qaytaradi. Uchala argument ham satrlar bo'lishi
kerak.
Adabiyotlar ro’yxati.
1. Eric Redmond, Jim R. Wilson. A Guide to Modern Databases and the NoSQL
Movement– 347 с. AQSH, 2015 г.
2. Фиайли К. SQL: Пер. с англ. – М.: ДМК Пресс. – 456 с. Москва. 2013 г.
3. Jeffrey A. Hoffer, Mary B. Prescott, and Fred R. McFadden. Modern
DatabaseManagement (8th Ed.) – 557 р. Prentice-Hall, 2007.
4. For those seeking a stronger technical treatment of database systems: Elmasri,
R. and S. B. Navathe: Fundamentals of Database Systems (5th Ed.) – 671 р. Addison
Wesley, 2015.
5. Fundamentals of database systems sixth edition. Ramez Elmasri. Department
of Computer Science and Engineering The University of Texas at Arlington. 2011.
6. Введение в Oracle 10g. Перри Джеймс, Пост Джеральд. 697 стр 2013.
7. Григорьев
Ю.А.,
Плутенко
А.Д..
Жизненный
цикл
проектов
распределенных баз данных. Благовещеснк АмГУ, 1999.
8. Диго С.М. Базы данных Проектирование и использование. издательство
"Финансы и статистика" 592 стр, 2005 г.
9. Конноли
Томас, Каролин Бегг. Базы данных. Проектирование,
реализация и сопровождение. Теория и практика. 3-издание - М. : Изд.дом
Вильямс - 2003. - 1440 с.
Download