سلام
من می خوام یه پایگاه داده طراحی کنم جدول محصولات و وردی هر دو با جدول فروش رابطه یک به چند دارند ولی در جدول فروش من یا باید محصول ثبت بشه یا ورودی
با توجه به این که کلید اصلی محصول و ورودی هر دو باید در جدول فروش به عنوان کلید خارجی و NOTNALL باشند چطور باید این شرط رو پیدا کنم که هر بار فقط یکی از کلید خارجی ها درج بشه ؟ آیا می تونم کلید خارجی رو در جدول فروش اختیاری کنم؟
امکان یکی کردن جدولهای محصول وروردی ها وجود نداره - میشه فیلدهاشون رو بزارید حداقل بفهمیم جدول ورودی ها چیه>؟
نه متاسفانه مضوعشون کاملا جدا هست و به نظرم منطقی نیست یکی کردنشون
فیلدهای مهم ورودی : کد ورودی، تاریخ، نوع وردی، مقدار، نتیجه تست و....
فیلد های مهم محصول: کد سفارش، نام محصول تاریخ و ...
جدول محصول به واسطه یه جدول (ورودی- محصول) با جدول ورودی رابطه چند به چند داره
تنها راه حلی ک به ذهن من میرسه اینه یا جفتشونو قرار برین یا اینکه از یه جدول واسط دیگه استفاده کنید - می تونید از همون جدولی که ارتباط چند ب چند محصول و ورودی رو هندل کرده استفاده کنید
ماجرا اینه که این شرکتی که دارم براشون برنامه رو می نویسم یا ورودی رو به محصول تبدیل می کنه بعد می فروشه و یا اینکه خود ورودی رو مستقیم می فروشه
اگر قرار باشه جفتشون رو قرار بدم تو جدول فروش باید کلیدشون رو که تو جدول فروش به عنوان کلید خارجی قرار داره allownall قرار بدم
دقیقا نمی دونم منظورتون چیه برای استفاده از یک جدول دیگه، در نهایت باید کلید هردو از داخل این جدول ثبت بشه دیگه درسته؟
چیزی که من تا اینجا فهمیدم اینه
من فرض میکنم که شما دو نوع موجودیت برای فروش دارید یکی که اسمش محصوله یکی هم ورودی که بنا به سیاست کاری شرکت ورودی می تونه تبدیل به محصول بشه می تونه تبدیلم نشه
با این حساب چند تا راه حل وجود داره این که
1- جدول های فروششون رو از هم جدا کنید
2- زخیره سازی جفتشون توی یه جدول
مورد اول که واضحه چجوریه
مسئله شما مورد دومه ظاهرا و چون کلید جفتشون توی جدول فروشه نباید این فیلد null باشه با این حساب تنها کاری که به نظر من می تونید بکنید اینه :
کلید جفتشونو توی جدول فروش بزارید به صورت not null بعد برای فیلدهای کلید خارجی یک مقدار پیشفرض تنظیم کنید تا در صورت اینکه برای فروشهایی محصول نداشتیم یک مقدار ثابت قرار بگیره
دقت کنید ک اون مقدار ثابت رو باید در جدول محصولاتتون هم داشته باشین (یک رکورد در جدول محصول که نماینده تمام ورودی هایی هست که تبدیل به محصول نشده اند)
واقعا ممنون از راهنماییتون
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)