Xarici açar (ing. foreign key) — SQL verilənlər bazalarında bir cədvəldəki bir sütunun (və ya bir neçə sütunun) başqa bir cədvəlin bir sütunu ilə əlaqəli olduğunu göstərən bir məhdudiyyətdir.[1][2]

Xarici açarlar, verilənlər bazasında cədvəllər arasındakı əlaqələri müəyyən etmək və bu əlaqələrin düzgünlüyünü qorumaq üçün istifadə olunur. Onlar verilənlər bazasında məlumatların bütövlüyünü təmin etməyə kömək edir.[3]

Əsas funksiyaları

redaktə
  1. Məlumatlar arasında əlaqə — xarici açar bir cədvəldəki məlumatı başqa bir cədvəldəki məlumatla əlaqələndirir. Məsələn, bir məhsul cədvəli və bir kateqoriya cədvəli varsa, məhsul cədvəlindəki category_id sütunu xarici açar kimi təyin edilə bilər ki, bu da onu kateqoriya cədvəlindəki id sütunu ilə əlaqələndirir.[4]
  2. Referensial bütövlük — xarici açarların əsas vəzifəsi referensial bütövlüyü qorumaqdır. Bu, o deməkdir ki, xarici açarın istinad etdiyi dəyər əsas cədvəldə mövcud olmalıdır. Məsələn, əgər məhsul cədvəlində bir category_id varsa, bu dəyər kateqoriya cədvəlindəki id sütununda mövcud olmalıdır.[5]

Əməliyyat məhdudiyyətləri

redaktə
  • ON DELETE — əsas cədvəldən bir qeydi sildikdə xarici açara malik qeydlərlə nə baş verəcəyini idarə edir. Məsələn:
  • CASCADE — əsas qeydi silərkən əlaqəli xarici açar qeydləri də avtomatik olaraq silinir.
  • SET NULL — əsas qeydi silərkən əlaqəli xarici açar dəyəri NULL-a təyin olunur.[6][7]
  • RESTRICT — əsas qeydi silmək qadağan olunur, əgər ona bağlı xarici açar qeydləri varsa.
  • ON UPDATE — əsas qeydin dəyərini yeniləyərkən xarici açar qeydlərinin necə yenilənəcəyini idarə edir. Oxşar olaraq CASCADE, SET NULL, və RESTRICT kimi seçimlər mövcuddur.[8]

Açarın yaradılması

redaktə

Bir cədvəldə xarici açar yaratmaq üçün SQL-də FOREIGN KEY ifadəsi istifadə olunur. Məsələn, orders (sifarişlər) cədvəli və customers (müştərilər) cədvəli arasında əlaqə yaratmaq üçün aşağıdakı sintaksisdən istifadə olunur:[9]

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    order_date DATE,
    customer_id INT,
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

Bu misalda, orders cədvəlindəki customer_id sütunu xarici açar kimi təyin olunur və bu, customers cədvəlindəki customer_id sütununa istinad edir.[10]

Açarların əhəmiyyəti

redaktə
  • Verilənlər bazasında məlumatların tamlığını təmin edir.
  • Müxtəlif cədvəllər arasında loji əlaqələr qurur.
  • Məlumatların təkrarını azaldır və referensial bütövlüyü qoruyur.

Xarici açarlar cədvəllər arasında əlaqələrin düzgün və məntiqli olmasını təmin edir.

İstinadlar

redaktə
  1. Coronel, Carlos. Database Systems: Design, Implementation, and Management. Independence KY: South-Western/Cengage Learning. 2010. səh. 65. ISBN 978-0-538-74884-1.
  2. Elmasri, Ramez. Fundamentals of Database Systems. Addison-Wesley. 2011. 73–74. ISBN 978-0-13-608620-8.
  3. Date, C. J. A guide to the SQL standard. Addison-Wesley. 1996. səh. 206. ISBN 978-0201964264.
  4. "Database Basics — Foreign Keys". 2010-01-10 tarixində arxivləşdirilib. İstifadə tarixi: 2010-03-13.
  5. Sheldon, Robert. Beginning MySQL. John Wiley & Sons. 2005. 119–122. ISBN 0-7645-7950-9.
  6. MySQL AB. MySQL Administrator's Guide and Language Reference. Sams Publishing. 2006. səh. 40. ISBN 0-672-32870-4.
  7. Powell, Gavin. Oracle SQL: Jumpstart with Examples. Elsevier. 2004. səh. 11. ASIN B008IU3AHY.
  8. Mullins, Craig. DB2 developer's guide. IBM Press. 2012. ASIN B007Y6K9TK.
  9. Garcia-Molina, Hector. Database Systems: The Complete Book. Prentice Hall. 2009. 93–95. ISBN 978-0-13-187325-4.
  10. Sheldon, Robert. Beginning MySQL. John Wiley & Sons. 2005. səh. 156. ISBN 0-7645-7950-9.

Xarici keçidlər

redaktə