u
Cette révision appartient à :
Parent
0c9bc7c0cd
révision
f50e0aaada
230
eLearning.sql
Fichier normal
230
eLearning.sql
Fichier normal
@ -0,0 +1,230 @@
|
||||
-- Roles table stores information about user roles
|
||||
CREATE TABLE roles (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
type VARCHAR(50) NOT NULL,
|
||||
identity VARCHAR(100) NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
);
|
||||
|
||||
-- Users table stores information about all users
|
||||
CREATE TABLE users (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
contact VARCHAR(255) UNIQUE,
|
||||
email VARCHAR(255) UNIQUE,
|
||||
description TEXT,
|
||||
password VARCHAR(255) NOT NULL,
|
||||
role_id INT,
|
||||
image VARCHAR(255),
|
||||
remember_token VARCHAR(255),
|
||||
status INT DEFAULT 1 COMMENT '1 active, 0 inactive',
|
||||
access_block TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP NULL,
|
||||
FOREIGN KEY (role_id) REFERENCES roles(id)
|
||||
);
|
||||
|
||||
-- Students table stores additional information about students
|
||||
CREATE TABLE students (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
contact VARCHAR(255) UNIQUE,
|
||||
email VARCHAR(255) UNIQUE,
|
||||
password VARCHAR(255) NOT NULL,
|
||||
role_id INT,
|
||||
date_of_birth DATE,
|
||||
gender ENUM('male', 'female', 'other'),
|
||||
image VARCHAR(255),
|
||||
remember_token VARCHAR(255),
|
||||
status INT DEFAULT 1 COMMENT '1 active, 0 inactive',
|
||||
access_block TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP NULL,
|
||||
FOREIGN KEY (role_id) REFERENCES roles(id)
|
||||
);
|
||||
|
||||
-- Instructors table stores additional information about instructors
|
||||
CREATE TABLE instructors (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
contact VARCHAR(255) UNIQUE,
|
||||
email VARCHAR(255) UNIQUE,
|
||||
password VARCHAR(255) NOT NULL,
|
||||
role_id INT,
|
||||
bio TEXT,
|
||||
image VARCHAR(255),
|
||||
remember_token VARCHAR(255),
|
||||
status INT DEFAULT 1 COMMENT '1 active, 0 inactive',
|
||||
access_block TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP NULL,
|
||||
FOREIGN KEY (role_id) REFERENCES roles(id)
|
||||
);
|
||||
|
||||
-- Course Categories table stores information about course categories
|
||||
CREATE TABLE course_categories (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
category_name varchar(255) NOT NULL,
|
||||
category_status tinyint(1) NOT NULL DEFAULT 1 COMMENT '1 active, 0 inactive',
|
||||
category_image varchar(255) DEFAULT NULL,
|
||||
created_at timestamp NULL DEFAULT NULL,
|
||||
updated_at timestamp NULL DEFAULT NULL,
|
||||
deleted_at timestamp NULL DEFAULT NULL,
|
||||
);
|
||||
|
||||
-- Courses table stores information about each course
|
||||
CREATE TABLE courses (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
title VARCHAR(255) NOT NULL,
|
||||
description TEXT,
|
||||
category_id INT,
|
||||
difficulty ENUM('beginner', 'intermediate', 'advanced') NOT NULL,
|
||||
instructor_id INT,
|
||||
price DECIMAL(10, 2) DEFAULT 0.00,
|
||||
is_free BOOLEAN DEFAULT false,
|
||||
is_subscription_based BOOLEAN DEFAULT false,
|
||||
subscription_price DECIMAL(10, 2),
|
||||
prerequisites TEXT,
|
||||
image VARCHAR(255),
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (instructor_id) REFERENCES instructors(id),
|
||||
FOREIGN KEY (category_id) REFERENCES course_categories(id)
|
||||
);
|
||||
|
||||
-- Enrollments table tracks which users are enrolled in which courses
|
||||
CREATE TABLE enrollments (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
student_id INT,
|
||||
course_id INT,
|
||||
enrollment_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (student_id) REFERENCES students(id),
|
||||
FOREIGN KEY (course_id) REFERENCES courses(id)
|
||||
);
|
||||
|
||||
-- Materials table stores various types of course materials
|
||||
CREATE TABLE materials (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
course_id INT,
|
||||
title VARCHAR(255) NOT NULL,
|
||||
type ENUM('video', 'document', 'quiz') NOT NULL,
|
||||
content_url TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (course_id) REFERENCES courses(id)
|
||||
);
|
||||
|
||||
-- Quizzes table stores information about quizzes
|
||||
CREATE TABLE quizzes (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
course_id INT,
|
||||
title VARCHAR(255) NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (course_id) REFERENCES courses(id)
|
||||
);
|
||||
|
||||
-- Questions table stores individual questions for quizzes
|
||||
CREATE TABLE questions (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
quiz_id INT,
|
||||
content TEXT NOT NULL,
|
||||
type ENUM('multiple_choice', 'true_false', 'short_answer') NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (quiz_id) REFERENCES quizzes(id)
|
||||
);
|
||||
|
||||
-- User_answers table stores user responses to quiz questions
|
||||
CREATE TABLE user_answers (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
student_id INT,
|
||||
question_id INT,
|
||||
answer TEXT,
|
||||
is_correct BOOLEAN,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (student_id) REFERENCES students(id),
|
||||
FOREIGN KEY (question_id) REFERENCES questions(id)
|
||||
);
|
||||
|
||||
-- Reviews table stores reviews for courses
|
||||
CREATE TABLE reviews (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
student_id INT,
|
||||
course_id INT,
|
||||
rating INT,
|
||||
comment TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (student_id) REFERENCES students(id),
|
||||
FOREIGN KEY (course_id) REFERENCES courses(id)
|
||||
);
|
||||
|
||||
-- Payments table stores information about individual transactions
|
||||
CREATE TABLE payments (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
student_id INT,
|
||||
course_id INT,
|
||||
amount DECIMAL(10, 2) NOT NULL,
|
||||
payment_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
payment_method VARCHAR(255),
|
||||
transaction_id VARCHAR(255),
|
||||
status ENUM('success', 'pending', 'failed') DEFAULT 'pending',
|
||||
FOREIGN KEY (student_id) REFERENCES students(id),
|
||||
FOREIGN KEY (course_id) REFERENCES courses(id)
|
||||
);
|
||||
|
||||
-- Subscriptions table tracks user subscriptions
|
||||
CREATE TABLE subscriptions (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
student_id INT,
|
||||
course_id INT,
|
||||
plan ENUM('monthly', 'yearly') NOT NULL,
|
||||
start_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
end_date TIMESTAMP,
|
||||
status ENUM('active', 'canceled', 'expired') DEFAULT 'active',
|
||||
FOREIGN KEY (student_id) REFERENCES students(id),
|
||||
FOREIGN KEY (course_id) REFERENCES courses(id)
|
||||
);
|
||||
|
||||
-- Course_progress table stores information about user progress in each course
|
||||
CREATE TABLE course_progress (
|
||||
progress_id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
student_id INT,
|
||||
course_id INT,
|
||||
progress_percentage INT DEFAULT 0,
|
||||
completed BOOLEAN DEFAULT false,
|
||||
last_viewed_material_id INT,
|
||||
last_viewed_at TIMESTAMP,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (student_id) REFERENCES students(id),
|
||||
FOREIGN KEY (course_id) REFERENCES courses(id),
|
||||
FOREIGN KEY (last_viewed_material_id) REFERENCES materials(id)
|
||||
);
|
||||
|
||||
-- Discussions table stores discussions related to courses
|
||||
CREATE TABLE discussions (
|
||||
discussion_id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
user_id INT,
|
||||
course_id INT,
|
||||
title VARCHAR(255) NOT NULL,
|
||||
content TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (user_id) REFERENCES users(user_id),
|
||||
FOREIGN KEY (course_id) REFERENCES courses(course_id)
|
||||
);
|
||||
|
||||
-- Messages table stores direct messages between users
|
||||
CREATE TABLE messages (
|
||||
message_id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
sender_id INT,
|
||||
receiver_id INT,
|
||||
content TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (sender_id) REFERENCES users(user_id),
|
||||
FOREIGN KEY (receiver_id) REFERENCES users(user_id)
|
||||
);
|
||||
Chargement…
Référencer dans un nouveau ticket
Block a user