### مستندات پروژه پایگاه داده سیستم مدیریت مدارس
#### ۱. معرفی پروژه
**عنوان پروژه:** سیستم مدیریت مدارس
**توضیح:** این پروژه برای مدیریت امور مختلف یک مدرسه از جمله دانشآموزان، معلمان، کلاسها، دروس و نمرات طراحی شده است. هدف از این سیستم، سازماندهی اطلاعات مربوط به دانشآموزان و معلمان، مدیریت کلاسها و دروس، و پیگیری وضعیت تحصیلی دانشآموزان است.
#### ۲. شرح جداول پایگاه داده
##### جدول دانشآموزان (`Students`)
- **توضیح:** این جدول شامل اطلاعات کلیه دانشآموزان ثبتنام شده در مدرسه است.
- **فیلدها:**
- **StudentID:** شناسه منحصر به فرد برای هر دانشآموز (کلید اصلی).
- **FirstName:** نام دانشآموز.
- **LastName:** نام خانوادگی دانشآموز.
- **DateOfBirth:** تاریخ تولد دانشآموز.
- **Gender:** جنسیت دانشآموز.
- **GradeLevel:** سطح کلاس یا پایه تحصیلی دانشآموز.
- **Address:** آدرس محل سکونت دانشآموز.
- **ParentContact:** شماره تماس والدین دانشآموز.
##### جدول معلمان (`Teachers`)
- **توضیح:** این جدول شامل اطلاعات معلمانی است که در مدرسه تدریس میکنند.
- **فیلدها:**
- **TeacherID:** شناسه منحصر به فرد برای هر معلم (کلید اصلی).
- **FirstName:** نام معلم.
- **LastName:** نام خانوادگی معلم.
- **PhoneNumber:** شماره تماس معلم.
- **Email:** آدرس ایمیل معلم.
- **Department:** دپارتمان یا گروه آموزشی که معلم در آن فعالیت میکند.
##### جدول دروس (`Courses`)
- **توضیح:** این جدول شامل اطلاعات دروس ارائه شده در مدرسه است.
- **فیلدها:**
- **CourseID:** شناسه منحصر به فرد برای هر درس (کلید اصلی).
- **CourseName:** نام درس.
- **Description:** توضیحات مربوط به درس.
- **Credits:** تعداد واحدهای درس.
- **TeacherID:** شناسه معلمی که درس را تدریس میکند (کلید خارجی که به جدول `Teachers` متصل است).
##### جدول کلاسها (`Classes`)
- **توضیح:** این جدول شامل اطلاعات مربوط به کلاسهای مختلف و دانشآموزانی است که در آن کلاسها ثبتنام کردهاند.
- **فیلدها:**
- **ClassID:** شناسه منحصر به فرد برای هر کلاس (کلید اصلی).
- **CourseID:** شناسه درس مربوط به کلاس (کلید خارجی که به جدول `Courses` متصل است).
- **TeacherID:** شناسه معلمی که کلاس را اداره میکند (کلید خارجی که به جدول `Teachers` متصل است).
- **Semester:** نیمسال تحصیلی که کلاس در آن ارائه میشود.
- **Schedule:** زمانبندی برگزاری کلاسها.
##### جدول ثبتنام (`Enrollments`)
- **توضیح:** این جدول اطلاعات مربوط به ثبتنام دانشآموزان در کلاسهای مختلف را ذخیره میکند.
- **فیلدها:**
- **EnrollmentID:** شناسه منحصر به فرد برای هر ثبتنام (کلید اصلی).
- **StudentID:** شناسه دانشآموزی که در کلاس ثبتنام کرده است (کلید خارجی که به جدول `Students` متصل است).
- **ClassID:** شناسه کلاسی که دانشآموز در آن ثبتنام کرده است (کلید خارجی که به جدول `Classes` متصل است).
- **EnrollmentDate:** تاریخ ثبتنام دانشآموز در کلاس.
- **Grade:** نمره دانشآموز در پایان دوره کلاس (در صورت وجود).
#### ۳. شرح روابط جداول
- **ارتباط بین جدول دانشآموزان و جدول ثبتنام:** هر دانشآموز میتواند در چندین کلاس ثبتنام کند، بنابراین بین این دو جدول یک ارتباط یک به چند (One-to-Many) برقرار است.
- **ارتباط بین جدول کلاسها و جدول ثبتنام:** هر کلاس میتواند شامل چندین دانشآموز باشد، بنابراین بین این دو جدول نیز یک ارتباط یک به چند (One-to-Many) وجود دارد.
- **ارتباط بین جدول دروس و جدول کلاسها:** هر درس میتواند در چندین کلاس مختلف تدریس شود، بنابراین بین این دو جدول یک ارتباط یک به چند (One-to-Many) برقرار است.
- **ارتباط بین جدول معلمان و جدول دروس:** هر معلم میتواند چندین درس را تدریس کند، بنابراین بین این دو جدول یک ارتباط یک به چند (One-to-Many) برقرار است.
#### ۴. توضیحات اضافی
- **کلیدهای اصلی:** هر جدول دارای یک کلید اصلی است که بهصورت منحصر به فرد هر رکورد را شناسایی میکند.
- **کلیدهای خارجی:** کلیدهای خارجی برای برقراری ارتباط بین جداول استفاده میشوند. به عنوان مثال، `TeacherID` در جدول `Courses` به جدول `Teachers` و `CourseID` در جدول `Classes` به جدول `Courses` متصل است.
#### ۵. مثالهای استفاده
- **دریافت لیست تمام دانشآموزانی که در یک کلاس خاص ثبتنام کردهاند:**
- با استفاده از `ClassID` در جدول `Enrollments` میتوان لیست دانشآموزانی که در یک کلاس خاص ثبتنام کردهاند را استخراج کرد.
- **بررسی نمرات دانشآموز در یک درس خاص:**
- با استفاده از `StudentID` و `CourseID` میتوان نمرات دانشآموز در کلاسهای مختلف آن درس را بررسی کرد.
- **محاسبه تعداد دانشآموزان ثبتنامشده در یک نیمسال تحصیلی:**
- با جمعبندی تعداد رکوردهای جدول `Enrollments` که به یک `Semester` خاص در جدول `Classes` اشاره دارند، میتوان تعداد دانشآموزان ثبتنامشده در آن نیمسال را محاسبه کرد.
---
این مستندات، ساختار و توضیحات ضروری برای درک و استفاده از پایگاه داده سیستم مدیریت مدارس را ارائه میدهد و میتواند بهعنوان راهنمایی برای توسعه و بهبود این سیستم مفید باشد.