PDA

View Full Version : گفتگو: کمک در طراحی پایگاه داده سایت یک مدرسه



naser_feb8646
جمعه 18 فروردین 1391, 15:15 عصر
سلام خدومت اساتید محترم

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

mohsen.nsb44
جمعه 18 فروردین 1391, 15:21 عصر
خب یه جدول برای نمراتت بزار بعد میتونی به جدول مشخصاتت ارتبات بدی
با
relation
موقع واکشی هم میتونی یه همچین شرطی بزاری




select u.name,u.family,n.nomre from moshaklhasat u, nomreha n where u.id=n.id

naser_feb8646
جمعه 18 فروردین 1391, 17:22 عصر
دوست عزیز جداول از هم جدا هستن
فقط فیلد نام کاربری هست که نشون میده که نمره برای چه شخصی هست

fakhravari
جمعه 18 فروردین 1391, 20:02 عصر
با سلام
فکر سرعت نباشید .
اول تحلیل دیتابیس و نقش ها را کنید.
باید کلاسا و سال تحصیلی و .. اول مشخص کنید و بعد هر چقدر دوست دارید insert کنید.

naser_feb8646
جمعه 18 فروردین 1391, 21:08 عصر
دوست من یعنی اگر تعداد سطر ها بالا بره تو سرعت به مشکل نمیخورم
و یه چیز دیگه الان به ذهنم رسید و اون اینکه در پایان هر سال تحصیلی نمرات اون سال به یه جدول دیگه به عنوان آرشیو منتقل بشه بهتر نیست؟؟؟

fakhravari
جمعه 18 فروردین 1391, 21:36 عصر
ببیند چون شما تحلیل قسمتها را نمیدونید به مشکل برمیخورید.
اول در مورد کاری که میخواهید یه جدول تهیه کنید و بعد بزارید تا بهتر بشه تصمیم گرفت
ارشیو چیزی نیست جز کل داده ها که میتوان سرچ کرد بین بازه های زمانی که میخواهید بر اساس تاریخ

d_derakhshani
شنبه 19 فروردین 1391, 00:11 صبح
همانطور كه دوستان اشاره كردن اول طراحي جداول و ساختار مهمه بعد بهينه سازي سرعت. دوم اينكه ديتابيس شما جز ديتابيس هاي بسيار سبك هست. 16200 ركورد در سال واسه sql مثل شوخي مي مونه. ديتابيس هايي كه ما باهاش كار مي كنيم بحث ميليون ها ركورده و حدود 300gb اطلاعات داره و سرعت خوبي هم داره(البته اين ديتابيس ها tune شده هست).
براي طراحي مي تونه يك طراحي اين باشه:

Student(StudentID,FirstName,LastName,...,CurrentLe velNo,etc
Lessons(LessonID,LessonName,Unit,LevelNo
StudentExamGrade(StudentID,LessonID,Grade,RegDate, ExameType


البته اين طراحي فلبداهه و بسيار ساده شده وي‍ژه مشخصات كار شما بوده و فكر زيادي روش نشده. اما با توضيحاتي كه شما داديد تا همين حد كفايت مي كرده. مي تونيد فكر كنيد و حالت هاي كامل تر هم طراحي كنيد(البته شايد با توضيح بيشتر در مورد نحوه عملكرد سيستم تون طراحي پيچيده تري لازم باشه)
در اين طراحي رشته مدنظر گرفته نشده(چون گفتيد راهنمايي هست)، براي نمايش پايه از LevelNo استفاده شده هم براي دانش آموز(كه در چه مقطعي هست) هم براي درس(كه مشخص بشه براي چه مقطعي)، از اونجا كه در مقطع راهنمايي(كلا قبل از دانشگاه) خواندن تمامي دروس يك مقطع اجباري هست احتياجي به جدول دروس برداشته شده در ترم و وضعيت آن(پاس يا مردود) مورد نظر نيست. در عوض فقط يك جدول نمرات امتحان وجود داره كه مشخص مي كنه دانش آموز در چه درسي چه نمراتي گرفته، ExamType نوع امتحان رو مشخص مي كنه(كلاسي، ميان ترم، ترم اول، دوم و تابستان)، يك جدول Status‌ نيز مي توان در نظر گرفت كه مشخص كنه دانش آموز در مقطع خاصي قبول، مشروط يا رد شده