کلید بیرونی

از ویکی‌پدیا، دانشنامهٔ آزاد
(تغییرمسیر از کلید خارجی)

یک کلید بیرونی (به انگلیسی: Foreign key) یا کلید خارجی در زمینه پایگاه‌داده رابطه‌ای، مجموعه‌ای از ویژگی‌ها می‌باشد که در معرض محدودیت‌های «وابستگی گنجایش» خاصی قرار دارند. به صورت خاص، یکی از این محدودیت‌ها آن است که چندتایی که شامل ویژگی‌های کلید بیرونی در یک رابطه با نام R است، باید حتماً در یک رابطه (نه لزوماً متفاوت) با نام S وجود داشته باشد، و بعلاوه این ویژگی‌ها باید حتماً یک کلید خواهان در رابطه S باشد.[۱][۲][۳] به زبان ساده‌تر، یک کلید بیرونی یک مجموعه شامل ویژگی‌ها است که یک کلید خواهان را ارجاع می‌دهد.

مثال[ویرایش]

برای مثال، یک جدول با نام TEAM (تیم) می‌تواند یک ویژگی با نام MEMBER_NAME (نام عضو) داشته باشد، که یک کلید بیرونی است که به یک کلید خواهان با نام PERSON_NAME (نام فرد) در جدول PERSON (فرد) ارجاع می‌کند. به دلیل آنکه ویژگی MEMBER_NAME یک کلید بیرونی است، هر مقداری که به عنوان نام یک عضو در جدول TEAM وجود دارد، باید حتماً در ویژگی نام فرد در جدول PERSON هم وجود داشته باشد؛ به زبان دیگر، هر عضو یک تیم (TEAM) یک انسان (PERSON) هم هست.

خلاصه[ویرایش]

به جدولی که شامل کلید بیرونی است، جدول فرزند گفته می‌شود، و به جدول شامل کلید نامزد، جدول ارجاع شده یا جدول والد گفته می‌شود.[۴] در مدل‌سازی و پیاده‌سازی پایگاه داده رابطه‌ای، یک «کلید خواهان» مجموعه‌ای شامل صفر یا بیشتر ویژگی است، که یکتایی مقدار آن برای هر چندتایی (ردیف) در یک رابطه تضمین شده‌است. مقدار یا ترکیب مقداری ویژگی‌های کلید خواهان برای یک چندتایی، نمی‌تواند برای هیچ‌کدام از چندتایی‌های دیگر در آن رابطه تکرار شود.

به دلیل آنکه هدف از یک کلید بیرونی تعیین یک ردیف خاص در جدول ارجاع داده شده‌است، معمولاً لازم است تا کلید بیرونی با مقدار کلید نامزد در ردیفی از جدول اصلی برابر باشد، در غیر این صورت باید مقدار تهی داشته باشد (مقدار NULL[۲]). به این قاعده، «محدودیت یکپارچگی ارجاع» بین دو جدول می‌گویند.[۵]

به دلیل آنکه تخلف از این محدودیت‌ها (یکپارچگی ارجاع) می‌تواند منبع بسیاری از مشکلات در پایگاه داده باشد، بیشتر سامانه‌های مدیریت پایگاه داده سازوکارهایی برای اطمینان از آنکه هر کلید بیرونی غیر تهی با یک ردیف در جدول ارجاع شده متناظر است، فراهم می‌بینند.[۶][۷][۸]

پانویس[ویرایش]

  1. Coronel, Carlos (2010). Database Systems: Design, Implementation, and Management. Independence KY: South-Western/Cengage Learning. p. 65. ISBN 978-0-538-74884-1.
  2. ۲٫۰ ۲٫۱ Elmasri, Ramez (2011). Fundamentals of Database Systems. Addison-Wesley. pp. 73–74. ISBN 978-0-13-608620-8.
  3. Date, C. J. (1996). A guide to the SQL standard. Addison-Wesley. p. 206. ISBN 978-0201964264.
  4. Sheldon, Robert (2005). Beginning MySQL. John Wiley & Sons. pp. 119–122. ISBN 0-7645-7950-9.
  5. "Database Basics — Foreign Keys". Retrieved 2010-03-13.
  6. MySQL AB (2006). MySQL Administrator's Guide and Language Reference. Sams Publishing. p. 40. ISBN 0-672-32870-4.
  7. Powell, Gavin (2004). Oracle SQL: Jumpstart with Examples. Elsevier. p. 11. ASIN B008IU3AHY.
  8. Mullins, Craig (2012). DB2 developer's guide. IBM Press. ASIN B007Y6K9TK.

منابع[ویرایش]