PDA

View Full Version : بانکی برای نگهداری اطلاعات هر نوع کالا!



Hossein.Dsh
شنبه 03 اردیبهشت 1390, 10:38 صبح
سلام
من نیاز دارم بانکی طراحی کنم که هر نوع کالایی رو بشه داخلش ثبت کرد.
به این نکته توجه کنید گفتم هر نوع کالا. «ماشین، کامپیوتر، موبایل، کمد، جوراب!... و خصایص هر کالا با کالای دیگر متفاوت است. مثلا کامپیوتر خصیصه نام پردازنده دارد اما ماشین و ... نه.
این نکته هم حائز اهمیته که نوع کالا باید انعطاف پذیر باشه یعنی در حالت اجرا بتوان نوع کالای جدید تعریف کرد و نیازی نباشه در ساختار بانک تغییر ایجاد کنیم.
بنابراین این راه حل که برای هر کالا جدولی متفاوت ایجاد کنیم منتفی است.

اما من یک راه حل پیدا کردم که ذکر میکنم و میخوام بدونم آیا منطقی هست و یا راه حل بهتری هست یا نه:

ما یک جدول نوع «Type» تعریف میکنیم و یک جدول کالا «Product».
در جدول Type انواع کالا را تعریف میکنیم. به این صورت که هر ردیف جدول معرف یک نوع کالاست. دقت کنید که معرف نوع کالاست نه خود کالا. هر کالا در جدول Product یک ارتباط با این جدول دارد که مشخص کننده نوع و نام خصایص کالاهاست.

مثال برای یک دوربین:
مشخصات کلی2011/04/20تاریخ معرفی :
حرفه اینوع :
133 × 100 × 80 mmابعاد :
بدنه 515 گرموزن :
مشکیرنگ :مشخصات حسگر و تصویرCMOSنوع حسگر :
18.7 مگاپیکسلدقت حسگر :
18 مگاپیکسل
در جدول بالا «مشخصات کلی» و «مشخصات حسگر و تصویر» گروه مشخصات است که هر کدام شامل تعدادی مشخصه با تعداد نامعلوم است.

من عنوان هر گروه را به همراه عنوان هر مشخه از آن گروه را به صورت زیر در جدول Type تعریف میکنم:
ردیف 1 از جدول Type:
id - نام نوع مثل: دوربین عکاسی - گروه مشخصات 1: مشخصات کلی#تاریخ معرفی#ابعاد و...
و بدین ترتیب در هر فیلد جدول نوع یک گروه از مشخصات قرار میگیرد که با یک کاراکتر از هم جدا شده اندو اولین کلمه نام گروه است (مشخصات کلی) و بقیه فیلد های آن هستند.

اما در جدول کالا هر کالایی که از نوع دوربین باشد فیلد متناظر با گروه دوربین آن مقادیر مشخصه ها را به صورت زیر نگهداری میکند:
یکی از ردیفهای جدول Product:
id - idنوع - مقادیر گروه یک از جدول نوع مثل گروه «مشخصات کلی» : 2011/04/20#133 × 100 × 80 mm# و...

خوب بدین صورت جدول انعطاف پذیری بالایی پیدا خواهد کرد و علاوه بر اینکه هر نوع کالا را که قبول میکند، در زمان اجرا نیز قابل تغییر است و میتوان به هر گروه از کالاها مشخصاتی را اضافه یا حذف کرد. البته جدول از حالت ریاضی و رابطه ای کمی خارج شده و برنامه نویسی نیز سخت تر خواهد شد.

آیا این کار درست است؟ ایده بهتری دارید؟

حمیدرضاصادقیان
شنبه 03 اردیبهشت 1390, 12:13 عصر
سلام.
معمولا در سیستم های انبارداری و کالا ، اگر بخواهد به صورت کلی نوشته شود مشخصات کلی کالا مثل قیمت ، واحد ، تعداد رو نگهداری می کنند. به این روش که در یک فیلد بخواهیم چند مقدار داشته باشیم اولین قانون نرمال سازی رو نقض کردیم و بعدها در دستورات Update,Delete به مشکل بر خواهید خورد. اگر مثلا فقط میخواهید مشخصاتی مثل اندازه ، رنگ ، رو داشته باشید میتوانید در یک جدول اینارو نگهداری کنید یا در همون جدول کالا این دو فیلد رو نیز داشته باشید.
در غیر اینصورت میتوانید مثلا یک جدول تعریف کنید و فیلدهای مورد نظر رو به صورت داینامیک داخلش تعریف کنید ، بعد برای اینکار باید یک فرم ساز نیز در برنامه قرار بدید.که بسته به فیلدهایی که کاربر تعریف کرده شما فرم مورد نظر جهت ورود اطلاعات رو در اختیارش قرار بدید.
حالا دلیل شما برای این مورد چیست؟ دقیقا میشه بفرمائید چه کاری قصد دارید انجام بدید؟

Hossein.Dsh
شنبه 03 اردیبهشت 1390, 12:50 عصر
سلام.
معمولا در سیستم های انبارداری و کالا ، اگر بخواهد به صورت کلی نوشته شود مشخصات کلی کالا مثل قیمت ، واحد ، تعداد رو نگهداری می کنند. به این روش که در یک فیلد بخواهیم چند مقدار داشته باشیم اولین قانون نرمال سازی رو نقض کردیم و بعدها در دستورات Update,Delete به مشکل بر خواهید خورد. اگر مثلا فقط میخواهید مشخصاتی مثل اندازه ، رنگ ، رو داشته باشید میتوانید در یک جدول اینارو نگهداری کنید یا در همون جدول کالا این دو فیلد رو نیز داشته باشید.
در غیر اینصورت میتوانید مثلا یک جدول تعریف کنید و فیلدهای مورد نظر رو به صورت داینامیک داخلش تعریف کنید ، بعد برای اینکار باید یک فرم ساز نیز در برنامه قرار بدید.که بسته به فیلدهایی که کاربر تعریف کرده شما فرم مورد نظر جهت ورود اطلاعات رو در اختیارش قرار بدید.
حالا دلیل شما برای این مورد چیست؟ دقیقا میشه بفرمائید چه کاری قصد دارید انجام بدید؟

من هم ابتدا این راه حلی که شما گفتید به ذهنم رسید، اما گروه بندی هر دسته از مشخصات رو چگونه باید انجام بدم؟ مثلا میشه گفت 10 فیلد اول مربوط باشه به گروه «مشخصات ظاهری» اما اگز بعدا این 10 فیلد شد 11 تا چطور؟! تعداد فیلدها در هر گروه ثابت و مشخص نیست.

درضمن من نیاز دارم اطلاعات کاملی از هر کالا داشته باشم و فقط رنگ و مدل کافی نیست.
این نکته رو هم دوباره یادآوری میکنم که کاربر هر نوع کالایی با مشخصات کامل رو باید بتونه توی این بانک ثبت کنه.

shahab_ss
پنج شنبه 05 خرداد 1390, 10:55 صبح
همانطور که خودتون گفتید،هر کالا یک سری مشخصات عمومی داره که در همه کالا ها میتونه وجود داشته باشه...خب پس با این قسمت مشکلی نداریم،
برای ثبت مشخصاتی که در هر کالا متفاوت هست میتونید به اینصورت عمل کنید که :
یک جدول داشته باشید که در اون پراپرتی ها رو تعریف کنید،و جدول دیگری که این پراپرتی ها رو گروهبندی میکنه.
بعد زمان تعریف کالا از طریق جدول "گروهبندی پراپرتی ها" میتونید بصورت داینامیک برای هر کالا به هر تعداد که نیاز دارید پراپرتی تعریف کنید.