آموزش MySQL – بخش پنجم – جداول تو در تو با Foreign Key
همانطور که در درس های قبل گفته شد ساختن جداول بهینه امری بسیار مهم در طراحی دیتابیس می باشد. جداول تو در تو در کاهش حجم دیتابیس بسیار کارا هستند. به همین علت در این بحث روش ساختن Foreign Key در MySQL را آموزش خواهیم داد.
تعریف Nested Tables
ما در مثال درس دوم دو جدول را برای ذخیره اطلاعات مربوط به دوستانمان بصورت زیر ساختیم.
ردیف | نام | نام خانوادگی | سن | تاریخ تولد | کد مشخصات |
۱ | علی | امیری | ۳۵ | ۱۳۶۱/۷/۳ | ۱ |
۲ | محمد | غلامی | ۳۲ | ۱۳۶۴/۲/۱۰ | ۱ |
۳ | وحید | رسولی | ۳۱ | ۱۳۶۵/۱۱/۸ | ۱ |
۴ | علی | قاسمی | ۳۴ | ۱۳۶۲/۴/۶ | ۱ |
کد مشخصات | جنسیت | رشته ی تحصیلی | مدرک |
۱ | مرد | نرم افزار | لیسانس |
این دو جدول اصطلاحا دو جدول تو در تو یا Nested Table هستند. اگر قرار بود که ما همه ی این اطلاعات را در جدول اول ذخیره کنیم می بایست به ازای هر جها نفر سه فیلد جنسیت، رشته تحصیلی و مدرک را از نوع TEXT تاضافه میکردیم و سه دیتای مرد،نرم افزار و لیسانس را بصورت تکراری به ازای هر ردیف می نوشتیم.
این به معنای ۱۲ دیتای TEXT به ازای ۴ نفر و در حجم وسیع تر یعنی مثلابرای ۱۰۰۰ نفر یعنی ۴۰۰۰ دیتای TEXT. این نشان دهنده ی این است که ما باید در طراحی فیلد هایی که اطلاعات تکراری در سطر های مختلف دیتابیس دارند ، جدولی دیگر را به عنوان زیر مجموعه بوجود آوریم و دیتابیس خود را به لحاظ فضای اشغالی بهینه نماییم.
همانطور که میبینید جهت ارتباط دو جدول ما از یک کد مشترک به نام کد مشخصات یا Personal ID استفاده کرده ایم که به این کد ارتباطی Foreign Key میگویند.
روش ساختن Foreign Key با Workbench
حال Workbench خود را باز کنید. ابتدا به جدول Friends که در درس های پیش ساختیم رفته و با انتخاب گزینه ی مشخص شده در شکل آن را Edit نمایید.
مطابق شکل زیر فیلد ProfileID را اضافه کنید.
بر روی Schema ی خود کلیک راست کرده و با انتخاب گزینه ی Create Table یک جدول جدید به اسم Profile با فیلد های دلخواه اضافه نمایید. دقت کنید که فیلد ProfileID مطابق شکل حتما در آن وجود داشته باشد.
حال بیایید دو جدول را به هم وصل کنیم.
ابتدا می بایست در جدول Friends یه بخش Foreign Keys بروید. در بخش سمت چپ این صفحه اسم Foreign key را وارد نموده که ProfileID می باشد و جدول مقصد را ‘myfriends’.’profile’ وارد نمایید. در بخش سمت راست فیلد ProfileID را تیک بزنید.
پس از زدن کلید Apply در پایین صفحه کلید، خارجی شما ایجاد شده و دو جدول به هم مرتبط خواهند شذ.
به این نکته توجه کنید که میتوانید در بخش Foreign key option با انتخاب گزینه های On Update و On Delete زمان بروز رسانی و پاک کردن یک profile در جدول friends تغییراتی را ایجاد کنید.
آموزش MySQL
آموزش MySQL – بخش اول – نصب و راه اندازی
آموزش MySQL – بخش دوم – Schema و Table
آموزش MySQL – بخش سوم – MySQL Workbench
آموزش MySQL – بخش چهارم – Flag ها در MySQL
آموزش MySQL – بخش پنجم – جداول تو در تو با Foreign Key
هرگونه کپی برداری از مطالب و عکس ها با ذکر منبع و قرار دادن لینک این سایت بلامانع است.
سلام ممنون از مطلب خوبتون.
فقط ی نکته خواستم بگم که چرا برای کلید خارجی فلگ UQ رو تیک زدین در صورتیکه این فیلد مقادیر تکراری هم داشت؟؟؟
سلام
ممنون از مطلبی که قرار دادین خیلی برام مفید بود