PDA

View Full Version : روابط در sql



H:Shojaei
چهارشنبه 03 دی 1393, 15:17 عصر
سلام...
یه سوال همیشه تو ذهنمه فاکتور هایی که پیوند شماتیک جداول به کارایی، سرعت، دقت و ... دیتابیس اضافه میکنه چیه؟!
اصلا فرق میکنه؟ مثلا من وقتی کلید اصلی و خارجی واسه دو جدول مشخص میکنم اگه تو دیزاینش این جداول رو به واسطه کلیدهاشون به هم متصل نکنم هم فرقی نمیکنه البته به ظاهر...
حالا در باطن چه فرقی داره که جداول رو به صورت شماتیک هم متصل کنیم یا نکنیم؟!

MMSHFE
چهارشنبه 03 دی 1393, 18:45 عصر
خیلی فرق داره. برای مثال وقتی قید ایجاد میکنید و توی قسمت ON DELETE نوع CASCADE رو انتخاب میکنید، وقتی رکورد اصلی حذف شد، تمام رکوردهای وابسته هم حذف میشن یا اگه تو همین بخش RESTRICT بگذارین، یک رکورد اصلی تا وقتی که تمام رکوردهای وابسته بهش حذف نشن، قابل حذف نخواهد بود. یا موقع درج رکورد وابسته، اگه توی فیلد کلید خارجی، مقداری بگذارین که توی جدول اصلی رکوردی متناظر باهاش وجود نداره، موفق نمیشین و خطا دریافت میکنید. بدون این قید و بندها، مجبورین همه این چک کردنها رو دستی توی برنامه خودتون انجام بدین که ممکنه تحت شرایط خاصی با موفقیت اجرا نشه و درنتیجه داده های غیرمعتبر توی دیتابیس شما زیاد خواهد شد.

H:Shojaei
چهارشنبه 03 دی 1393, 19:35 عصر
ممنون من اینا رو در حد تئوری میدیدم همیشه... حالا یه سوال این که این کار روی سرعت هم تاثیر داره؟

MMSHFE
چهارشنبه 03 دی 1393, 19:57 عصر
قطعاً تأثیر داره چون دیگه لازم نیست برای حذف رکوردهای متناظر دوباره کوئری بفرستین برای دیتابیس و خودش مدیریت میکنه.