Junior
Ulashli ma'lumotlar bazalarida jadvallar o'rtasidagi bog'lanishlar qanday sozlanadi?
sobes.tech AI
AIdan javob
Relatsion bazalarda jadvallar o'rtasidagi bog'lanishlar tashqi kalitlar (Foreign Keys) yordamida sozlanadi.
Tashqi kalit — bu bir jadvaldagi ustun yoki ustunlar to'plami bo'lib, boshqa jadvalning birinchi kaliti (Primary Key)ga murojaat qiladi. U ikki jadvaldagi yozuvlar o'rtasida mantiqiy bog'lanishni o'rnatadi.
Bog'lanishni sozlashda:
- "Ota" (Parent) jadvalida birinchi kalit (Primary Key) aniqlanadi. Bu kalit har bir yozuvni yagona tarzda identifikatsiya qiladi.
- "O'g'il" (Child) jadvalida, tashqi kalit sifatida xizmat qiladigan ustun (yoki ustunlar to'plami) yaratiladi.
- Bu ustun "ota" jadvaldagi birinchi kalitga bog'lanadi.
- Ma'lumotlarning yaxlitligini ta'minlash cheklovlari (Constraint) o'rnatiladi:
- REFERENCES: Tashqi kalit qaysi jadval va ustunga murojaat qilayotganini ko'rsatadi.
- ON UPDATE behavior: Ota jadvaldagi birinchi kalit o'zgartirilganda, o'g'il jadvaldagi yozuvlar bilan nima bo'lishini belgilaydi. Variantlar:
CASCADE: O'zgartishlar zanjir bo'lib, barcha bog'langan yozuvlarga tatbiq etiladi.SET NULL: Tashqi kalit qiymatlari NULL ga o'rnatiladi.RESTRICT: O'zgartirish taqiqlanadi, agar bog'langan yozuvlar mavjud bo'lsa.NO ACTION: Ko'pgina SGBDlarda RESTRICT ga o'xshash.SET DEFAULT: Tashqi kalit qiymatlari standart qiymatga o'rnatiladi.
- ON DELETE behavior: Ota jadvaldagi yozuv o'chirilganda, bog'langan yozuvlar bilan nima bo'lishini belgilaydi. Variantlar
ON UPDATEbilan bir xil.
Bog'lanishni yaratish uchun SQL sintaksis misoli:
CREATE TABLE Customers (
customer_id INT PRIMARY KEY, -- Mijozlar jadvalidagi birinchi kalit
customer_name VARCHAR(255)
);
CREATE TABLE Orders (
order_id INT PRIMARY KEY,
customer_id INT, -- Tashqi kalit, Customers jadvalidagi customer_id ga murojaat qiladi
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES Customers(customer_id)
ON UPDATE CASCADE -- Customer_id o'zgartirilganda, Orders jadvalida ham yangilanadi
ON DELETE CASCADE -- Mijoz o'chirilganda, uning buyurtmalari ham o'chiriladi
);
Jadvallar o'rtasidagi bog'lanish turlari:
| Bog'lanish turi | Tavsifi | Misol |
|---|---|---|
| Bir-birga (1:1) | Birinchi jadvaldagi yozuv, ikkinchi jadvalda ham faqat bitta yozuv bilan mos keladi. Relatsion bazalarda kam uchraydi. | Foydalanuvchi va uning profili. |
| Bir-ko'p (1:N) | Birinchi jadvaldagi yozuv, ikkinchi jadvalda ko'plab yozuvlar bilan mos keladi, lekin ikkinchi jadvaldagi har bir yozuv faqat birinchi bilan mos keladi. | Mijoz va uning buyurtmalari. |
| Ko'p-kup (N:M) | Birinchi jadvaldagi ko'plab yozuvlar, ikkinchi jadvalda ham ko'plab yozuvlar bilan mos keladi. Bu, o'rta (bog'lovchi) jadval orqali amalga oshiriladi. | Mahsulotlar va kategoriyalar. |
Many-to-Many bog'lanish uchun, ikkala jadvalga ham tashqi kalitlar bilan bog'langan uchinchi jadval yaratiladi.
CREATE TABLE Products (
product_id INT PRIMARY KEY,
product_name VARCHAR(255)
);
CREATE TABLE Categories (
category_id INT PRIMARY KEY,
category_name VARCHAR(255)
);
CREATE TABLE ProductCategories ( -- Bog'lanish jadvali
product_id INT,
category_id INT,
PRIMARY KEY (product_id, category_id), -- Birgalikda asosiy kalit
FOREIGN KEY (product_id) REFERENCES Products(product_id),
FOREIGN KEY (category_id) REFERENCES Categories(category_id)
);