Junior
Əlaqəli verilənlər bazalarında cədvəllər arasındakı əlaqələr necə qurulur?
sobes.tech Süni İntellekt
AI-dan cavab
Əlaqələr cədvəllər arasında xarici açar (Foreign Keys) vasitəsilə qurulur.
Xarici açar — bu, bir cədvəldəki sütun və ya sütunlar toplusudur ki, digər cədvəldəki birincil açara (Primary Key) istinad edir. Bu, iki cədvəldəki qeydlər arasında məntiqi əlaqə yaradır.
Əlaqənin qurulması zamanı:
- "Valideyn" (Parent) cədvəldə birincil açar müəyyən edilir. Bu, hər bir qeydi unikal şəkildə tanıyır.
- "Uşaq" (Child) cədvəldə xarici açar kimi xidmət edəcək sütun (və ya sütunlar) yaradılır.
- Bu sütun "valideyn" cədvəldəki birincil açara istinad edir.
- Məlumatların bütövlüyü üçün məhdudiyyətlər (Constraint) qoyulur:
- REFERENCES: Xarici açarın hansı cədvələ və hansı sütuna (birincil açar) istinad etdiyini göstərir.
- ON UPDATE davranışı: Birincil açar dəyişdirildikdə uşaq cədvəldə nə baş verəcəyini müəyyən edir. Variantlar:
CASCADE: Dəyişikliklər uşaq qeydlərinə də tətbiq olunur.SET NULL: Xarici açar dəyərləri NULL olur.RESTRICT: Əgər əlaqəli uşaq qeydlər varsa, dəyişiklik qadağan olunur.NO ACTION: Əksər DBMS-də RESTRICT kimi davranır.SET DEFAULT: Dəyər əvvəlcədən təyin olunmuş default dəyərə dəyişir.
- ON DELETE davranışı: Valideyn qeydi silindikdə uşaq qeydlərinə nə baş verəcək. Variantlar
ON UPDATEilə eynidir.
SQL sintaksisi nümunəsi:
CREATE TABLE Customers (
customer_id INT PRIMARY KEY, // Müştəri cədvəlində birincil açar
customer_name VARCHAR(255)
);
CREATE TABLE Orders (
order_id INT PRIMARY KEY,
customer_id INT, // Xarici açar, Customers cədvəlindəki customer_id-ə istinad edir
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES Customers(customer_id)
ON UPDATE CASCADE // Müştəri ID dəyişdikdə, Orders-də də dəyişəcək
ON DELETE CASCADE // Müştəri silindikdə, əlaqəli sifarişlər də silinəcək
);
Cədvəllər arasındakı əlaqə növləri:
| Əlaqə növü | Təsviri | Nümunə |
|---|---|---|
| One-to-One (1:1) | Birinci cədvəldəki bir qeyd ikinci cədvəldəki bir qeydə uyğun gəlir və əksinə. Rəqəmsal olaraq az rast gəlinir. | İstifadəçi və onun profili. |
| One-to-Many (1:N) | Birinci cədvəldəki bir qeyd ikinci cədvəldə çoxsaylı qeydlərə uyğun gəlir, amma ikinci cədvəldəki hər qeyd yalnız bir birinə uyğundur. | Müştəri və onun sifarişləri. |
| Many-to-Many (N:M) | Birinci cədvəldəki çoxsaylı qeydlər ikinci cədvəldəki çoxsaylı qeydlərə uyğun gəlir və əksinə. Bu, vasitəçi (aralıq) cədvəl vasitəsilə həyata keçirilir. | Məhsullar və kateqoriyalar. |
Many-to-Many əlaqəsi üçün üçüncü, vasitəçi cədvəl yaradılır və hər iki cədvələ xarici açar kimi daxil edilir.
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 ( // Vasitəçi cədvəl
product_id INT,
category_id INT,
PRIMARY KEY (product_id, category_id), // Birləşmiş birincil açar
FOREIGN KEY (product_id) REFERENCES Products(product_id),
FOREIGN KEY (category_id) REFERENCES Categories(category_id)
);