2-mavzu. Ma’lumotlar bazasida tashqi bog’lanish va birlashmalar


Download 440.01 Kb.
Pdf ko'rish
bet23/37
Sana08.01.2022
Hajmi440.01 Kb.
#237443
1   ...   19   20   21   22   23   24   25   26   ...   37
Bog'liq
2-maruza

Cheklovlarning ta'siri 

Bunday  cheklovlar  DML  modifikatsiyalash  buyruqlaridan  foydalanish  qobiliyatiga  va 

qobiliyatsizligingizga  qanday  ta'sir  qiladi? Chet  tugmachalar  deb  belgilangan  maydonlar  uchun 

javob juda oddiy: INSERT yoki UPDATE buyrug'i bilan ushbu maydonlarga kiritgan har qanday 

qiymat  ularning  ota-ona  kalitlarida  mavjud  bo'lishi  kerak.  Ushbu  maydonlarga  NULL 

qiymatlarini  qo'yishingiz  mumkin,  garchi  ota-ona  kalitlarida  NULL  qiymatlariga  ruxsat 

berilmagan bo'lsa ham, NOT NULL cheklovi mavjud. Siz chet el tugmachalari bilan har qanday 

qatorlarni umuman ota-tugmalarni ishlatmasdan o'chirishingiz mumkin. 

Asosiy  kalit  qadriyatlarini  o'zgartirish  masalasiga  taalluqli  bo'lgani  uchun,  ANSI  ta'rifi 

bo'yicha javob  yanada sodda, ammo ehtimol biroz cheklangan:  har qanday  asosiy kalit  qiymati 

o'chirilishi  yoki  o'zgartirilishi  mumkin  emas.  Bu  shuni  anglatadiki,  masalan,  Buyurtmachilar 

jadvalida  buyurtmalarni  saqlab  turganda  mijozni  xaridorlar  jadvalidan  olib  tashlay  olmaysiz. 

Ushbu  jadvallardan  qanday  foydalanishingizga  qarab,  bu  kerakli  yoki  muammoli  bo'lishi 

mumkin.  Biroq,  mijozni  joriy  buyurtmalar  bilan  o'chirib  tashlashga  va  mavjud  bo'lmagan 

mijozlarga  havola  qilingan  Buyurtma  jadvalidan  chiqib  ketishga  imkon  beradigan  tizimga  ega 

bo'lishdan  yaxshiroqdir.  Ushbu  cheklash  tizimining  ma'nosi  shundaki,  Buyurtma  jadvali 

yaratuvchisi,  mijozlar  jadvali  va  Sotuvchilar  jadvalidan  ota-ona  kalitlari  sifatida  foydalanib, 



ushbu jadvallardagi harakatlarga sezilarli cheklovlar qo'yishi mumkin. Shu sababli, ushbu jadval 

egasi  (yaratuvchisi)  sizga  buni  amalga  oshirish  huquqini  maxsus  berguniga  qadar  siz 

boshqarmaydigan jadvaldan foydalana olmaysiz (ya'ni siz uni  yaratmadingiz va siz unga egalik 

qilmaysiz) 22-bob). ANSI tarkibiga kirmaydigan, lekin ba'zi tijorat dasturlarida mavjud bo'lgan 

asosiy kalitni o'zgartirish uchun ba'zi boshqa harakatlar mavjud. Agar siz ota-ona kalitining joriy 

mos  yozuvlar  qiymatini  o'zgartirmoqchi  yoki  olib  tashlamoqchi  bo'lsangiz,  aslida  uchta 

imkoniyat mavjud: 

  O'zgartirishni (ANSI modasi) ota-tugmachada o'zgartirishlar cheklanganligini belgilash 



orqali cheklashingiz yoki rad qilishingiz mumkin. 

    Siz  ota-tugmachani  o'zgartirishingiz  mumkin  va  shu  bilan  tashqi  kalitni  avtomatik 



ravishda o'zgartirishingiz mumkin, bu kaskadli o'zgarish deb ataladi. 

    Siz  ota-tugmachani  o'zgartirishingiz  mumkin  va  tashqi  kalitni  avtomatik  ravishda 



NULL-ga  o'rnatishingiz  mumkin  (tashqi  kalitda  NULLS  ruxsat  berilgan  deb),  bu  bo'sh  tashqi 

kalitning o'zgarishi deb nomlanadi. 

Hatto  ushbu  uchta  toifada  ham  barcha  o'zgartirish  buyruqlarini  shu  tarzda  boshqarishni 

xohlamasligingiz mumkin. INSERT, albatta, nuqta yonida. Hozirgi vaqtda ushbu qiymatlarning 

hech birini chaqirish mumkin bo'lmasligi uchun u ota-ona kalitining yangi qiymatlarini jadvalga 

qo'yadi.  Biroq,  siz  modifikatsiyani  o'chirilmasdan  kaskadga  o'tishiga  ruxsat  berishni 

xohlashingiz  mumkin  va  aksincha.  UPDATE  va  DELETE  buyruqlaridan  qat'i  nazar,  uchta 

toifadan birini belgilashga imkon beradigan vaziyat  yaxshiroq bo'lishi  mumkin.  Shuning uchun 

