در پایگاه دادههای رابطهای، ارتباط بین جداول از اهمیت زیادی برخوردار است. یکی از مهمترین ابزارها برای برقراری این ارتباط، استفاده از کلید خارجی (Foreign Key) است. در این آموزش، به بررسی مفهوم کلید خارجی و نحوه ایجاد ارتباطات بین جداول در SQL میپردازیم.
مفهوم کلید خارجی (Foreign Key):
کلید خارجی، ستونی است که در یک جدول به عنوان مرجع یک کلید اصلی (Primary Key) از جدول دیگری استفاده میشود. این کار باعث برقراری ارتباط بین دادههای مرتبط در دو جدول میشود.
روشهای ایجاد کلید خارجی در اکسس:
ایجاد کلید خارجی با استفاده از دستورات 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 کلیک نمایید.
در صفحه بعد نام جدول والد که فیلد کلید خارجی به آن باید لینک شود را انتخاب نمایید و روی کلید Next کلیک نمایید.
در صفحه جدید نام فیلدی که میخواهید فیلد کلید به آن لینک شود را انتخاب نمایید. توجه داشته باشید که فیلد کلید باید به فیلد کلید اصلی یا فیلد ایندکس یکتا (unique) در جدول والد لینک گردد. همچنین حداقل دو فیلد از جدول والد را انتخاب نمایید. اکسس بصورت خودکار فیلد کلید را در جدول فرزند نمایش خواهد داد.
در صفحه بعدی میتوانید ترتیب نمایش فیلد کلید در جدول فرزند را مشخص نمایید.
در صفحه بعد میتوانید اندازه ستونهای مقادیر در دسترس را در هنگام نمایش در جدول فرزند تنظیم نمایید.
در صفحه آخر 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
بخواهید بیش از یک مشتری را برای یک سفارش خاص مرتبط کنید، میتوانید از این گزینه استفاده کنید.
بیشتر بخوانید
آموزش SQL در Microsoft Access: ایجاد/افزودن دادهها در جداول
آموزش SQL در Microsoft Access: شروعی آسان
آموزش SQL در Microsoft Access: کاربرد جزء WHERE در SQL
آموزش SQL در Microsoft Access: ساختار جدولها و نحوه ایجاد آنها
آموزش SQL در Microsoft Access: دستور SELECT و اجزاء مختلف آن