خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
16. آموزش SQL Server به زبان ساده. ارتباط بین جداول در SQL Server

در آموزش امروز به یکی از جنبه های مهم اس کیو ال سرور که تا به حال به آن نپرداخته ایم، می پردازیم. بحث ارتباط بین جداول موضوع آموزش امروز ما می باشد. اما این موضوع چرا اینقدر مهم است. اساسا SQL Server یک پایگاه داده رابطه ای می باشد، در واقع یک سیستم مدیریت پایگاه داده رابطه ای می باشد که اصطلاحا به آن RDBMS گفته می شود. مثالهایی که تا امروز مطرح کردیم همه در مورد تنها یک جدول بودند، اما امروز می خواهیم یک جدول دیگر نیز معرفی کنیم و به شما نشان دهیم که چرا و چگونه جداول با هم ارتباط پیدا می کنند.

تا امروز ما تنها یک جدول معرفی کرده بودیم، و این جدول اطلاعات تماس ها را در خود ذخیره می کرد، و این اطلاعات شامل نام، نام خانوادگی، شماره تلفن، شماره موبایل، و نشانی اشخاص می باشد. امروز می خواهیم به جدولمان یک فیلد دیگر نیز اضافه کنیم و آن فیلد جنسیت اشخاص می باشد. در واقع هر شخص یا می تواند مرد باشد و یا زن. اگر چنین فیلدی را به جدولمان اضافه کنیم، در هر فیلد باید مدام کلمه مرد و یا کلمه زن که نشان دهنده جنسیت یک شخص می باشد، تکرار گردد. طراحان دیتابیس برای اینگونه مواردی که مدام مشمول تکرار یک کلمه می گردند معمولا جدول جداگانه ای طراحی می کنند. دلیل اینکه برای اینگونه موارد جداول جداگانه ای ایجاد می شود موارد زیر هستند :
در موارد اینچنینی که اطلاعات مرتبط با یک موضوع مشترک را به دلایلی که در بالا گفتیم در جداول جداگانه نگهداری می کنند، لازم است تا بین این جداول ارتباطات مناسب برقرار شود. خود این ارتباطات چندین نوع دارند که رایج ترین نوع آن ارتباط "یک به چند" (One To Many) می باشد. در ادامه این آموزش یک جدول برای نگهداری انواع جنسیت های انسان ها ایجاد می کنیم و آن را با جدول PhoneBook که اطلاعات تماس های اشخاص می باشند مرتبط خواهیم کرد.
با استفاده از لینک آموزشی مربوط به ایجاد جدول در اس کیو ال سرور، یک جدول با نام MaleOrFemale بسازید و فیلدهای آن را به شکل زیر معرفی کنید :
تصویر زیر این جدول را بعد از معرفی شدن به شما نشان می دهد :

جدول مربوط به جنسیت (MaleOrFemale) را در حالت ویرایش رکوردهایش باز کنید و رکوردهای زیر را به آن اضافه کنید.
تصویر زیر این موضوع را به شما نشان می دهد.

برای ایجاد ارتباط بین دو جدول (در واقع ایجاد یک رابطه پایگاه داده بین دو جدول) به روش زیر این کار را انجام دهید :
➊ ابتدا در جدول تماسها (PhoneBook) یک فیلد جدید با نام MaleOrFemale_ID اضافه کنید و نوع داده آن را tinyint بگذارید، نحوه نامگذاری این فیلد انتخابی است، ما برای استاندارد کردن نامگذاری از این نام استفاده کردیم. سپس جدول PhoneBook را ذخیره کنید.

➋ حالا در یک قسمت خالی از محیط طراحی جدول PhoneBook با ماوس راست کلیک کنید و از منوی ظاهر شده گزینه Relationships (روابط) را انتخاب کنید.

➌ کادر محاوره ای Foreign Key Relationships نمایان می شود. بر روی دکمه Add کلیک کنید.

