کلید خارجی پایگاه داده چیست؟ یک آموزش مبتدی

این مقاله توسط بریتنی پارکر، نویسنده ای برای دختران فناوری نوشتن، که در زمینه نوشتن محتوای فنی تخصص دارند. هدف آنها تشویق بیشتر توسعه دهندگان زن به اشتراک گذاری دانش خود است.
انواع و ساختارهای داده در دنیای پایگاه داده بسیار زیاد است، و تعیین اینکه کدام یک از آنها استفاده شود اغلب موضوعی داغ است. درک کلیدهای مختلف می تواند به شما کمک کند تا ببینید چگونه می توانید یک سیستم خاص را برای نیازهای منحصر به فرد خود به بهترین وجه استفاده کنید.
همانطور که پیچیدگی ساختارهای داده در حال تکامل است، پایگاههای داده به پایگاههای اطلاعاتی رابطهای و پایگاههای داده چندوجهی که امروزه بیشتر مورد استفاده قرار میگیرند تغییر یافتهاند. اکنون میتوانیم جداول مختلف را با استفاده از کلیدهای خارجی به صورت معنادار مرتبط کنیم.
کلید خارجی یک ستون (یا گروهی از ستونها) است که در a استفاده میشود پایگاه داده رابطه ای برای پیوند داده ها بین جداول. سرورهای کلید خارجی برای ارجاع به کلید اصلی جدول موجود دیگر.
امروز این آموزش شما را با کلیدهای خارجی آشنا می کند و نحوه استفاده از آنها را در SQL به شما نشان می دهد.
خواهیم آموخت:
کلید خارجی در پایگاه داده چیست؟
کلیدهای خارجی در یک پایگاه داده به عنوان یک جزء مشترک ساختار یافته اند اتصال دو جدول به هم. یک کلید خارجی همیشه باید به یک کلید اصلی در جای دیگری ارجاع دهد.
جدول اصلی نامیده می شود جدول والدین یا جدول مرجع، و جدول مرجع با کلید خارجی a نامیده می شود میز کودک.
مراجع کلید خارجی در یک جدول فرزند ذخیره می شوند و به یک کلید اصلی در یک جدول جداگانه پیوند می دهند.
ستونی که به عنوان یک کلید خارجی عمل می کند باید مقدار مربوطه را در جدول پیوندی خود داشته باشد. این ایجاد می کند یکپارچگی ارجاعی.
هنگام ایجاد جداول یا تغییر جداول (مانند درج یا حذف داده ها از ستون کلید خارجی) باید مراقب باشیم تا از تغییر یا از بین بردن پیوند بین آنها جلوگیری کنیم.
فرض کنید ما دو جدول به نام داریم customer
و order
. ما می توانیم از یک کلید خارجی برای ایجاد رابطه بین آنها استفاده کنیم. در orders
جدول، کلیدی ایجاد می کنیم که به مشتری ارجاع می دهد (یعنی CUSTOMER_ID
) در جدول دیگر.
را CUSTOMER_ID
در جدول سفارش تبدیل به کلید خارجی که به کلیدهای والد یا اصلی در جدول مشتری ارجاع می دهد.
توجه داشته باشید: برای درج یک ورودی در جدول سفارش، محدودیت کلید خارجی باید برآورده شود.
اگر بخواهیم ورودی را وارد کنیم CUSTOMER_ID
با استفاده از داده هایی که در جدول مشتری وجود ندارد، به یکپارچگی قدرت های ارجاعی جدول آسیب رسانده ایم.
محدودیت FK
پل زدن دقیق داده ها یک دستورالعمل اصلی است. ادغام نرم افزار و توانایی به اشتراک گذاری ایمن داده ها بین برنامه ها همه به یکپارچگی داده ها و روابط پایگاه داده بستگی دارد.
اینجاست که محدودیت وارد میشود. کلیدهای خارجی اغلب برای اطمینان از اینکه کاربر نمیتواند اقداماتی را انجام دهد که به پیوندهای وابستگی بین جداول آسیب میزند، محدود میشوند. این همچنین کاربران را از وارد کردن داده های نامعتبر محدود می کند.
ما می توانیم از مهارهای کلید خارجی برای کمک استفاده کنیم حفظ یکپارچگی ارجاعی روابط کلیدی خارجی ما اقدامات ارجاعی زیادی وجود دارد که می توانیم برای محدودیت استفاده کنیم، از جمله:
-
آبشار: هنگام حذف مقادیر کلید اصلی، ستون منطبق در جدول فرزند حذف می شود
-
null را تنظیم کنید: هنگامی که یک ردیف ارجاع داده شده حذف/تغییر میشود، مقادیر ارجاع در کلید خارجی روی صفر تنظیم میشوند.
-
محدود کردن: مقادیر موجود در جدول والد در صورتی که توسط یک کلید خارجی ارجاع داده شوند قابل حذف نیستند.
-
مجموعه پیش فرض: اگر جدول والد تغییر/حذف شود، مقادیر کلید خارجی در جدول فرزند روی یک مقدار پیشفرض تنظیم میشوند.
وقتی صحبت از نامگذاری محدودیت کلید خارجی می شود، باید این قوانین کلی را دنبال کنیم:
- را
CONSTRAINT
مقدار نماد استفاده می شود و باید در پایگاه داده منحصر به فرد باشد. - برای جداول InnoDB، اگر بند نماد محدودیت تعریف نشده باشد، نام محدودیت به طور خودکار تولید می شود.
- برای جداول NDB،
FOREIGN KEY index_name
مقدار استفاده می شود، یا یک نام محدودیت به طور خودکار تولید می شود.
کلید خارجی در مقابل کلید اصلی
برخلاف یک کلید خارجی، یک کلید اولیه در یک پایگاه داده رابطه ای کار می کند سوابق خاص را منحصر به فرد شناسایی کنید. کلیدهای اصلی باید منحصر به جدول باشند و اغلب به عنوان یک نقطه مرجع مطلق برای انواع دیگر کلیدهای پایگاه داده استفاده می شوند.
کلیدهای خارجی بیشتر به عنوان یک پیوند استفاده می شوند تا به عنوان یک شناسه منحصر به فرد یک ردیف یا رکورد خاص.
در حالی که چندین کلید خارجی را می توان در یک جدول خاص یا پایگاه داده رابطه ای استفاده کرد، تنها یک کلید اصلی در هر پایگاه داده مجاز است. مقادیر تکراری برای کلیدهای خارجی و همچنین مقادیر null مجاز هستند.
مقادیر تهی برای کلیدهای اصلی مجاز نیستند و ارجاع به کلیدهای اصلی در جدول باید قبل از حذف ردیف/رکورد کلید اصلی حذف شوند.
کلید خارجی در مقابل کلید ترکیبی
کلیدهای ترکیبی در یک پایگاه داده رابطه ای برای ترکیب دو یا چند ستون در a استفاده می شود جدول خاص، ایجاد یک شناسه منحصر به فرد برای آن ترکیب از ستون ها.
در حالی که از نظر فنی یک کلید کاندید به عنوان کلید ترکیبی منحصر به فرد بودن را تأیید می کند، کلیدهای ترکیبی تنها زمانی تشکیل می شوند که ستون یا ستون های خاص در ترکیب با یکدیگر استفاده شوند.
مانند کلیدهای خارجی، کلیدهای ترکیبی را می توان برای پیوند دادن چندین جدول به یکدیگر در یک پایگاه داده رابطه ای استفاده کرد. برخلاف کلیدهای خارجی، کلیدهای ترکیبی را می توان به عنوان کلید اصلی در هنگام ایجاد برخی جداول SQL تعریف کرد.
اقدامات مرجع کلید خارجی
یکپارچگی ارجاع توسط کلیدهای خارجی محدود می شود و اطمینان حاصل می کند که مقادیر موجود در یک جدول خاص با مقادیر موجود در جدول دیگری مطابقت دارند.
این اقدامات ارجاعی یکپارچگی ساختار جدول را تقویت میکند و با اطمینان از اینکه ستونهای ارجاعشده فقط دارای مجموعههای منحصربهفردی از مقادیر هستند، احتمال خطا را کاهش میدهند.
کلیدهای خارجی نیز می توانند مقادیر تهی را بپذیرند، اما توجه به این نکته مهم است که این ممکن است توانایی آنها را برای محافظت از یکپارچگی ستون ارجاع شده محدود کند، زیرا مقادیر null بررسی نمی شوند.
نکته: بهترین شیوه ها نشان دهنده استفاده از a
NOT NULL
محدودیت هنگام ایجاد کلیدهای خارجی برای حفظ یکپارچگی ساختاری پایگاه داده.
با افزایش پیچیدگی و حجم داده، ایجاد یک ساختار داده که به اندازه کافی انعطاف پذیر و قابل گسترش برای استفاده طولانی مدت باشد، می تواند به طور فزاینده ای دشوار شود. افزودن داده های بدون ساختار به راحتی می تواند منجر به خطا شود.
کلیدهای خارجی جزء بسیار ارزشمندی هستند که به شما کمک می کند تا اطمینان حاصل کنید که پایگاه داده شما شفاف، سازگار و قادر به ارائه سریع نتایج دقیق است.
کلیدهای خارجی در SQL و MySQL
بیایید نگاهی به نحوی با استفاده از SQL و MySQL بیندازیم. مثال زیر یک کلید خارجی در ستون “PersonID” ایجاد می کند.
در اینجا درباره انواع مختلف پایگاه داده اطلاعات بیشتری کسب کنید
MySQL:
CREATE TABLE Orders (
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);
SQL Server:
CREATE TABLE Orders (
OrderID int NOT NULL PRIMARY KEY,
OrderNumber int NOT NULL,
PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);
دستور زیر به ما اجازه می دهد تا محدودیت FOREIGN KEY را نامگذاری کنیم:
CREATE TABLE Orders (
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID)
);
مثال دنیای واقعی SQL
حالا بیایید دقیق تر صحبت کنیم. زیر Actors
جدول، جدول مرجع است و جدول والد نامیده می شود. اینجا، جدول مرجع DigitalAssets
میز کودک است
تنها در صورتی ستونی را به عنوان کلید خارجی در جدول فرزند اعلام می کنیم که ستون دارای شاخصی بر روی آن باشد. اگر ستون شاخصی نداشته باشد، نمی توان از آن به عنوان کلید خارجی استفاده کرد.
برای مثال، ما خود را تغییر می دهیم DigitalAssets
و تنظیم کنید ActorID
ستون به عنوان کلید خارجی به شرح زیر است:
ALTER TABLE DigitalAssets
ADD FOREIGN KEY (ActorId)
REFERENCES Actors(Id);
حال اگر یک ردیف در آن اضافه کنیم DigitalAssets
جدول با شناسه بازیگر که در آن وجود ندارد Actors
جدول، یک خطا گزارش شده است:
INSERT INTO DigitalAssets
VALUES ("www.dummy.url", "instagram", "2030-01-01 00:00:00", 100);
همچنین میتوانیم یک محدودیت کلید خارجی در خود جدول ایجاد کنیم. به عنوان مثال، این می تواند یک جدول کارکنان با ستونی برای شناسایی مدیر باشد. از آنجایی که مدیر نیز یک کارمند است، ردیفی که آنها را شناسایی می کند نیز وجود خواهد داشت.
شناسه مدیر به شناسه کارمند در همان ستون اشاره می کند و شناسه کارمند به عنوان یک کلید خارجی عمل می کند.
بعد چه چیزی یاد بگیریم
تبریک میگم اکنون باید ایده خوبی داشته باشید که چگونه کلیدهای خارجی می توانند در پایگاه داده های خود استفاده شوند تا آنها را مفیدتر و ایمن تر کنید. هنوز چیزهای زیادی برای یادگیری وجود دارد. بعد، شما باید بررسی کنید:
- محدودیت های کلید خارجی را کنار بگذارید
- کلید خارجی SQL در جدول تغییر
- محرک ها
- کلیدهای خارجی با MariaDB
برای شروع با این مفاهیم، دوره آموزشی Educative را بررسی کنید اصول طراحی پایگاه داده برای مهندسین نرم افزار آشنایی با مفاهیم اساسی پایگاه های داده شما یاد خواهید گرفت که چرا و چه زمانی از آنها استفاده می شود، پایگاه داده های رابطه ای چیست و نمودارهای موجودیت-رابطه.
اگر قبلاً تجربه ای با پایگاه داده دارید، دوره آموزشی راهنمای مقدماتی SQL یک قدم عالی دیگر است شما اصول اولیه SQL مانند نحوه ایجاد پایگاه داده، نحوه درج، پرس و جو و به روز رسانی داده ها را خواهید آموخت.
یادگیری مبارک!
به خواندن در مورد پایگاه داده ها و SQL در Educative ادامه دهید
بحثی را شروع کنید
مورد مورد علاقه شما از استفاده از داده در دنیای امروز چیست؟ این مقاله به شما کمک کرد؟ در قسمت نظرات پایین ما را آگاه کنید!