7.Tashqi kalitlar
Tashqi kalit (foreign key) jadvalning tashqi kalit o’rnatilgan maydonidagi kiymatlar boshka tashqi deb ataladigan jadvalda mavjud bo’lishi shart. Birlamchi kalitdan uning farqi shundaki, tashki kalitli maydondagi qiymatlar takrorlanishi mumkin. Tashqi jadvaldagi maydon qiymatlari esa takrorlanmas bo’lishi kerak. Jadvalga tashqi kalitning qo’shilishi avtomatik tarzda undagi kalit maydonda ikkilamchi indeksni hosil qiladi.
Birlamchi kalitga o’xshash tarzda tashqi kalitni ham CREATE TABLE buyrug’i yordamida yaratish mumkin yoki jadval mavjud bo’lsa ALTER TABLE ADD FOREIGN KEY buyrug’i yordamida xasil qilish mumkin.
1. STAFF jadvali uchun tashqi kalit yaryatamiz:
ALTER TABLE STAFF
ADD FOREIGN KEY (PosID) REFERENCES POSS
Bu cheklov PosID maydoniniga tashqi kalit o’rnatadi va POSS jadvalining shunga mos maydoniga murojaat qilinadi. Bu shuni anglatadiki, STAFF jadvaliga kiritilayotgan identifikatorlar POSS jadvalining unga mos maydonida mavjud bo’lishi shart va uni POSS jadvalidan o’chirib bo’lmaydi. Bunday biriktirib qo’yish murojaatli butunlik (referential integrity) deyiladi.
2. Shunga o’xshash tashqi kalitni DepID maydoni uchun xam yaratamiz:
ALTER TABLE STAFF
ADD FOREIGN KEY (DepID) REFERENCES DEPS(DeptID)
Bu misolda STAFF va DEPS jadvallaridagi maydonlarning nomlari xar xil. Shuning uchun DEPS jadvalining nomidan so’ng maydon nomi keltirilgan.
3. Novbatdagi buyruqda STAFF jadvali pochta indeksi bo’yicha tashqi kalit xosil qilinmoqda:
ALTER TABLE. STAFF
ADD FOREIGN KEY (Zip) REFERENCES REGIONS
8. Qiymatlarni tekshirish
Qiymat bo’yicha cheklovlar jadval yaratish vaqtida yoki yaratib bo’lingandan so’ng xam qo’yilishi mumkin. Buning uchun CHECK operatori ishlatiladi. Masalan, STAFF jadvali yaratish vaqtida uning Zip maydoni uchun quyidagicha cheklov kiritish mumkin:
CREATE TABLE
(...,
CHECK (Zip BETWEEN I AND 99999))
1. Endi bu buyruqni ALTER TABLE buyrug’i yordamida yaratamiz:
ALTER TABLE STAFF.
ADD CONSTRAINT INVALID ZIP CHECK (Zip BETWEEN 1 AND 99999)
2. Oylik maosh uchun cheklov kiritamiz:
ALTER TABLE STAFF
ADD CONSTRAINT INVALID SALARY CHECK (Salary >= 0)
Nomning qarama-qarshi ma’nosiga e’tibor bersak, cheklov uchun tanlangan nom (masalan, "INVALID ZIP" frazasi nomunosib pochta manzilini bildiradi
Ma’lumot berishdagi bunday nomlar foydalanuvchi o’rnatilgan cheklovning buzilganligi haqidagi muammoning manbaini aniqlay olishi uchun kerak
3. JOBS jadvali uchun cheklov kiritamiz. Undagi so’ngi ishlab turgan tashkilotni aniqlovchi maydon 0 yoki 1 qiymat qabul qilishi kerak:
ALTER TABLE JOBS
ADD CONSTRAINT INVALID CURORG CHECK (CurOrg IN ('1', '0'))
Do'stlaringiz bilan baham: |