PDA

View Full Version : یک فیلد از نوع table میشه درست کرد ؟



alirezador
پنج شنبه 18 اسفند 1384, 11:46 صبح
سلام من یک سوال داشتم ممنون میشم جوابم را بدید
فرض کنید در یک سیستم سایت دانشگاه باید هر دانشجو در ترم جدید انتخاب واحد کند به دلیل این که اگر بخواهیم در پایگاه برای هر درس انتخاب شده توسط دانشجویان یک رکورد به جدول اضافه کنیم بعد از یکی دو سال میلیونها رکورد در جدول خواهد بو ولی اگر بتوانیم برای هر دانشجو فقط یک رکورد باز بکنیم و در یک فیلد از همان رکورد که خودش به صورت یک جدول میباشد تمام انتخاب واحد های همان دانشجو را در آن فیلد خیره کنیم هم سرعت جستجو بالا میرود و هم مقدار فیلدها کاهش چشمگیری خواهد داشت این کار را در mysql به چه صورت میتوان انجام داد
یعنی یک فیلد بسازیم که نوع آن به جای varchar و int و... یک table باشد

oxygenws
پنج شنبه 18 اسفند 1384, 12:50 عصر
نه، در mysql نداریم، باید از یک table مجزا استفاده کنید.

alirezador
پنج شنبه 18 اسفند 1384, 17:52 عصر
برای حل این مسئله چه پیشنهادی میکنید ؟ آیا یک database متواند میلیونها table داشته باشد؟

oxygenws
پنج شنبه 18 اسفند 1384, 20:04 عصر
آیا یک database متواند میلیونها table داشته باشد؟
به نظر من به جای اون داده، باید یک جدول ایجاد کنی.
برای توانایی های mysql هم لینک زیر رو ببین.
http://barnamenevis.org/forum/showthread.php?t=7544

reza_rad
شنبه 20 اسفند 1384, 09:13 صبح
برای حل این مسئله چه پیشنهادی میکنید ؟ آیا یک database متواند میلیونها table داشته باشد؟

این متناقض با نرمالسازی پایگاه های داده است.
اصل مهم:
فیلد جدول باید اتمیک باشد(یعنی قابل تجزیه به قسمتهای کوچکتر نباشد)
و البته پایگاهی که نرمال نباشد مشکلات بسیار زیادی خواهد داشت...

پیشنهاد می کنم در یک کتاب پایگاه داده بخش نرمالسازی رو مطالعه کنید.

alirezador
شنبه 20 اسفند 1384, 10:21 صبح
اول این که هم از مدیر بخش و هم reza_rad تشکر میکنم که جوابم را دادید ولی دوستان ببینید جدول انتخاب واحد تو دانشگاه باید طوری باشه که وقتی دانشجو خواست تمام دروسی که تا حالا انتخاب کرده را براش بیاره با تمام جزئیات ولی در این حالت یا باید واسه هر دانشجو یک table درست کنیم که دروس انتخابی فقط اون دانشجو را در آن ذخیره کنیم یا این که واسه هر درس انتخاب شده توسط دانشجویان یک رکورد به جدول انتخاب واحد کل دانشگاه اضافه کنیم که در حالت اول بیش از 60000 تا نمیتونه باشه و در حالت دوم هم سرعت جستجو کم و عملیات پردازش زیاد میشه از شما خواهش میکنم اگه به غیر از این 2 راه حل چیزه دیگه ای به ذهنتون میرسه لطفا بهم بگید

reza_rad
شنبه 20 اسفند 1384, 10:39 صبح
آقا علیرضای عزیز سرعت جستجو زیاد بشه بهتر از اینه که دیتابیس شما مشکل داشته باشه.(اون کسانی که اصول نرمالسازی رو قراردادند به تمام این چیزها فکر کردن و دیدن که مهمتر از همه اینه که نرمال باشه)
مطمئن باش 100% با پایگاه داده ای که نرمال نیست مشکل پیدا می کنی.

خیلی راحت مشکل اینجوری حل میشه:
جدولها : دانشجویان - درسها - انتخاب واحد

oxygenws
شنبه 20 اسفند 1384, 11:21 صبح
من روی این صحبت رضا، برای راه حل مشکلت، تاکید می کنم:

خیلی راحت مشکل اینجوری حل میشه:
جدولها : دانشجویان - درسها - انتخاب واحد

alirezador
شنبه 20 اسفند 1384, 14:24 عصر
دوستان خوب اون وقت جدول انتخاب واحد در طی چند سال تعداد رکورد هاش شاید در دانشگاه تهران و یا دانشگاه های بزرگ ایران از میلیارد ها رکورد هم تجاوز کنه چون واسه هر انتخاب واحد باید یک رکورد بر اساس primary key که همون شماره دانشجویی هست به جدول اضافه بشه و این هم برای 100000 نفر یعنی در یکی چند سال تقریبا ممکنه 100000000000 رکورد
ولی اگه میشد که در جدول انتخاب واحد یک فیلد تعریف کنیم که برای هر دانشجو در داخل همان فیلد یک جدول دیگه درست کنه فکر کنم بهترین حالت ممکنه به وجود میاد و بر روی این مسئله تاکید دارم که رکورد ها میلیارها هستند نه میلیون
ممنون میشم اگه بازم جوابم را بدید

oxygenws
شنبه 20 اسفند 1384, 14:59 عصر
به ازای هر درسی که هر نفر بر میداره (در هر ترم)، یک ردیف به جدول اضافه میشه.
یعنی اگر 100000 دانشجو وجود داشته باشه و هر دانشجو در هر 4 سال، 100 درس برداره، نهایتا میشه 10000000 یعنی 10 میلیون.

در این صورت، شاید بد نباشه برای هر ورودی یک "جدول" بسازید!
یا برای هر سال، یک جدول جدید بسازید و جدول قدیمی رو بایگانی کنید.
یا ...

alirezador
شنبه 20 اسفند 1384, 18:32 عصر
سلام
آقای oxygenws خیلی ممنون از راهنمایی هایی که کردین و درسته وقتی mysql میتونه 50 میلون رکورد رکورد را مدیریت کنه پس خیلی راحت میتونه گفته شما را عملی کنه خیلی ممنونم از زحمتی که کشیدین

oxygenws
شنبه 20 اسفند 1384, 18:36 عصر
خواهش می کنم، وی آر هیر تو شیر!!

touraj
یک شنبه 21 اسفند 1384, 08:49 صبح
خب درسته که تعداد رکوردها زیاد میشه. اما فکر کنم یه چیزی رو فراموش کردی. دانشحو بالاخره یا فارغ التحصیل میشه یا اخراج. دیگه وجود جدول انتخاب واحد برای دانشجویی که از دانشگاه رفته ضرورتی نداره و ضمناً بخشی به نام بایگانی هم هست.
یه کتاب آموزش اکسس هست مال "جعفر نژاد قمی". پروژه بانک اطلاعاتیش سیستم آموزش یه دانشکده است. برو جداولش رو ببین. (نمیخواد بخریش، فقط تو کتابفروشی جداولش رو ببین) تا اونجایی هم که یادمه جلدش سفیدرنگ بود. احتمالاً هم آموزش اکسس 97 بود.

alirezador
سه شنبه 23 اسفند 1384, 13:02 عصر
خیلی ممنون از محبتتون