یکی از مهمترین مفاهیم در پایگاههای داده، ایجاد ارتباط بین جداول پایگاه داده است. این روابط یک مکانیسم برای ارتباط داده ها ذخیره شده در چندین جدول و بازیابی آن را به صورت موثر فراهم می کند. برای ایجاد یک لینک بین دو جدول، باید یک کلید خارجی را در یک جدول مشخص کنید که ستون را در یک جدول دیگر ارجاع می دهد.
جداول پایگاه داده و روابط
شما ممکن است قبلا بدانید که پایگاه داده ها به سادگی مجموعه ای از جداول هستند که مشابه آنچه شما قبلا در یک برنامه صفحات گسترده مانند مایکروسافت اکسل استفاده می کنید. در واقع، شما حتی می توانید یک صفحه گسترده اکسل را به یک پایگاه داده تبدیل کنید. با این وجود، زمانی که پایگاههای اطلاعاتی از صفحات گسترده جدا میشوند، زمانیکه به ایجاد روابط قدرتمند میان جداول میپردازند.
برای مثال، یک پایگاه داده که توسط یک شرکت برای ردیابی اطلاعات منابع انسانی استفاده می شود را در نظر بگیرید. این پایگاه داده ممکن است یک جدول به نام کارمندان داشته باشد که شامل اطلاعات زیر برای هر عضو کارکنان شرکت می شود:
- شناسه کارمند
- نام کوچک
- نام خانوادگی
- تلفن دفتر
- تلفن منزل
- PositionID
در این مثال، شناسه کارمند یک عدد صحیح منحصر به فرد ایجاد شده است که به هر کارمند اختصاص داده می شود وقتی که آنها به پایگاه داده اضافه می شوند. شناسه موقعیت یک کد شغلی است که برای ارزیابی وضعیت کارمند شرکت استفاده می شود. در این طرح، یک کارمند تنها ممکن است یک موقعیت داشته باشد، اما کارکنان چند (یا نه) ممکن است هر موقعیت را پر کنند. به عنوان مثال، شما ممکن است صدها نفر از کارکنان با موقعیت "صندوق" داشته باشد.
پایگاه داده همچنین ممکن است یک جدول با نام Positions با اطلاعات اضافی زیر در مورد هر موقعیتی داشته باشد:
- PositionID
- عنوان
- سطح شغلی
- SkillCategory
- محل
فیلد Position ID در این جدول شبیه فیلد Employee ID در جدول Employees است - یک عدد صحیح منحصر به فرد ایجاد شده است که زمانی ایجاد می شود که یک موقعیت به پایگاه داده اضافه شود.
هنگامی که ما می خواهیم فهرستی از کارکنان را از پایگاه داده بکشیم، طبیعی است که از نام هر فرد و عنوان خود درخواست شود. با این حال، این اطلاعات در جداول پایگاه های مختلف ذخیره می شود، بنابراین می توان آن را فقط با استفاده از یک پرس و جو JOIN بازیابی کرد که نیاز به روابط موجود بین جداول دارد.
هنگامی که شما به ساختار جداول نگاه می کنید، میدان تعریف رابطه احتمالا واضح است - فیلد موقعیت ID. هر کارمند می تواند تنها یک موقعیت داشته باشد و این موقعیت با شناسه موقعیت از طریق ورودی مربوط به جدول موقعیت ها شناسایی می شود. علاوه بر اینکه کلید اولیه برای جدول موقعیت ها است، در این مثال، فیلد موقعیت ID نیز یک کلید خارجی از جدول کارکنان به جدول موقعیت ها است. پس از آن بانک اطلاعاتی می تواند از این فیلد برای ارتباط اطلاعات از جداول متعدد استفاده کند و اطمینان حاصل کند که هر گونه تغییر یا افزودن به پایگاه داده همچنان به اجرای یکپارچگی ارجاعی ادامه می دهد.
هنگامی که کلید خارجی را شناسایی کرده اید، می توانید پیش بروید و اطلاعات مورد نظر را از پایگاه داده با استفاده از پرس و جو زیر بکشید:
ایجاد کلید های خارجی در SQL سرور
به لحاظ فنی، شما نیازی به تعریف رابطه صریح ندارید تا قادر به انجام پرس و جو هایی مانند موارد فوق باشید. با این حال، اگر شما به صراحت با استفاده از یک محدودیت کلید خارجی تعریف کنید، پایگاه داده قادر خواهد بود برخی از کارهای خانه را برای شما انجام دهد:
- هنگامی که شما یک رکورد جدید را به جدول Employees اضافه می کنید، پایگاه داده اطمینان حاصل خواهد کرد که شناسه موقعیتی که وارد کرده اید یک کلید اولیه معتبر در جدول موقعیت ها است.
- اگر یک شناسه موقعیت را در جدول موقعیت ها تغییر دهید، پایگاه داده می تواند به روزنامه های کارکنان مورد نیاز را برای حفظ یکپارچگی انجام دهد.
- بانک اطلاعاتی می تواند در برابر تاثیر حذف یک موقعیت از جدول موقعیت ها، با رد هر یک از موقعیت های مربوط به ورودی کارکنان مربوطه و یا حذف یک کاراکتر تمام کارکنان مرتبط، محافظت کند.
در اینجا چگونگی ایجاد کلید خارجی در SQL Server را خواهید آموخت:
ALTER TABLE کارکنان KEY خارج از کشور (PositionID) مراجع موقعیت ها (PositionID)شما همچنین می توانید در هنگام ایجاد یک جدول با اضافه کردن یک عبارت خارجی ایجاد کنید:
عناوین کلیدی خارجی (Positions)به پایان تعریف ستون برای ستون کلید خارجی.