biz  ota-ona  kalitida  UPDATE  yoki  DELETE-ni  chiqarganingizda  nima  bo'lishini  aniqlaydigan 

yangilanish  effektlariga  murojaat  qilamiz.  Biz  aytgan  ushbu  effektlar  CHEKLANGAN 

o'zgarishlar,  CASCADES  o'zgarishi  va  NULL  o'zgarishlar  deb  nomlanadi.  Yuqorida 

tavsiflangan  eng  maqbul  vaziyat  uchun  tizimingizning  haqiqiy  imkoniyatlari  qat'iy  ANSI 

standartida  bo'lishi  kerak  -  o'zgartirish  va  o'chirish  effektlari,  ikkalasi  ham  avtomatik  ravishda 

cheklangan.  Illyustratsiya  orqali  biz  o'zgartirish  va  olib  tashlash  effektlarining  to'liq  to'plamida 

nima qilishingiz mumkinligi haqida bir nechta misollarni keltiramiz. Albatta, nostandart vositalar 

bo'lgan  modifikatsiya  va  o'chirish  effektlari  standart  holat  sintaksisidan  mahrum.  Bu  erda  biz 

foydalanadigan  sintaksisni  yozish  oson  va  keyinchalik  ushbu  effektlarning  funktsiyalarini 

tasvirlashga xizmat qiladi. 

Eksperimentning  to'liqligi  uchun,  bizning  sotuvchilar  jadvalimiz  bo'limlarni  o'zgartirgan 

taqdirda, sotuvchilar jadvalining snum maydonini o'zgartirish uchun sizda sabab bor deb taxmin 

qilaylik. (Odatda birlamchi kalitlarni o'zgartirish biz amalda qilishni tavsiya etadigan narsa emas. 

Mavjud  asosiy  kalitlarning  asosiy  kalitlarga  o'xshab  harakat  qilishidan  boshqa  narsa  yo'q:  ular 

o'zgarmasligi kerak.) Sotuvchi raqamini o'zgartirganda, uning barcha mijozlari saqlanib qolishini 

xohlaysiz.  Ammo,  agar  bu  sotuvchi  o'z  firmasi  yoki  kompaniyasini  tark  etsa,  siz  mijozlarini 

ma'lumotlar  bazasidan  o'chirib  tashlamoqchi  bo'lmasligingiz  mumkin.  Buning  o'rniga,  mijozlar 

boshqalarga  tayinlanganligiga  ishonch  hosil  qilishni  xohlaysiz.  Buning  uchun  kaskadli  effektli 

UPDATE ni, cheklangan effektli O'chirishni belgilashingiz kerak. JADVAL Mijozlarini yarating 

(cnum  integer  NULL  PRIMARY  KEY,  cname  char  (10)  NOT  NULL,  city  char  (10),  rating 

integer,  snum  integer  ADABIYOTLAR  Sotuvchilar,  Yangilangan  SAVDO  KASKADALARI, 

SAVDOCHILARNING MA'LUMOTI cheklangan); Agar siz hozirda Vendors jadvalidan Peelni 

olib tashlashga harakat qilsangiz, Hoffman va Clemens mijozlarining snum maydonlarini boshqa 

belgilangan sotuvchi uchun o'zgartirmaguningizcha buyruq kuchga ega bo'lmaydi. Shu bilan bir 

qatorda, siz Peelning snum pol qiymatini 1009 ga o'zgartirishingiz mumkin, Xofman va Klemens 

ham avtomatik ravishda o'zgaradi. 

Uchinchi  effekt  -  NULL  o'zgarishlar.  Shunday  bo'ladiki,  sotuvchilar  kompaniyani  tark 

etganda,  ularning  hozirgi  buyurtmalari  boshqa  sotuvchiga  o'tkazilmaydi.  Boshqa  tomondan,  siz 

hisob-fakturalarini  o'chirib  tashlagan  mijozlar  uchun  barcha  buyurtmalarni  avtomatik  ravishda 



bekor qilishni xohlaysiz. Sotuvchi yoki mijozning raqamlarini o'zgartirib, ularni shunchaki unga 

o'tkazishingiz  mumkin.  Quyidagi  misol  ushbu  effektlardan  foydalanib  qanday  qilib  Buyurtma 

jadvalini  yaratishingiz  mumkinligini  ko'rsatadi.  Jadval  buyurtmalarini  yaratish  (onum  integer 

NULL  PRIMARY  KEY,  amt  decimal,  odate  date  NULL  cnum  integer  NOT  NULL 

MEDIALLAR 

Mijozlar 

snum 

integer 


ADABIYoTLAR 

Sotuvchilar, 

Mijozlar 

KASKADALARINING  YANGILASHI,  Sotuvchilarning  yangilanishi;  Albatta,  Sotuvchi 

jadvalidagi Null o'zgarishi ta'siri bilan DELETE buyrug'ida, NUML cheklovi snum maydonidan 

olib tashlanishi kerak. 




Download 440.01 Kb.

Do'stlaringiz bilan baham:
1   ...   19   20   21   22   23   24   25   26   ...   37




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling