تالار گفتمان nCIS.ir

نسخه‌ی کامل: حذف کلید های خارجی و کنترل ارتباطات به صورت دستی
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام دوستان
بعضی وقتها پروژه ها آدم رو مجبور می کنن که کلیدهای خارجی رو حذف کنیم و خودمون ارتباطات رو کنترل کنیم
خواستم بپرسم این مسئله روی performance چقدر تاثیر داره؟

ممنون
قطعاً تأثیر داره. بعید میدونم نشه با تحلیل درست و دقیق، شرایطی فراهم کرد که هم به نیازهای پروژه جواب داده بشه و هم از ارتباطها و کلیدهای خارجی به خوبی استفاده کنیم.
چیزی که از پروپزال مشتری متوجه شدیم به این صورته:(حالا تا وقتی بیاد کامل توضیح بده نمی دونم چقدر تغییرات داره)
فرض کنید سه تا جدول A,B,C داریم
جدول B قراره با کلید خارجی به جدول A وصل باشه و جدول C می تونه ارتباطش رو از جدول A یا  B بگیره( یعنی کلیدش معلوم نیست به کدوم جدوله)
شاید بهتر باشه توی جدول C دوتا فیلد کلید خارجی تعریف کنم که یکیش وصل به جدول  اولی بشه و یکیش به جدول دومی و پر شدن و کش شدن اطلاعات و ... رو کنترل کنم؟
یک راهش همینه و ابداً استفاده از کلیدهای ترکیبی مثل اون چیزی که توی لاراول هست رو توصیه نمیکنم. میتونید چک کنید اگه یکی از فیلدها ست شده باشه، یکی دیگه حتماً باید Null باشه. حتی میتونید از جداول واسط برای ارتباط N به N استفاده کنید.
(18-03-1394، 11:18 ق.ظ)ADMIN نوشته: [ -> ]یک راهش همینه و ابداً استفاده از کلیدهای ترکیبی مثل اون چیزی که توی لاراول هست رو توصیه نمیکنم. میتونید چک کنید اگه یکی از فیلدها ست شده باشه، یکی دیگه حتماً باید Null باشه. حتی میتونید از جداول واسط برای ارتباط N به N استفاده کنید.
راه بهتری هم هست که بتونم نتیجه بهتری بگیرم؟
از کلیدهای ترکیبی که گفتید اطلاعاتی ندارم، ممنون می شم راهنمایی کنید که به اشتباه به اون سمت کشیده نشم

تشکر
اینکه یک فیلد بگذارین برای اسم جدول و یک فیلد هم برای خود کلید که واقعاً کلید نیست و فقط عدد رکورد مربوطه توش هست. مثلاً فیلدهای foreign_id و foreign_table و مثلاً اگه اولی روی 5 بود و دومی روی a یعنی رکورد 5 از جدول a و اگه دومی روی b بود یعنی رکورد 5 از جدول b