Sobes.tech
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ı:

  1. "Valideyn" (Parent) cədvəldə birincil açar müəyyən edilir. Bu, hər bir qeydi unikal şəkildə tanıyır.
  2. "Uşaq" (Child) cədvəldə xarici açar kimi xidmət edəcək sütun (və ya sütunlar) yaradılır.
  3. Bu sütun "valideyn" cədvəldəki birincil açara istinad edir.
  4. 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 UPDATE ilə 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)
);