ورود

View Full Version : آیا این ساختار دیتابیس درست هست؟



p30help
دوشنبه 12 تیر 1391, 19:49 عصر
با سلام و احترام
بنده یک برنامه نوشتم که در اون یک جدول دارم بنام اشخاص که در اون افراد قرار دارند.
خوب هر فردی که در این جدول وجود داره مسلماً یکسری اطلاعات داره مثله دپارتمنت عضو ، نام بانک عضو ، میزان تحصیلاتش ، وضعیت نظام وظیفه (محتویات این بخش ها هم از کامبو باکس گرفته میشه) و .....

من برای اینکه این بخش ها قدرت بیشتر داشته باشند. نیومدم مستقیماً مقادیر کامبو باکس مثلاً میزان تحصیلات را مستقیماً درون خونه های دیتابیس بگذارم. بلکه یک جدول دیگه ساختم (بنام کدها) و ستون های اطلاعاتم رو به اون اضافه کردم (یعنی ردیف های کامبو باکسم رو به این جدول اضافه کردم) برای مثال در اون یک ستون اضافه کردم به نام میزان تحصیلات و بعد اومدم کد ردیف اون رو دادم به جدول اشخاص تا اگه در آینده یکی از ردیف های میزان تحصیلات عنوانش فرق کرد، برنامه به هم نریزه. (یعنی برنامه بر اساس آی دی این بخش ها داره کار می کنه نه عناوین اونها)
امیدوارم تا اینجای کار متوجه شده باشید.
همانطور که گفتم من یک جدول ساختم بنام کدها که در اون یکسری ستون وجود داره و هر ستونی مربوط به یک بخش از اطلاعات هست و همچنین ستون برای آی دی اونها در نظر گرفتم.
حالا چون ستون آی دی برای تمام این مقادیر مشترکه زیاد این جدول پویا نیست.
حالا موندم که برای هر بخشی یک جدول جداگونه بسازم (مثلاً برای قسمت دپارتمند عضو یک جدول و برای میزان تحصیلات هم یک جدول) که با اینکار چون آی دی اینها جداگانه میشه ، خوب حسنش اینه که قدرت انعطاف بیشتر میشه ولی در عوضش کنترل تعداد زیاد جدول هم کار خوشایندی نیست.
حالا شما بگید من کدوم راه رو انتخاب کنم... و کلاً این ساختاری که انتخاب کردم درسته. یا راه بهتری هم وجود دارد.
با تشکر

FastCode
دوشنبه 12 تیر 1391, 20:06 عصر
من با تعداد جدول بیشتر موافقم چون اون روش دیگه یعنی باید اطلاعات زیادی رو HardCode کنید که برعکس چیزی که فکر میکنید فوق العاده سخت تره.

p30help
دوشنبه 12 تیر 1391, 20:41 عصر
ممنونم دوست عزیز
ولی منظور شما رو از hardcode متوجه نشدم...
می تونید بیشتر توضیح بدید؟

FastCode
دوشنبه 12 تیر 1391, 21:13 عصر
http://en.wikipedia.org/wiki/Hard_coding

p30help
دوشنبه 12 تیر 1391, 23:46 عصر
الان شمردم، دیدم که اگه بخوام جداول رو مجزا کنم باید حداقل 12 تا دیگه جدول به دیتابیسم اضافه کنم. جداولی که بعضی هاشون فقط 2 یا 3 تا رکورد دارند.
آیا روش بهتری وجود نداره، به غیر ازاین دو موردی که من گفتم؟؟؟
:متفکر:

maktoom
سه شنبه 13 تیر 1391, 05:51 صبح
سلام
چرا از تعداد زیاد جدول می ترسید؟
این به شما و احیانا همکاراتون کمک می کنه بهتر روند کار رو متوجه بشن و کار نظم بیشتری پیدا کنه.
اینکه شما دامنه تغییرات رو محدود می کنید از حسن کاره، نه اینکه اگه یک روز قرار بشه یه تغییر کوچیک رخ بده مثل انداختن سنگ توی حوض لرزشها تمام دامنه کار رو بگیره.
فقط باید تحلیلتون درست صورت بگیره تا طراحیتون با کمترین نقص وارد کار بشه.

حمیدرضاصادقیان
سه شنبه 13 تیر 1391, 09:42 صبح
سلام.
معمولا اطلاعات پایه به این دوشکل ذخیره می شوند.
یکی اینکه برای هر اطلاعات پایه یک جدول در نظر بگیرید.
و باهم ارتباط داشته باشند.
یکی اینکه دو جدول داشته باشید.
یکی گروه اطلاعات پایه و یکی زیر مجموعه اطلاعات پایه.
در روش اول که مشخصه برای هر اطلاعات پایه یک جدول مجزا درست کرده و هر جدول نیز یک فیلد کد و یک فیلد نام دارند.
در روش دوم شما یک جدول گروه بندی دارید که شامل دو فیلد کد و نام هست.
در فیلدکد ، کد گروه و در فیلد نام ، نام گروه مثل : تحصیلات ، شهر ، استان و...
در جدول زیر مجموعه ها شما سه تا فیلد خواهید داشت.
یک فیلد خود زیرگروه ، یک فیلد کد گروه که با جدول گروه در ارتباطند یک فیلد برای نام زیر گروه.
مثلا فرض کنید در جدول گروه کد تحصیلات برابر 1 است.
درجدول زیر گروه میشه:
1-1- دیپلم
1-2-لیسانس
1-3-فوق لیسانس
و...
یکی از مزایای روش دوم اینه که کاملا Dynaminc است.
زیر میتونید برای کاربر یک فرم بذارید خودش گروه درست کنه بعد در یک فرم دیگه خودش زیر گروه درست کنه.
ولی عیبش اینه که اگر بخواهید برای یک گروه اطلاعات تکمیل تری داشته باشید نمیتونید( که البته به نظرم نیاز نمیشه معمولا)
در روش اول شما تعداد گروهها رو ثابت خواهید داشت و کاربر هیچ تغییری نمیتونه درون اونها بده و حسنش اینه که اگر بخواهید برای یک گروه اطلاعات تکمیل تری داشته باشید کارکرد اون راحتتره.

امیدوارم بتونید درست انتخاب کنید.
موفق باشید