الجداول الرئيسية والعلاقات بينها مع مراعاة صلاحيات المستخدمين المختلفة (الطلاب، الدكاترة، والعمادة).
يحتوي على معلومات عامة عن جميع المستخدمين في النظام (طلاب، دكاترة، عمادة).
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);