➍ یک گزینه به لیست سمت چپ این صفحه اضافه می شود، ابتدا آن را انتخاب کنید و سپس در سمت راست بر روی دکمه با علامت [...] که در مقابل گزینه Tables And Columns Specification قرار دارد کلیک کنید.

➎ کادر محاوره ای Tables and Columns نمایان می شود. در سمت چپ، یعنی در قسمت Primary key table از لیست باز شدنی جداول، جدول MaleOrFemale را انتخاب کنید و سپس در اولین ردیف پایین آن فیلد RowID را انتخاب نمایید. سپس در سمت راست، یعنی در قسمت foreign key table که در آنجا بصورت پیش فرض جدول PhoneBook انتخاب شده است، فیلد MaleOrFemale_ID را انتخاب نمایید. در پایان بر روی دکمه OK کلیک کنید.

➏ حالا در کادر محاوره ای Foreign Key Relationships اگر قسمت Tables And Columns Specification را بسط دهید در زیر آن گزینه هایی را مشابه تصویر زیر خواهید دید. بر روی دکمه Close کلیک کنید.

➐ در پایان جدول PhoneBook را ذخیره کنید تا تغییرات شما در ساختار جدول اعمال گردد.
آموزش قبلی : 15. آموزش SQL Server به زبان ساده. مرتب سازی نتایج جستجو با دستور ORDER BY
آموزش بعدی : 17. آموزش SQL Server به زبان ساده. کار با جداول مرتبط شده با یکدیگر

چرا جداول اس کیو ال سرور باید با هم مرتبط باشند؟
تا امروز ما تنها یک جدول معرفی کرده بودیم، و این جدول اطلاعات تماس ها را در خود ذخیره می کرد، و این اطلاعات شامل نام، نام خانوادگی، شماره تلفن، شماره موبایل، و نشانی اشخاص می باشد. امروز می خواهیم به جدولمان یک فیلد دیگر نیز اضافه کنیم و آن فیلد جنسیت اشخاص می باشد. در واقع هر شخص یا می تواند مرد باشد و یا زن. اگر چنین فیلدی را به جدولمان اضافه کنیم، در هر فیلد باید مدام کلمه مرد و یا کلمه زن که نشان دهنده جنسیت یک شخص می باشد، تکرار گردد. طراحان دیتابیس برای اینگونه مواردی که مدام مشمول تکرار یک کلمه می گردند معمولا جدول جداگانه ای طراحی می کنند. دلیل اینکه برای اینگونه موارد جداول جداگانه ای ایجاد می شود موارد زیر هستند :
-
از ورود اطلاعات تکراری جلوگیری می شود.
-
اطلاعات به صورت منظم تر و ساختیافته تر، سازماندهی می شوند.
-
اگر نیاز به ویرایش به یک نوع از این شکل باشد کار ساده تر صورت می پذیرد. (در این باره در ادامه بیشتر خواهیم دانست)
-
و مزایای بسیار دیگری که به مرور با آنها آشنا خواهید شد...
در موارد اینچنینی که اطلاعات مرتبط با یک موضوع مشترک را به دلایلی که در بالا گفتیم در جداول جداگانه نگهداری می کنند، لازم است تا بین این جداول ارتباطات مناسب برقرار شود. خود این ارتباطات چندین نوع دارند که رایج ترین نوع آن ارتباط "یک به چند" (One To Many) می باشد. در ادامه این آموزش یک جدول برای نگهداری انواع جنسیت های انسان ها ایجاد می کنیم و آن را با جدول PhoneBook که اطلاعات تماس های اشخاص می باشند مرتبط خواهیم کرد.
ایجاد یک جدول برای انواع جنسیت انسانها
برای دانستن چگونگی ایجاد جدول می توانید از لینک آموزشی زیر استفاده نمایید:
آموزش SQL Server به زبان ساده. ایجاد جدول (Table)
آموزش SQL Server به زبان ساده. ایجاد جدول (Table)
با استفاده از لینک آموزشی مربوط به ایجاد جدول در اس کیو ال سرور، یک جدول با نام MaleOrFemale بسازید و فیلدهای آن را به شکل زیر معرفی کنید :
-
RowID : نوع داده این فیلد را tinyint انتخاب کنید، ویژگی Allow Nulls آن را بدون تیک کنید. و همینطور آنرا بعنوان کلید اولیه جدول معرفی کنید.
-
MaleOrFemale : نوع داده این فیلد را nvarchar و با اندازه 50 بگذارید، ویژگی Allow Nulls آن تیک داشته باشد.
تصویر زیر این جدول را بعد از معرفی شدن به شما نشان می دهد :

