2-mavzu. Ma’lumotlar bazasida tashqi bog’lanish va birlashmalar
Download 440.01 Kb. Pdf ko'rish
|
2-maruza
QUL
JADVALLARINGA QAYTARIShNI TAShKIL ETADIGAN KEYITLAR Yuqorida aytib o'tganimizdek, FOREIGN KEY cheklovi ushbu shaxsiy jadvalni ularga asosiy kalit jadvallari sifatida taqdim etishi mumkin. Oddiy bo'lishdan uzoq, bu xususiyat foydali bo'lishi mumkin. Deylik, menejer maydoniga ega bo'lgan xodimlar jadvalimiz bor. Ushbu maydon xodimlarning har birining raqamlarini o'z ichiga oladi, ularning ba'zilari ma'mur hamdir. Ammo har bir ma'mur bir vaqtning o'zida xodim bo'lib qolishi sababli, u tabiiy ravishda ushbu jadvalda ham ishtirok etadi. Xodimning raqami (empno deb nomlangan ustun) birlamchi kalit deb e'lon qilingan va administrator uni tashqi kalit deb ataydigan jadval yarataylik: JADVAL XODIMLARI (empno integer NOT NULL PRIMARY KEY, name char (10) NOT NULL UNIOUE) , menejerning butun soniga YO'LLANILGAN MA'LUMOTLAR Xodimlar); (Chet el kaliti jadvalning havola qilingan asosiy kaliti bo'lgani uchun ustunlar ro'yxati chiqarib tashlanishi mumkin.) Ushbu jadvalning mazmuni quyidagicha: EMPNO NAME MANAGER _____ ________ _______ 1003 Terrence 2007 2007 Atali NULL 1688 McKenna 1003 2002 Collier 2007 Ko'rib turganingizdek, ularning har biri ( lekin Atali emas), jadvaldagi boshqa xodimni uning ma'muri deb ataydi. Jadvaldagi eng yuqori raqamga ega Atali NULL-ga o'rnatilishi kerak. Bu mos yozuvlar yaxlitligining boshqa printsipini beradi. Shaxsiy jadvalga murojaat qilgan chet el kaliti \u003d NULL qiymatlariga ruxsat berishi kerak. Agar yo'q bo'lsa, birinchi qatorni qanday kiritasiz? Ushbu birinchi satr o'ziga tegishli bo'lsa ham, tashqi kalit qiymati kiritilganda ota-ona qiymati allaqachon o'rnatilgan bo'lishi kerak. Ushbu tamoyil, agar tashqi kalit to'g'ridan- to'g'ri shaxsiy jadvalga murojaat qilmasa ham, boshqa jadvalga havola orqali, keyin esa tashqi kalitlar jadvaliga murojaat qiladi. Masalan, bizning Sotuvchilar jadvalida Mijozlar jadvaliga tegishli bo'lgan qo'shimcha maydon mavjud, masalan, quyidagi CREATE TABLE bayonotida ko'rsatilgandek, har bir jadval boshqasiga murojaat qiladi deb taxmin qiling: JABBA Sotuvchilarni yaratish (snum integer NOT NULL PRIMARY KEY, sname char (10) NOT NULL, city char (10), comm declmal, cnum integer ADABIYoTLAR Mijozlar); JADVAL MUZALARINI YARATISH (cnum integer NULL PRIMARY KEY, cname char (10) NOT NULL, city char (10), reyting integer, snum integer ADABIYOTLAR Sotuvchilar); Bunga o'zaro bog'liqlik deyiladi. SQL buni nazariy jihatdan qo'llab-quvvatlaydi, ammo amalda bu muammoli bo'lishi mumkin. Birinchisi tomonidan yaratilgan ikkitaning har qanday jadvali, boshqasi uchun hali mavjud bo'lmagan ma'lumotnoma jadvali. O'zaro bog'lanish uchun, SQL aslida bunga imkon beradi, ammo ikkalasi ham yaratilish jarayonida hech qanday jadval ishlatilmaydi. Boshqa tomondan, agar ikkita jadval turli xil foydalanuvchilar tomonidan tuzilgan bo'lsa, muammo yanada qiyinlashadi. O'zaro bog'liqlik foydali vosita bo'lishi mumkin, ammo bu noaniqlik va xavf-xatarlardan xoli emas. Masalan, avvalgi misol to'liq foydalanishga yaroqsiz: chunki u sotuvchini bitta mijoz bilan cheklaydi va bundan tashqari, bunga erishish uchun o'zaro bog'liqlikdan foydalanish kerak emas. O'zaro faoliyat ma'lumotlarning yaxlitligini yaratish tizimidan oldin uni ishlatishda ehtiyot bo'lishingizni va dasturlaringizni o'zgartirish va o'chirish effektlarini, shuningdek so'rovlarning imtiyozi va dialog bilan ishlashini qanday boshqarishini tahlil qilishni tavsiya etamiz. (Imtiyozlar va interaktiv so'rovlarni qayta ishlash 22-bobda muhokama qilinadi.) Download 440.01 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling