کی این حرف رو زد؟
ما داریم بر روی موجودیت حرف میزنیم. کالاهایی مثل کاشی و سیمان و ... یک موجودیت به نام کالا رو تشکیل میدن. خونه چه ربطی به ماشین داره؟
در پست 38 اینو گفتید :
اول یاد بگیر که به اینا میگن موجودیت نه کالا، بعدش بیا در بحث شرکت کن.شما به ازاء هر نوع کالا باید یک جدول طراحی کنید. مثال میزنم مثلا شما برای یک کالا مانند خانه باید یک جدول جدا طراحی کنید و برای کالا دیگه مثل ماشین یک جدول با فیلد های مخصوص اون یا برای موبایل باید همین طور
جداول پویا و داینامیک اصول خودش رو داره، الکی که نمیشه جدول آنلاین با فیلد داینامیک ایجاد کرد. فیلدهای داینامیک زمانی کاربرد داره که ما از قبل نمیدونیم چه فیلدهایی برای جدول نیاز هست یا اینکه احتمال میدیم که کاربر طبق نیازش دوست داره یک سری فیلدهای جدید رو (که از قبل نمیدونیم) رو اضافه کنه.در ضمن اپلکشین با اتصال به بانک اطلاعاتی میتونه جداول انلاین در دیتابیس ایجاد کنه.. لازم نیست برنامه نویس یک به یک برای هر جدول اونو تک تک وارد کنه...
پست 4 و 13 رو ببینید.
ما باید یاد بگیریم به موجودیت بگیم موجودیت، به رابطه بگیم رابطه.
این روش گرچه درسته ولی بستگی به میزان فیلدهایی داره که میتونه برای یک کالا خالی یا پر بشه. فرض کنید ما کلا 7 خصوصیت داشته باشیم (مثل رنگ، مزه و ...). بعضی کالاها ممکنه اکثر خصوصیات رو داشته باشن. در روش شما برای همچین کالایی با فرض اینکه هر 7 خصوصیت رو داشته باشه باید 7 رکورد درج بشه و در هر رکورد هم کد کالا درج بشه در صورتیکه با یک رکورد که شامل 8 فیلد هست، میشه همین کار رو انجام داد. یعنی از تکرار 6 بار کد کالا جلوگیری میشه. همچنین در روش شما برای چنین کالایی کلا باید 7 * 3 = 21 ستون رو مقداردهی کرد ولی میشه همین جدول رو با 8 ستون هم پیاده سازی کرد و همچنین از ایجاد جدولی برای خصوصیات هم جلوگیری کرد. یعنی ما جدولی خواهیم داشت با 8 رکورد که یک فیلد اون کد کالا و 7 فیلد دیگر خصوصیات خواهند بود. تاکید میکنم این روش زمانی موثر هست که اکثریت فیلدها برای هر کالا مقدار داشته باشه و خصوصیات هر کالا رو هم از قبل بدونیم. پس اینطور نیست که همیشه با 3 فیلد یک طراحی بهینه رو داشته باشیم. پس بستگی به نوع پروژه ما داره و باید این مورد بخوبی تحلیل بشه.اگر از روش به قول دوستمون داینامیک در داینامیک استفاده کنید هیچ فیلدی خالی نمی ماند و برنامه کاملا فلکسبل می شود
خب برای اینکه برای همه موارد متغییر یه جدول جداگانه نسازیم میایم جدواولمونو می کنیم سه
جدول اول خود کالا
جدول دوم خصوصیات کالا
جدول سوم برای درج خصوصیات کالا
مثلا کالای شماره یک رنگ داره مقدارشم قرمزه
کالای شماره دو مزه داره مزشم ترشه
کالای شماره سه هم مزه داره و مزش تلخه
کالای شماره 4 ابعاد داره که 15*23 می باشد
کالای شماره 5 هم ابعاد داره هم رنگ
همه اینا در جدول سوم ذخیره میشه (به عنوان یک ردیف نه فیلد)
یعنی در جدول سوم هم کد خصوصیات درج میشه و هم کد کالا و یک مقدار (یعنی این خصوصیت مربوط میشه به فلان کالاو فلان خصوصیت که مقدارشم مثلا x می باشد)
جدول سوم (کالای یک ، خصوصیت رنگ ، مقدار قرمز) / (کالای یک ، خصوصیت ابعاد ، مقدار 10*20) / (کالای دو ، خصوصیت رنگ ، آبی) / (کالای 3 ، خصوصیت ابعاد ، مقدار 20*40)/(کالای 3 ، خصوصیت واحد کالا ، مقدار کیلو)
و هزاران فیلد دیگر.....
جدول کالا می تونه 10000 تا ردیف داشته باشه
جدول نوع خصوصیات می تونه 1000 تا ردیف داشته باشه
جدول خصوصیات می تونه 1000000 تا ردیف داشته باشه
می تونی یک ملیون تا کالا تعریف کنی که هر کدومش حتی هزار تا خصوصیت داشته باشه و تو همون جدول کالا ،کالایی داشته باشی که براش خصوصیتی ثبت نشده باشه
هیچ فیلد خالی هم نداریم
هیچ محدودیتی هم در تعداد کالا یا خصوصیات ندارم