آموزش SQL: ارتباط بین جداول و کلید خارجی (Foreign Key)

در پایگاه‌ داده‌های رابطه‌ای، ارتباط بین جداول از اهمیت زیادی برخوردار است. یکی از مهم‌ترین ابزارها برای برقراری این ارتباط، استفاده از کلید خارجی (Foreign Key) است. در این آموزش، به بررسی مفهوم کلید خارجی و نحوه ایجاد ارتباطات بین جداول در SQL می‌پردازیم.

مفهوم کلید خارجی (Foreign Key):

کلید خارجی، ستونی است که در یک جدول به عنوان مرجع یک کلید اصلی (Primary Key) از جدول دیگری استفاده می‌شود. این کار باعث برقراری ارتباط بین داده‌های مرتبط در دو جدول می‌شود.

آیا می‌دانید:

یادگیری SQL در اکسس شما را قادر می‌سازد تا به راحتی داده‌ها را از جداول مختلف استخراج و تحلیل کنید. از مزایای استفاده از SQL در اکسس می‌توان به امکان طراحی کوئری‌های پیشرفته برای گزارش‌گیری اشاره کرد. SQL می‌تواند داده‌های پیچیده را فیلتر کرده و به شما کمک کند تا تحلیل‌های عمیق‌تری انجام دهید. همچنین، این زبان امکان ترکیب داده‌های مختلف و ایجاد گزارش‌های دقیق را در اختیار شما قرار می‌دهد که برای مدیریت بهتر داده‌ها بسیار مفید است.

روش‌های ایجاد کلید خارجی در اکسس:

ایجاد کلید خارجی با استفاده از دستورات SQL

افزودن کلید خارجی با دستور CREATE TABLE هنگام ایجاد جدول

ایجاد یک کلید خارجی در SQL همزمان با ایجاد جدول با دستور CREATE TABLE و FOREIGN KEY امکان‌پذیر است. کد زیر نحوه ایجاد کلید خارجی هنگام ایجاد یک جدول را نمایش می‌دهد. این کد یک جدول جدید بنام Orders و یک کلید خارجی برای ارتباط این جدول با جدول Customers روی ستون CustomerID ایجاد می‌نماید.

CREATE TABLE Orders (
    OrderID int NOT NULL,            
    CustomerID int,                  
    OrderDate datetime,              
    TotalAmount currency,            
    OrderStatus varchar(50),         
    PRIMARY KEY (OrderID),           
    FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);

در ویدیوی زیر می‌توانید نحوه ایجاد یک جدول با استفاده از دستور CREATE TABLE در SQL و افزودن یک کلید خارجی برای این جدول را مشاهده نمایید.

افزودن کلید خارجی با دستور ALTER TABLE

در مایکروسافت Access نیز مانند سایر پلتفرم‌های SQL می‌توانید از دستور ALTER TABLE برای تعریف کلید خارجی استفاده کنید. کد زیر یک کلید خارجی بر روی ستون CustomerID در جدول Orders ایجاد می‌کند:

ALTER TABLE Orders
ADD CONSTRAINT FK_CustomerOrder
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID);

ایجاد کلید خارجی با استفاده نمای Table Design در مایکروسافت Access

در مایکروسافت Access می‌توانیم در نمای Table Design نیز کلید خارجی را به یک جدول اضافه کنیم. برای این منظور در نمای Table Design در ستون Data Type فیلد مورد نظر برای نوع داده فیلد گزینه Lookup Wizard… را انتخاب نمایید تا صفحه Lookup Wizard باز گردد.

مطابق تصویر زیر گزینه اول «I want the lookup field to get the values from another table or query» را انتخاب نمایید و روی کلید Next کلیک نمایید.

lookup wizard در نمای Table Design اکسس

در صفحه بعد نام جدول والد که فیلد کلید خارجی به آن باید لینک شود را انتخاب نمایید و روی کلید Next کلیک نمایید.

انتخاب جدول والد در lookup wizard

در صفحه جدید نام فیلدی که می‌خواهید فیلد کلید به آن لینک شود را انتخاب نمایید. توجه داشته باشید که فیلد کلید باید به فیلد کلید اصلی یا فیلد ایندکس یکتا (unique) در جدول والد لینک گردد. همچنین حداقل دو فیلد از جدول والد را انتخاب نمایید. اکسس بصورت خودکار فیلد کلید را در جدول فرزند نمایش خواهد داد.

انتخاب فیلدهای جدول والد در lookup wizard

در صفحه بعدی می‌توانید ترتیب نمایش فیلد کلید در جدول فرزند را مشخص نمایید.

ترتیب نمایش فیلدهای جدول والد در lookup wizard

در صفحه بعد می‌توانید اندازه ستون‌های مقادیر در دسترس را در هنگام نمایش در جدول فرزند تنظیم نمایید.

تنظیم اندازه ستون‌های مقادیر در دسترس جدول والد در lookup wizard

در صفحه آخر Lookup Wizard سه تنظیم نهایی به شرح زیر در دسترس می‌باشد.

  • نام کلید خارجی «What label would you like for your lookup field»
  • فعال کردن یکپارچگی داده ها یا Enable Data Integrity
  • قبول مقادیر تکراری یا Allow Multiple Values

در ادامه هر کدام از این تنظیمات توضیح داده می‌شود:

یکپارچگی داده ها یا Data Integrity

وظیفه اصلی این گزینه با حفظ یکپارچگی داده‌ها بین دو جدول مرتبط است. وقتی این گزینه فعال می‌شود، Access از وجود مقادیر معتبر در فیلدهای کلید خارجی اطمینان حاصل می‌کند و از حذف یا تغییر داده‌هایی که باعث خراب شدن ارتباطات بین جداول می‌شوند، جلوگیری می‌کند.

کاربرد این گزینه این است که زمانی که یک رکورد در جدول والد (مثلاً Customers) تغییر کند یا حذف شود، تضمین کند که اطلاعات مرتبط در جدول دیگری (مثلاً Orders) نیز به‌درستی مدیریت شوند.

این گزینه شامل دو تنظیم زیر می‌باشد:

  • Cascade Delete: اگر رکوردی در جدول اصلی حذف شود، رکوردهای مرتبط با آن در جدول دیگر هم حذف می‌شوند.
  • Restrict Delete: اجازه نمی‌دهد رکوردی از جدول اصلی حذف شود، اگر رکوردهای مرتبط در جدول فرعی وجود داشته باشند.

مثال: اگر یک مشتری در جدول Customers حذف شود و کلید خارجی در جدول Orders وجود داشته باشد، با فعال بودن گزینه “یکپارچگی داده‌ها”، Access تعیین می‌کند که آیا رکوردهای مرتبط در جدول Orders باید حذف شوند یا این حذف باید محدود شود.

Allow Multiple Values (اجازه به مقادیر چندگانه):

وظیفه اصلی این گزینه این است که به شما امکان را می‌دهد که در یک فیلد Lookup، بیش از یک مقدار از جدول دیگر را انتخاب کنید. این گزینه به شما اجازه می‌دهد که یک فیلد را به صورت یک لیست انتخابی با چندین انتخاب در نظر بگیرید.

کاربرد این گزینه زمانی است که برای یک رکورد در جدول فعلی، چندین رکورد از جدول دیگر را انتخاب کنید. برای مثال، اگر در یک سفارش، چندین محصول از جدول Products وجود داشته باشد، می‌توانید از این گزینه استفاده کنید.

این قابلیت برای مواقعی که نیاز است یک فیلد چندین مقدار را در خود نگه دارد، مناسب است. داده‌ها در پس‌زمینه به‌صورت مجموعه‌ای ذخیره می‌شوند و می‌توان از آن‌ها برای نمایش چندین انتخاب استفاده کرد.

توجه داشته باشید که این گزینه به خودی خود به ایجاد کلید خارجی مربوط نمی‌شود. وقتی این گزینه فعال می‌شود، شما به یک فیلد اجازه می‌دهید که چندین مقدار را از جدول دیگر ذخیره کند، اما این موضوع به معنای تعریف یک کلید خارجی نیست. اگر شما یک فیلد با مقادیر چندگانه داشته باشید، این فیلد نمی‌تواند به‌عنوان یک کلید خارجی عمل کند. کلید خارجی باید به یک رکورد خاص در جدول اصلی ارجاع دهد و نمی‌تواند به چندین رکورد به طور هم‌زمان اشاره کند.

مثال: اگر در جدول Orders بخواهید بیش از یک مشتری را برای یک سفارش خاص مرتبط کنید، می‌توانید از این گزینه استفاده کنید.

دیدگاهتان را بنویسید