PDA

View Full Version : سوال: چه گونه رکورد هایی را که باهم در ارتباط هستند پاک کنیم؟



rezarko
پنج شنبه 24 اسفند 1391, 13:17 عصر
سلام. من یه تیبل کالا و یه تیبل انبار دام که کد انبار در جدول کالا ذخیره میشه. ولی وقتی میخوام یه انبار رو حذف کنم ارور میده که این انبار با یه کالا رابطه داره. به نظر شما چه طور این انبار رو حذف کنم؟
با تشکر

M.amin
پنج شنبه 24 اسفند 1391, 13:49 عصر
به نظر ام اول باید کالا های این انبار رو حذف کنید . بعد خود انبار رو .

veniz2008
پنج شنبه 24 اسفند 1391, 14:00 عصر
سلام. من یه تیبل کالا و یه تیبل انبار دام که کد انبار در جدول کالا ذخیره میشه. ولی وقتی میخوام یه انبار رو حذف کنم ارور میده که این انبار با یه کالا رابطه داره. به نظر شما چه طور این انبار رو حذف کنم؟
با تشکر
سلام.
به نظر میرسه که طراحی شما چندان صحیح نیست. (در جدول کالا قاعدتا نباید اطلاعاتی به جز اطلاعات کالا قرار بگیره و نباید کد انبار در جدول کالا قرار بگیره).
ولی جدا از ین بحث ها، اگر منظور شما کلید اصلی و خارجی هست ،چون کلید خارجی وابسته به کلید اصلی هست اگر قصد داشته باشید کلید اصلی رو حذف کنید sql به شما پیغام خطا میده که کاملا هم صحیح هست چون اون کلید خارجی دیگه وابستگی خودش رو از دست میده. دو تا راه دارید : 1. اول باید داده رو از جدول وابسته حذف کنید (همون که کلید خارجی داره) و بعد داده رو از جدول اصلی حذف کنید. 2. در sql خاصیت Delete Rule رو بر روی cascade قرار بدید(برای جدولی که کلید اصلی هست ). در اینحالت وقتی ازجدول اصلی داده حذف میکنید بصورت خودکار خودش داده های وابسته رو از جدولی که کلید خارجی داره حذف میکنه.(من خودم از این روش استفاده نمیکنم و ترجیح میدم خودم مدیریت داده ها رو انجام بدم تا اینکه sql این کار رو انجام بده).

rezarko
پنج شنبه 24 اسفند 1391, 14:19 عصر
سلام.
به نظر میرسه که طراحی شما چندان صحیح نیست. (در جدول کالا قاعدتا نباید اطلاعاتی به جز اطلاعات کالا قرار بگیره و نباید کد انبار در جدول کالا قرار بگیره).


ممنون. پس اطلاعات انبار رو کجا باید ذخیره کنم؟

rezarko
پنج شنبه 24 اسفند 1391, 14:34 عصر
یعنی وقتی یه انبار پاک میشه باید کالا هایی که با اون انبار در رابطه هستند و فاکتور هایی که با اون کالا در رابطه هستن همه پاک بشن؟

اوبالیت به بو
پنج شنبه 24 اسفند 1391, 14:46 عصر
یعنی وقتی یه انبار پاک میشه باید کالا هایی که با اون انبار در رابطه هستند و فاکتور هایی که با اون کالا در رابطه هستن همه پاک بشن؟

درود برشما

ارتباطات رو روی کاغذ بنویسید و وقتی شناسایی کردید باید در غالب یک Transaction عملیات حذف رو از پایین ترین سطح (مثلا جزییات فاکتور بعد خود فاکتور بعد کالا و بعد انبار) رو پیاده سازی کنید.

tooraj_azizi_1035
پنج شنبه 24 اسفند 1391, 15:21 عصر
کد انبار چرا در جدول کالا ذخیره شده؟
انبار یعنی محل ورود و خروج کالا. پس در جدول انبار کد محصول ذخیره میشه و بعد مثبت یا منفی بودن مقدار فیلدی مثل Qty ورود یا خروج رو معنی میده.
محصول سمت 1 و انبار سمت Many است. ضمناً UpdateRule یا DeleteRule رو با ست کردن به Cascade باعث حذف یا به روز رسانی خودکار در صورت تغییر یا حذف یک محصول می شود.

C#‎_best_Programmer
پنج شنبه 24 اسفند 1391, 15:47 عصر
اصلا سو الت واضح نیست عزیز