الجداول الرئيسية والعلاقات بينها مع مراعاة صلاحيات المستخدمين المختلفة (الطلاب، الدكاترة، والعمادة).
يحتوي على معلومات عامة عن جميع المستخدمين في النظام (طلاب، دكاترة، عمادة).
CREATE TABLE users (
user_id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
role ENUM('student', 'teacher', 'admin') NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
يحتوي على معلومات إضافية خاصة بالطلاب.
CREATE TABLE students (
student_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
enrollment_date DATE,
major VARCHAR(100),
FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE
);
يحتوي على معلومات إضافية خاصة بالدكاترة.
CREATE TABLE teachers (
teacher_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
department VARCHAR(100),
FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE
);
يحتوي على معلومات إضافية خاصة بالعمادة.
CREATE TABLE admins (
admin_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE
);
يحتوي على معلومات عن المواد الدراسية.
CREATE TABLE courses (
course_id INT AUTO_INCREMENT PRIMARY KEY,
course_code VARCHAR(20) NOT NULL UNIQUE,
course_name VARCHAR(100) NOT NULL,
description TEXT,
credit_hours INT NOT NULL,
teacher_id INT,
FOREIGN KEY (teacher_id) REFERENCES teachers(teacher_id) ON DELETE SET NULL
);
يربط بين الطلاب والمواد الدراسية.
CREATE TABLE enrollments (
enrollment_id INT AUTO_INCREMENT PRIMARY KEY,
student_id INT NOT NULL,
course_id INT NOT NULL,
enrollment_date DATE DEFAULT CURRENT_DATE,
status ENUM('enrolled', 'dropped') DEFAULT 'enrolled',
FOREIGN KEY (student_id) REFERENCES students(student_id) ON DELETE CASCADE,
FOREIGN KEY (course_id) REFERENCES courses(course_id) ON DELETE CASCADE
);
يحتوي على معلومات عن الجدول الدراسي لكل مادة.
CREATE TABLE schedules (
schedule_id INT AUTO_INCREMENT PRIMARY KEY,
course_id INT NOT NULL,
day_of_week ENUM('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday') NOT NULL,
start_time TIME NOT NULL,
end_time TIME NOT NULL,
location VARCHAR(100),
FOREIGN KEY (course_id) REFERENCES courses(course_id) ON DELETE CASCADE
);
يحتوي على درجات الطلاب في المواد الدراسية.
CREATE TABLE grades (
grade_id INT AUTO_INCREMENT PRIMARY KEY,
enrollment_id INT NOT NULL,
exam_type ENUM('midterm', 'final', 'assignment') NOT NULL,
grade DECIMAL(5,2) NOT NULL,
FOREIGN KEY (enrollment_id) REFERENCES enrollments(enrollment_id) ON DELETE CASCADE
);
يحتوي على الإشعارات المرسلة من العمادة أو الدكاترة.
CREATE TABLE notifications (
notification_id INT AUTO_INCREMENT PRIMARY KEY,
sender_id INT NOT NULL,
recipient_role ENUM('student', 'teacher', 'admin', 'all') NOT NULL,
title VARCHAR(255) NOT NULL,
message TEXT NOT NULL,
sent_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (sender_id) REFERENCES users(user_id) ON DELETE CASCADE
);
يحتوي على الرسائل بين الطلاب والعمادة أو الدكاترة.
CREATE TABLE messages (
message_id INT AUTO_INCREMENT PRIMARY KEY,
sender_id INT NOT NULL,
receiver_id INT NOT NULL,
subject VARCHAR(255),
body TEXT NOT NULL,
sent_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (sender_id) REFERENCES users(user_id) ON DELETE CASCADE,
FOREIGN KEY (receiver_id) REFERENCES users(user_id) ON DELETE CASCADE
);
يحتوي على الملفات والموارد الأكاديمية المتاحة للطلاب.
CREATE TABLE academic_files (
file_id INT AUTO_INCREMENT PRIMARY KEY,
uploader_id INT,
file_name VARCHAR(255) NOT NULL,
file_path VARCHAR(500) NOT NULL,
uploaded_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (uploader_id) REFERENCES users(user_id) ON DELETE SET NULL
);
يحتوي على استفسارات وشكاوى الطلاب.
CREATE TABLE inquiries (
inquiry_id INT AUTO_INCREMENT PRIMARY KEY,
student_id INT NOT NULL,
subject VARCHAR(255) NOT NULL,
message TEXT NOT NULL,
status ENUM('pending', 'answered', 'closed') DEFAULT 'pending',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NULL,
FOREIGN KEY (student_id) REFERENCES students(student_id) ON DELETE CASCADE
);
يحتوي على التقارير الأكاديمية والإدارية التي تولدها العمادة.
CREATE TABLE reports (
report_id INT AUTO_INCREMENT PRIMARY KEY,
admin_id INT,
report_type ENUM('academic', 'administrative') NOT NULL,
content TEXT NOT NULL,
generated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (admin_id) REFERENCES admins(admin_id) ON DELETE SET NULL
);
- المستخدمون (
users
) مرتبطون بالطلاب (students
)، الدكاترة (teachers
)، والعمادة (admins
) بناءً على الدور (role
). - الطلاب يمكنهم التسجيل في المواد الدراسية من خلال جدول التسجيلات (
enrollments
). - الدكاترة يمكنهم إدارة المقررات الدراسية وإدخال الدرجات.
- العمادة تدير حسابات المستخدمين، الجداول الدراسية، النتائج، وتوليد التقارير.
- الإشعارات يمكن أن تكون موجهة لمجموعات معينة من المستخدمين أو للجميع.
- الرسائل تتيح التواصل المباشر بين المستخدمين المختلفين.
- الملفات الدراسية يمكن للعمادة أو الدكاترة تحميلها ليتمكن الطلاب من الوصول إليها.
- الاستفسارات والشكاوى تتيح للطلاب التواصل مع العمادة بشأن المسائل الأكاديمية أو الإدارية.
- التقارير توفر للعمادة معلومات حول التفاعل الأكاديمي والإداري.
-- إضافة المستخدم في جدول users
INSERT INTO users (username, password, email, role)
VALUES ('student_username', 'hashed_password', '[email protected]', 'student');
-- الحصول على user_id الأخير
SET @last_user_id = LAST_INSERT_ID();
-- إضافة الطالب في جدول students
INSERT INTO students (user_id, first_name, last_name, enrollment_date, major)
VALUES (@last_user_id, 'اسم الطالب', 'اللقب', '2024-09-01', 'القسم');
INSERT INTO courses (course_code, course_name, description, credit_hours, teacher_id)
VALUES ('CS101', 'مقدمة في علوم الحاسوب', 'وصف المادة...', 3, NULL);
INSERT INTO enrollments (student_id, course_id, enrollment_date)
VALUES (1, 1, CURDATE());
INSERT INTO grades (enrollment_id, exam_type, grade)
VALUES (1, 'final', 85.50);
هذه مجموعة شاملة من استعلامات MySQL التي تلبي جميع المتطلبات الوظيفية للنظام الخاص بإدارة التعلم الجامعي.
رح تفيدكم في اثناء برمجة النظام
الاستعلامات مرتبة بحسب الجداول الرئيسية والوظائف المرتبطة بها، مع مراعاة صلاحيات المستخدمين المختلفة (الطلاب، الدكاترة، والعمادة).
1. جدول المستخدمين (
users
)إضافة مستخدم جديد
تحديث معلومات المستخدم
حذف مستخدم
عرض معلومات المستخدم
2. جدول الطلاب (
students
)إضافة طالب جديد
تحديث معلومات الطالب
حذف طالب
عرض معلومات الطالب
3. جدول الدكاترة (
teachers
)إضافة دكتور جديد
تحديث معلومات الدكتور
حذف دكتور
عرض معلومات الدكتور
4. جدول العمادة (
admins
)إضافة عميد جديد
تحديث معلومات العميد
حذف عميد
عرض معلومات العميد
5. جدول المواد الدراسية (
courses
)إضافة مادة دراسية جديدة
تحديث معلومات المادة الدراسية
حذف مادة دراسية
عرض معلومات المادة الدراسية
6. جدول تسجيل الطلاب في المواد (
enrollments
)تسجيل طالب في مادة
تحديث حالة التسجيل
حذف تسجيل طالب من مادة
عرض تسجيلات الطلاب
7. جدول الجداول الدراسية (
schedules
)إضافة جدول دراسي
تحديث جدول دراسي
حذف جدول دراسي
عرض الجداول الدراسية
8. جدول النتائج (
grades
)إضافة نتيجة امتحان
تحديث نتيجة امتحان
حذف نتيجة امتحان
عرض نتائج الطلاب
9. جدول الإشعارات (
notifications
)إضافة إشعار جديد
تحديث إشعار
حذف إشعار
عرض الإشعارات
10. جدول الرسائل (
messages
)إرسال رسالة جديدة
تحديث رسالة
حذف رسالة
عرض الرسائل
11. جدول الملفات الدراسية (
academic_files
)تحميل ملف دراسي
تحديث معلومات الملف
حذف ملف دراسي
عرض الملفات الدراسية
12. جدول الاستفسارات والشكاوى (
inquiries
)تقديم استفسار أو شكوى جديدة
تحديث حالة الاستفسار أو الشكوى
حذف استفسار أو شكوى
عرض الاستفسارات والشكاوى
13. جدول التقارير (
reports
)توليد تقرير جديد
تحديث تقرير
حذف تقرير
عرض التقارير
14. استعلامات إضافية حسب المتطلبات الوظيفية
تسجيل الدخول والتحقق من بيانات المستخدم
عرض الجدول الدراسي للطالب
التواصل مع العمادة (إرسال رسالة)
الاطلاع على نتائج الامتحانات
إدارة المواد الدراسية (للدكاترة والعمادة)
الدكاترة: إضافة/تعديل/حذف المقررات التي يدرسونها
العمادة: إضافة/تعديل/حذف أي مقرر دراسي
الدكاترة: إضافة درجات الطلاب
الدكاترة: التفاعل مع الطلاب (إرسال إشعارات خاصة بالمقرر)
العمادة: إدارة حسابات المستخدمين
العمادة: إرسال إشعارات عامة أو لطلاب معينين
العمادة: مراجعة والرد على استفسارات الطلاب
العمادة: إدارة الجداول الدراسية
العمادة: إدارة نتائج الطلاب
العمادة: توليد التقارير
15. ملاحظات إضافية
الأمان
تجزئة كلمات المرور: يجب تجزئة كلمات المرور باستخدام دوال مثل
bcrypt
قبل تخزينها في قاعدة البيانات. لا تخزن كلمات المرور كنصوص واضحة.التحقق من الصلاحيات: تأكد من أن التطبيق يتحقق من صلاحيات المستخدم قبل تنفيذ أي استعلامات حساسة. على سبيل المثال، يجب أن لا يتمكن الطلاب من تنفيذ استعلامات خاصة بالدكاترة أو العمادة.
الفهارس (Indexes)
لتحسين أداء الاستعلامات، يمكنك إضافة فهارس على الأعمدة التي تستخدم بشكل متكرر في عمليات البحث والربط.
القيود والتحقق من البيانات
استخدم القيود لضمان صحة البيانات المدخلة.
التعامل مع الأدوار والصلاحيات
يمكن إدارة صلاحيات المستخدمين بناءً على دورهم (
role
) في التطبيق من خلال واجهة المستخدم والتحقق من الصلاحيات على مستوى التطبيق. في قاعدة البيانات، يمكن استخدام الصلاحيات المستندة إلى المستخدمين إذا كان هناك حاجة لذلك، ولكن عادةً ما يتم إدارة ذلك في طبقة التطبيق.16. خلاصة
تغطي الاستعلامات المقدمة جميع المتطلبات الوظيفية للنظام الخاص بإدارة التعلم الجامعي، مع مراعاة عمليات الإضافة، التعديل، الحذف، والعرض لكل من الجداول الرئيسية. تأكد من أن التطبيق الذي سيستخدم قاعدة البيانات يتعامل بشكل صحيح مع التحقق من الصلاحيات، الأمان، والتعامل مع الأخطاء لضمان نظام آمن وفعال.