PDA

View Full Version : ساختار مناسب برنامه



jaykob
سه شنبه 29 آذر 1390, 19:25 عصر
سلام دوستان

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

با تشکر

Galawij
سه شنبه 29 آذر 1390, 21:02 عصر
سلام،
درسته نیاز به جداول بیشتری دارید چون اگر همه این اطلاعات را بخواید داخل یک جدول نگهداری کنید، بانک شما دچار افزونگی می شه و سطوح نرمال سازی را رعایت نکرده، که نتیجه آن افزایش حجم و سرعت واکشی اطلاعات می شه.
برای ارتباطات بین جداول هم سه نوع ارتباط یک به یک، یک به چند و چند به چند داریم. معمولا ٌدر ارتباطات نوع اول (یک به یک) فیلدها را دریک جدول قرار می دیم. در ارتباطات یک به چند از دو جدول و در ارتباطات چند به چند از سه جدول برای ذخیره اطلاعات استفاده می کنیم.
مثال: ارتباط دانش جو با سوابق تحصیلی یک ارتباط یک به چند است. ارتباط دانش جو با شماره دانشجویی یک ارتباط یک به یک هست. ارتباط دانش جو با اعضای خانواده یک ارتباط چند به چند است.

jaykob
سه شنبه 29 آذر 1390, 21:15 عصر
سلام،
درسته نیاز به جداول بیشتری دارید چون اگر همه این اطلاعات را بخواید داخل یک جدول نگهداری کنید، بانک شما دچار افزونگی می شه و سطوح نرمال سازی را رعایت نکرده، که نتیجه آن افزایش حجم و سرعت واکشی اطلاعات می شه.
برای ارتباطات بین جداول هم سه نوع ارتباط یک به یک، یک به چند و چند به چند داریم. معمولا ٌدر ارتباطات نوع اول (یک به یک) فیلدها را دریک جدول قرار می دیم. در ارتباطات یک به چند از دو جدول و در ارتباطات چند به چند از سه جدول برای ذخیره اطلاعات استفاده می کنیم.
مثال: ارتباط دانش جو با سوابق تحصیلی یک ارتباط یک به چند است. ارتباط دانش جو با شماره دانشجویی یک ارتباط یک به یک هست. ارتباط دانش جو با اعضای خانواده یک ارتباط چند به چند است.

ممنون از توجهتون

من یک مثال رو می گم شما لطف کنید بفرمایید که کار من صحیح است یا نه و مشکلاتم رو بیان کنید . چون بی تجربه هستم در این قضیه باید به این شکل موضوع رو مطرح کنم

من یک موجودیت دانش آموزش دارم که دارای بخش های : اطلاعات شخصی ، مشخصات تکمیلی ، نحوه ارتباط ، اطلاعات کلاسی هست .

من یک جدول دانش آموز ساختم و سه جدول مشخصات تکمیلی ؛ نحوه ارتباط ؛ اطلاعات کلاسی و در بین این جداول کد دانش آموزش مشترک هست که کلید اختصاصی هم هست . من سه فیلد کد دانش آموزش مشخصات تکمیلی ؛ نحوه ارتباط ؛ اطلاعات کلاسی را به کد دانش آموزش جدول دانش آموز وصل کردم و فکر می کنم که یک ارتباط یک به چند ساخته باشم . بر طبق این ساختار صحیح است ؟

با تشکر

Galawij
چهارشنبه 30 آذر 1390, 08:01 صبح
سلام،
اگر امکانش باشه که فیلدهای این جداول را هم ذکر کنید بهتر می شه راهنمایی کرد و در تجزیه جداول دقت بیشتری به خرج داد.
در ارتباط های یک به چند کلید اصلی جدول طرف یک به عنوان کلید خارجی وارد جداول سمت چند می شه، تعریفش این می شه که برای یک موجودیت خاص ممکنه چندین نوع از موجودیت دوم وجود داشته باشه.
جداول را بازتر کنید تا ارتباط ها صحیح تر تشخیص داده بشه.

jaykob
چهارشنبه 30 آذر 1390, 08:39 صبح
سلام،
اگر امکانش باشه که فیلدهای این جداول را هم ذکر کنید بهتر می شه راهنمایی کرد و در تجزیه جداول دقت بیشتری به خرج داد.
در ارتباط های یک به چند کلید اصلی جدول طرف یک به عنوان کلید خارجی وارد جداول سمت چند می شه، تعریفش این می شه که برای یک موجودیت خاص ممکنه چندین نوع از موجودیت دوم وجود داشته باشه.
جداول را بازتر کنید تا ارتباط ها صحیح تر تشخیص داده بشه.

با تشکر از راهنمایی شما

جدول دانش آموز :

کد دانش آموزی
نام
نام خانوادگی
محل صدور
شماره شناسنامه
کد ملی
تاریخ تولد


مشخصات تکمیلی :

کد دانش آموزی
محل ثبت
تحصیلات پدر
شغل پدر
تحصیلات مادر
شغل مادر
وضعیت مسکن
وضعیت جسمانی

نحوه ارتباط :

کد دانش آموزی
شماره تماس ولی
تلفن منزل
تلفن همراه پدر
آدرس
نحوه ارتباط

اطلاعات کلاسی :

کد دانش آموزی
پایه
کلاس
وضعیت تحصیلی
تاریخ ترک تحصیل
تاریخ انتقال


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

سپاس

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

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

خیلی ممنون از راهنماییتون

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

با تشکر

Galawij
چهارشنبه 30 آذر 1390, 10:04 صبح
دوست عزیز دارم راهنمایی می کنم متأسفانه امکان اینکه دیاگرام براش بذارم نیست، چون وقت ندارم.
ولی سوالاتون را بپرسید به مقتضای زمان جواب می دم.

jaykob
جمعه 02 دی 1390, 23:53 عصر
سلام

عذر می خوام من طبق مواردی که فرمودید پیش رفتم و تشکر می کنم . یکجا فرمودید که مثلا برای وضعیت جسمانی که خوب حالا 4 تا گزینه داره یک جدول بسازم و id اون رو کلید خارجی اون کالومن اصلیم کنم و داخل اون کالومن اصلی id اون موردی رو که انتخاب کرده کاربر با dropdownlist بریزیم تمامی این کارها را انجام دادم و دیدم خیلی افراد به این شکل عمل می کنن اما دلیلش رو نمی دونم چون می شه string همون مقادیر رو هم ریخت داخل دیتابیس . ممنون می شم کمی توضیح بدهید .

با تشکر

Galawij
شنبه 03 دی 1390, 08:11 صبح
سلام،
بیشترین و مهمترین دلیلی که برای این کار من بهش اعتقاد دارم در مورد راحتی گزارش گیری از جداول بانک اطلاعاتی است، و اینکه از طریق این روش امکان اضافه کردن موارد جدید وجود دارد و اینکه این امکان از کاربر گرفته می شود که اطلاعات اشتباه وارد کند و اطلاعات جداول بانک اطلاعاتی یکدست می شود.