ورود

View Full Version : مشکل در ایجاد Foreign Key در ساخت جدول



hdv212
دوشنبه 21 اسفند 1385, 17:52 عصر
سلام بچه ها ..
من توی جدول اولم یه فیلد از نوع Int دارم که PK هستش،حالا توی جدول دوم دو تا فیلد میخوام بسازم که به همون فیلد از جدول اولم رفرنس بده،مشکل اینجاس که Sql Server خطا میگیره، حالا من چطوری میتونم دو تا فیلد از جدولم رو به یه فیلد از جدول دیگم رفرنس بدم ؟؟
برای راهنمایی بیشتر، جدول اولم کد و نام فرستنده ها و گیرنده های نامه س، و جدول دوم هم آرشیو نامه هاس،که در موقع ثبت هم کد فرستنده و هم کد گیرنده رو میگیره(که دو تا شون توی یه جدول و مربوط به یه فیلد هستن)
مرسی ..

shayan_delphi
دوشنبه 21 اسفند 1385, 22:54 عصر
سلام
من پیشنهاد می کنم شمادر جدول دوم یک فیلد دیگه تعریف کنی مثلا صفر برای فرستنده و یک برای گیرنده و فیلد کد این جدول را به فیلد کد جدول اول مرتبط کنی.
در ضمن فیلد کد جدول دوم هم نباید کلید اصلی باشد.
راه دیگه استفاده از دو جدول مجزا.

AminSobati
دوشنبه 21 اسفند 1385, 23:24 عصر
اگر Cascade نکنین اجازه ساخت رو میده

hdv212
دوشنبه 21 اسفند 1385, 23:56 عصر
سلام ..
من میخوام cascade کنم،یعنی میخوام در صورت تغییر،جدول Child هم به روز بشه،بعد اینکه با توجه به نظر shayan_delphi نمیخوام یه جدول دیگه ایجاد کنم،چون ممکنه همون گیرنده ها توی نامه های بعدی فرستنده باشن،من میخوام یه جوری این اطلاعات در یه جدول باشه،چه راه دیگه ای به نظرتون میاد ؟؟

hdv212
سه شنبه 22 اسفند 1385, 13:47 عصر
من هنوز مشکلم حل نشده ..
ببینید برای توضیح بیشتر اینو بگم که جدول MailArchive که جدول فرزند هست دو بار به جدول SenderReciever که والد هست رفرنس میده، یه بار برای ثبت ID فرستنده و یه بار هم برای ثبت ID گیرنده.
منتظر جوابم .. مرسی

AminSobati
سه شنبه 22 اسفند 1385, 16:54 عصر
میتونین FK درست نکنین و بجاش Trigger بنویسین. این کار کاملا استاندارده

shayan_delphi
سه شنبه 22 اسفند 1385, 22:06 عصر
hdv212 در روش اولی که گفتم چه مشکلی وجود داره؟
آقای ثباتی روشی که من پیشنهاد دادم اشکالی داره؟
دیگه نیازی هم به Trigger نیست.

AminSobati
چهارشنبه 23 اسفند 1385, 00:10 صبح
hdv212 در روش اولی که گفتم چه مشکلی وجود داره؟
آقای ثباتی روشی که من پیشنهاد دادم اشکالی داره؟
دیگه نیازی هم به Trigger نیست.

در جدول Child، در حقیقت ID دو نفر باید ثبت بشه، من متوجه نشدم شما چجوری این مشکل رو حل کردین

shayan_delphi
چهارشنبه 23 اسفند 1385, 06:04 صبح
یک فیلد جدید در جدول child از نوع bit تعریف شود برای دو حالت.اگر فرستنده باشد صفر و اگر گیرنده باشد مقدار یک بگیرد.
و در این جدول فیلد کد که کلید اصلی نباشد به فیلد کلید جدول parent متصل شود.

AminSobati
چهارشنبه 23 اسفند 1385, 10:29 صبح
فرض کن شما یک email رو از User 1 به User 2 میفرستین. ID هر دو کاربر در جدول emailهای ارسال شده ثبت میشه. این جدول Child محسوب میشه برای جدول Users. هر دو User نامشون برای یک رکورد بصورت دو فیلد ثبت میشه. متوجه اشکال شدی عزیزم؟