PDA

View Full Version : رسم روابط در دیتابی دیاگرام



man_iran
چهارشنبه 13 بهمن 1389, 00:44 صبح
من می خوام روابط 1-N و بخصوص وراثت را بین جدول ها در دیتابیس دیاگرام بکشم ولی نمی دونم چطور می شه این کار کرد.
اگر ممکنه راهنمایی کنید. اگر منبع آموزش هم دارید برام قرار بدید.
ممنون

zimzim
چهارشنبه 13 بهمن 1389, 15:10 عصر
سلام
برای ایجاد رابطه 1-N در دیتابیس دیاگرام باید بعداز اضافه کردن این دو جدول به دیاگرام ، فیلد pk از جدول اصلی رو روی Foreigh key از جدول فرعیت Drag کنی که یه صفحه ای برات نمایش داده میشه که اونجا بهت این فیلدها رو نمایش میده که اونجا میتونی در صورت اشتباه بودن فیلد ها رو تغییر بدی . ویا اینکه اگه فیلدها درست انتخاب شده باشه ok میکنی و خواهی دید که یک ارتباط بین جداول برقرار میشه و مشخص میکنه کدوم جدول اصلیه وکدوم فرعیه . امیدوارم به صورت واضح توضیح داده باشم.

man_iran
دوشنبه 18 بهمن 1389, 15:17 عصر
در اینجا منظور شما جدول اصلی (رابطه 1) و جدول فرعی (رابطه N) هست؟ یعنی جدول اصلی دارای رابطه 1 و جدول فرعی دارای رابطه n است؟

برای وراثت چکار باید کرد؟ جدول 1 پدر و جدول 2 فرزند.
رابطه به گونه ای تنظیم بشه که اگر از جدول پدر عنصر حذف بشه خودبخود از جدول فرزند نیز حذف بشه

|

|

|

|

|

|

|

من کارهایی که گفتید را انجام دادم ولی مشکل اینجاست: مثلا ما سه تا جدول داشته باشیم.

**جدول شماره یک:

کلید اصلی: فیلد1


** جدول شماره دو:

کلید اصلی: فیلد2


** جدول شماره سه:

کلید اصلی: فیلد3

کلید خارجی: فیلد1

کلید خارجی: فیلد2


حالا جدول سه با جدول یک (ارتباط 1 به N دارند) و جدول سه با دو (ارتباط N به 1 دارند).

طبق گفته شما اگر رسم کنم شکل خط بین جدول سه و دو جدول دیگه شبیه هم می شه در صورتی که ارتباطات فرق می کنند.

چکار باید بکنم؟ چطور می تونم مشخص کنم فلان جدول رابطش 1 هست و فلان جدول رابطش N

حمیدرضاصادقیان
دوشنبه 18 بهمن 1389, 21:50 عصر
سلام.
برای این نوع رابطه ها که یک به چند هست. اگر در هر دو جدول دو فیلد رو انتخاب کنید همون رابطه یک به یک خواهد شد.
شما باید در جدول دوم ترکیب کلید خارجی و یک id رو به عنوان کلید در نظر بگیرید. به این صورت میتوانید رابطه یک به چند رو پیاده سازی کنید.
وگرنه اگر فیلد 1 از جدول اول با فیلد یک از جدول سه رابطه داشته باشند همون رابطه یک به یک میشه.
البته در جدول 3 اگر ترکیب هر سه فیلد شما یه مثلا ترکیب فیلد 1 و 2 باهم کلید باشند یک رابطه یک به چند تشکیل میشه.
در همون قسمت relationship شما میتوانید گزینه های delete option , update option رو مشخص کنید.
برای کار راحتتر در قسمت Design table- relationnship میتوانید این گزینه ها رو مشخص کنید.
همچنین ما در طراحی دیتابیس های رابطه ای چیزی به نام وراثت نداریم یا مفاهیم شی گرایی در آن پیاده سازی نمی شوند.
ولی رابطه پدر و فرزندی را میتوان از طریق relationship ایجاد کرد.
برای توضیحات تکمیلی میتوانید لینکهای زیر رو مشاهده کنید.
لینک 1 (http://msdn.microsoft.com/en-us/library/ms189049.aspx)
لینک 2 (http://social.msdn.microsoft.com/Forums/en-US/sqlgetstarted/thread/8acfa9b3-0005-4ca4-927c-d3a6669fbd79/)
لینک 3 (http://msdn.microsoft.com/en-us/library/ms188251.aspx)
لینک 4 (http://www.singingeels.com/Articles/Understanding_SQL_Many_to_Many_Relationships.aspx)

man_iran
دوشنبه 18 بهمن 1389, 22:03 عصر
با استفاده از گفته های شما چنین برداشتی کردم:

اگر فیلدی اصلی یک جدول را با یک فیلد از جدول دیگه (که آن فیلد اصلی نباشد و همان فیلد جدول قبلی باشد) رسم کنیم باز رابطه یک به یک ایجاد می شود.
مگر اینکه در جدول دوم مشخص کنیم فیلد مورد نظر خارجی است. ولی چطور باید تنظیم کرد؟
حالا اگر نمودار را کشیدیم از کجا معلوم کنیم رابطه جدول اول n است و جدول دوم 1 یا برعکس.

میشه درباره رابطه پدر و فرزند توضیح بدید من از متن انگلیسی چیز زیادی متوجه نمی شم.
ممنون

حمیدرضاصادقیان
دوشنبه 18 بهمن 1389, 22:24 عصر
بذارید جور دیگه ای توضیح بدم.
ببینید وقتی جدول اول با جدول دوم ارتباط دارند توسط یک فیلد ID . اینجا رابطه یک به یک هست.
زیرا به ازای هر id که در جدول اول یا پدر ما هست فقط یک رکورد میتونه در جدول دوم یا فرزند باشه.
زیرا تنها کلید اصلی ما فیلد id هست. و کلید اصلی نیز نمیتونه تکراری باشه.
برای پیاده سازی رابطه یک به چند در جدول دوم ما به جز فیلد id که با جدول اول رابطه داره یک فیلد id یا code داریم که ترکیب این دوفیلد در جدول دوم کلید اصلی هست.
حالا در جدول اول رکورد شماره 1 در id ثبت میشه. در جدول دوم مثلا خود رکورد 1 شامل code های 1 تا 10 هست. اینجوری شما در جدول 1 فقط یک رکورد با شماره 1 دارید ولی در جدول دوم از id شماره 1 - 10 رکورد مختلف با مقادیر مختلف دارید.
برای پیاده سازیش هم گفتم در جدول دوم شما باید ترکیب دو فیلد رو به عنوان کلید اصلی در نظر بگیرید.