ورود

View Full Version : سوال فلسفی در رابطه با relationship



p_ooya
شنبه 23 خرداد 1388, 02:04 صبح
سلام به همه.
هر چند راجع به ارتباط جدول ها صحبت زیاد شده اما همونطور که نوشتم، سوال من مقداری فلسفی و متفاوت با سوالهای قبلی در این رابطه است. اما سوال :
وقتی که من یه relationship بین دو تا از جدول هام با استفاده از یک کلیدخارجی ایجاد می کنم در واقع چه کاری انجام داده ام؟ منظورم در سطح dbms هست. در واقع این سوال از اینجا ناشی شده که من با یه inner join این کار رو می تونم بکنم. حالا اگه قراره که خود sql server هم با inner join همین کار رو بکنه، دیگه چه لزومی داره که من این ارتباط رو در محیط sql server ایجاد کنم؟ آیا اس کیو ال سرور، علاوه بر یه اینر جوین، در زمان ایجاد ارتباط بین جدولها، کار دیگه ای هم می کنه؟ اگر استدلال من اشتباه نیست، پس فلسفه وجودی ارتباط در محیط enteprise manager یا server manager چیست؟

سپاس.
پویا.

pesar irooni
شنبه 23 خرداد 1388, 03:29 صبح
هنگام وارد شدن اطلاعات sql چک میکنه که حتما این مقدار به عنوان کلید خارجی قبلا تو جدول مربوط به کلید اصلی درج شده باشه. با inner join که نمیشه چنین کاری کرد. کلید خارجی اصولا یه قید که ما رو جدول میذاریم و صد البت که میتونیم نذاریم و خودیم بصرت دستی چک کنیم.

p_ooya
شنبه 23 خرداد 1388, 16:34 عصر
هنگام وارد شدن اطلاعات sql چک میکنه که حتما این مقدار به عنوان کلید خارجی قبلا تو جدول مربوط به کلید اصلی درج شده باشه. با inner join که نمیشه چنین کاری کرد. کلید خارجی اصولا یه قید که ما رو جدول میذاریم و صد البت که میتونیم نذاریم و خودیم بصرت دستی چک کنیم.
هااااان. گرفتم. متشکرم. حالا یه سوال دیگه، اگر ارتباط من با بانک از طریق یه زبان برنامه نویسی باشه، و این مسئله که گفتید چک بشه، آیا لزومی به ایجاد این ارتباط هست؟ و یک سوال دیگه : این مسئله رو چطور میشه تو محیط sql server 2005 پیاده کرد؟ اگه لطف کنید یه جواب کامل به سوال آخر بدید ممنون میشه.

pesar irooni
یک شنبه 24 خرداد 1388, 02:59 صبح
این مسئله رو چطور میشه تو محیط sql server 2005 پیاده کرد؟
اگه منظورتون این هست :

کلید خارجی اصولا یه قید که ما رو جدول میذاریم و صد البت که میتونیم نذاریم و خودیم بصرت دستی چک کنیم
فرض میکنیم بین دو جدول یه رابطه کلید اصلی و خارجی برقراره و اون رو تعریف نکردیم.
میتونیم از یه تریگر هنگام insert تو جدولی که قراره کلید خارجی میداشت استفاده کنیم که اگه مقدار وارد شده به عنوان کلید خارجی تو جدول اولی نیست عمل کنسل بشه و رکورد پاک بشه.

آیا لزومی به ایجاد این ارتباط هست؟
سعی کن همیشه در سطح دیتابیس ارتباط ها برقرار باشه تا دیتابیست وارد یه حالت ناسازگار نشه. هر چند که میتونی این ارتباط رو نذاری و از طریق relation بین dataTable ها این کار رو انجام بدی.