PDA

View Full Version : ارتباط بین جداول



setak
دوشنبه 15 مرداد 1386, 15:25 عصر
سلام
من یک دیتابیس دارم که یکی از جداول اصلی و حیاتی آن جدول اطلاعات پرسنلی یک شرکت می باشد . در این جدول یک فیلد با نام شماره مستخدمی وجود دارد که PK است و این جدول PK table جند جدول دیگر در دیتابیس است . حالا شرایطی پیش می یاد که کاربر admin مجبور میشه شماره مستخدمی جدول اطلاعات پرسنلی رو عوض کنه . اما خوب با این relation ای که وجود داره نمیشه .
حالا سواله من اینه که چه راه حلی برای این مشکل وجود داره . ععنی چطور میشه relationای بین جداول ایجاد کرد تا بتوان با تغییر اطلاعات یک فیلد از یک جدول تمام اطلاعات همان فیلد از جدول های دیگه هم همراه با آن update شوند .

supporter
دوشنبه 15 مرداد 1386, 22:21 عصر
کافیه موقع ایجاد Relation گزینه های Cascade Update , Cascade Delete رو انتخاب کنید
ولی به نطر من روش بهتر اینه که PK جدولتون رو فیلد دیگه ای قرار بدهید
مثلا فیلدی مثل ID در این صورت تمام Relation های ایجاد شده با این جدول روی این فیلد خواهد بود و شما بدون هیچ مشکلی می تونید مقدار فیلد شماره استخدامی پرسنل رو تغییر بدهید.

setak
سه شنبه 16 مرداد 1386, 08:04 صبح
اما من مجبورم روی این فیلد PK رو بذارم اما به نظر شما این منطقی است که من این کار رو بکنم؟

supporter
سه شنبه 16 مرداد 1386, 21:53 عصر
اما من مجبورم روی این فیلد PK رو بذارم اما به نظر شما این منطقی است که من این کار رو بکنم؟

چرا مجبورید PK جدولتون این فیلد قرار بدهید؟
اگر مشکلتون Unique کردن این فیلد در جدولتونه می تونید روی این فیلد Unique Index تعریف کنید.

Kamyar.Kimiyabeigi
چهارشنبه 17 مرداد 1386, 07:51 صبح
سلام
من یک دیتابیس دارم که یکی از جداول اصلی و حیاتی آن جدول اطلاعات پرسنلی یک شرکت می باشد . در این جدول یک فیلد با نام شماره مستخدمی وجود دارد که PK است و این جدول PK table جند جدول دیگر در دیتابیس است . حالا شرایطی پیش می یاد که کاربر admin مجبور میشه شماره مستخدمی جدول اطلاعات پرسنلی رو عوض کنه . اما خوب با این relation ای که وجود داره نمیشه .
حالا سواله من اینه که چه راه حلی برای این مشکل وجود داره . ععنی چطور میشه relationای بین جداول ایجاد کرد تا بتوان با تغییر اطلاعات یک فیلد از یک جدول تمام اطلاعات همان فیلد از جدول های دیگه هم همراه با آن update شوند .

شما میتونین برای جدول پرسنلی یک فیلد از نوع Identity در نظر بگیرین که همین فیلد PK هم باشه.

AminSobati
پنج شنبه 18 مرداد 1386, 21:49 عصر
البته فیلد Identity رو نمیشه Update کرد. مساله اینجاست که چرا Cascade مشکل شما رو حل نمیکنه؟!

Kamyar.Kimiyabeigi
جمعه 19 مرداد 1386, 11:07 صبح
البته فیلد Identity رو نمیشه Update کرد. مساله اینجاست که چرا Cascade مشکل شما رو حل نمیکنه؟!

امین جان من منظورم این بود که فیلد Identity بعنوان pk باشه ولی فیلد کد پرسنلی حذف نشه. چون ایشون تاکید دارن که از Cascade استفاده نکنن

supporter
جمعه 19 مرداد 1386, 12:51 عصر
من فکر نمی کنم که ایشون تاکیدی برای عدم استفاده از Cascade داشته باشن ولی از اون جایی که ممکنه Relation های این جدول با جدول های دیگه زیاد باشه و یا در آینده زیاد بشه و در این حالت Update این فیلد زمانبر بشه برای جلوگیری از بروز چنین وضعیتی پبشنهاد کردم که به جای این کار Pk جدولشون رو فیلد دیگه ای قرار بدن تا این مشکل هم براشون پیش نیاد.