همانطور كه دوستان اشاره كردن اول طراحي جداول و ساختار مهمه بعد بهينه سازي سرعت. دوم اينكه ديتابيس شما جز ديتابيس هاي بسيار سبك هست. 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 نيز مي توان در نظر گرفت كه مشخص كنه دانش آموز در مقطع خاصي قبول، مشروط يا رد شده