افزودن دو رکورد برای نگهداری جنسیت اشخاص
جدول مربوط به جنسیت (MaleOrFemale) را در حالت ویرایش رکوردهایش باز کنید و رکوردهای زیر را به آن اضافه کنید.
-
مرد
-
زن
تصویر زیر این موضوع را به شما نشان می دهد.

مرتبط کردن جدول جنسیت به جدول اطلاعات تماسهای اشخاص
برای ایجاد ارتباط بین دو جدول (در واقع ایجاد یک رابطه پایگاه داده بین دو جدول) به روش زیر این کار را انجام دهید :
➊ ابتدا در جدول تماسها (PhoneBook) یک فیلد جدید با نام MaleOrFemale_ID اضافه کنید و نوع داده آن را tinyint بگذارید، نحوه نامگذاری این فیلد انتخابی است، ما برای استاندارد کردن نامگذاری از این نام استفاده کردیم. سپس جدول PhoneBook را ذخیره کنید.

➋ حالا در یک قسمت خالی از محیط طراحی جدول PhoneBook با ماوس راست کلیک کنید و از منوی ظاهر شده گزینه Relationships (روابط) را انتخاب کنید.

➌ کادر محاوره ای Foreign Key Relationships نمایان می شود. بر روی دکمه Add کلیک کنید.

➍ یک گزینه به لیست سمت چپ این صفحه اضافه می شود، ابتدا آن را انتخاب کنید و سپس در سمت راست بر روی دکمه با علامت [...] که در مقابل گزینه Tables And Columns Specification قرار دارد کلیک کنید.

➎ کادر محاوره ای Tables and Columns نمایان می شود. در سمت چپ، یعنی در قسمت Primary key table از لیست باز شدنی جداول، جدول MaleOrFemale را انتخاب کنید و سپس در اولین ردیف پایین آن فیلد RowID را انتخاب نمایید. سپس در سمت راست، یعنی در قسمت foreign key table که در آنجا بصورت پیش فرض جدول PhoneBook انتخاب شده است، فیلد MaleOrFemale_ID را انتخاب نمایید. در پایان بر روی دکمه OK کلیک کنید.

➏ حالا در کادر محاوره ای Foreign Key Relationships اگر قسمت Tables And Columns Specification را بسط دهید در زیر آن گزینه هایی را مشابه تصویر زیر خواهید دید. بر روی دکمه Close کلیک کنید.

➐ در پایان جدول PhoneBook را ذخیره کنید تا تغییرات شما در ساختار جدول اعمال گردد.
بعد از معرفی رابطه بین دو جدول وقتی در جدول PhoneBook در قسمت Object Explorer پوشه ها را بسط دهید و به قسمت Columns برسید، خواهید دید که در کنار فیلد MaleOrFemale_ID یک علامت کلید خاکستری رنگ، مشابه تصویر زیر ایجاد شده است. اصطلاحا به این فیلد، کلید خارجی (Foreign Key) گفته می شود.


آموزش قبلی : 15. آموزش SQL Server به زبان ساده. مرتب سازی نتایج جستجو با دستور ORDER BY
آموزش بعدی : 17. آموزش SQL Server به زبان ساده. کار با جداول مرتبط شده با یکدیگر
نمایش دیدگاه ها (0 دیدگاه)
دیدگاه خود را ثبت کنید: