PDA

View Full Version : آیا امکان دارد مقداری در کلید خارجی باشد ولی در کلید اصلی نباشد؟



SYNDROME
پنج شنبه 24 خرداد 1386, 23:56 عصر
با سلام
دوستان من دوتا جدول داردم.در جدول هر رو جدول فیلد با نام Code دارم و لی در جدول یک کلید اصلی و در جدول کلید خارجی است.
بین این دو Relation زده ام و هر وقت کلید اصلی تغییر کند کلید خارجی نیز تغییر می کند.
همه چیز درست کار می کند.
قانون SQL می گوید باید مقدار در کلید اصلی باشد تا بتوان آن مقدار را در کلید خارجی نیز اضافه کرد.
ولی می خواستم بدانم آیا امکان دارد مقداری در جدول دوم(کلید خارجی) وجود داشته باشد ولی در جدول اول(کلید اصلی)وجود نداشته باشد؟؟؟؟:متفکر: :متفکر:
اگر راه حلی وجود دارد بنده را راهنمایی کنید و اگر راهی هم وجود ندارد باز هم بنده را خبر کنید.
با تشکر

marzban
جمعه 25 خرداد 1386, 01:13 صبح
من فکر می کنم که کلید خارجی نمیتواند مقدار داشته باشد.
خود sql اجازه ورود داده ای را به شما نمی دهد مگر اینکه آن داده را قبلا در کلید اصلی خود تعریف کرده باشید.

Fagat_tanhaie
جمعه 25 خرداد 1386, 01:48 صبح
وابسته بودن مقدار کلید خارجی به کلید اصلی جزو قوانین جامعیتی پایگاه داده رابطه ای می باشد و
امکان نقص این قانون امکان پذیر نیست مگر اینکه ارتبط دو جدول حذف شود.

AminSobati
جمعه 25 خرداد 1386, 02:54 صبح
گاهی ممکنه در موقع تحلیل پروژه و تهیه دیتابیس، اطلاعات جمع آوری شده در سازمان مربوطه به گونه ای باشه که وقتی بعضی جداول Master و Detail تولید میشن، واقعا برای این اطلاعات داخل جدول، ارتباطی نباشه اما قراره از این به بعد روال درست پیاده سازی بشه.
لذا زمانی که FK Constraint ساخته میشه، شما میتونین از پارامتر WITH NOCHECK استفاده کنین تا FK ارتباط درست بین Master و Detail رو چک نکنه، اما از لحظه بعد از ساخته شدن FK، برای ورود اطلاعات این کنترل صورت میگیره. یعنی فقط در لحظه ساخته شدن FK اطلاعات موجود نادیده گرفته میشن.
این در حقیقت یک انعطاف پذیری محسوب میشه، تا شما بتونین اطلاعات رو راحت تر مدیریت کنین، اما از نظر منطق RDBMS، باید وضعیت رکوردهایی که ارتباطشون صحیح نیست حتما روشن بشه. مثلا میشه تمام Childهایی که Parent ندارند رو براشون یک رکورد Parent به عنوان Unknown ایجاد کرد، و تمام Childهای بلاتکلیف رو به اون مرتبط کرد.
ضمنا در جدول Detail، مقدار NULL استثنا محسوب میشه و لازم نیست حتما Parent داشته باشه.

SYNDROME
جمعه 25 خرداد 1386, 08:33 صبح
با سلام
امین جان دستت درد نکنه.:تشویق: :تشویق:
واقعا لطف کردی.
مکلم با همین یک استثنا حل شد.:چشمک: