DBDiagramCode 3
DBDiagramCode 3
Table "Users" {
"user_id" INT [pk, increment]
"role_id" INT [not null]
"username" VARCHAR(50) [unique, not null]
"password" VARCHAR(50) [not null]
"full_name" NVARCHAR(100)
"email" VARCHAR(100)
"birth_date" DATE
"image" VARCHAR(255)
"phone_number" VARCHAR(20)
"address" NVARCHAR(255)
"created_at" DATETIME [not null]
}
Table "Categories" {
"category_id" INT [pk, increment]
"name" NVARCHAR(100) [not null]
"description" NVARCHAR(100)
}
Table "Courses" {
"course_id" INT [pk, increment]
"title" NVARCHAR(100) [not null]
"category_id" INT
"description" NVARCHAR(MAX)
"price" DECIMAL(10,2) [not null]
"created_at" DATETIME [not null]
"updated_at" DATETIME
"status" VARCHAR(20)
}
Table "CourseContents" {
"content_id" INT [pk, increment]
"course_id" INT [not null]
"type" VARCHAR(10) [not null]
"content_path" VARCHAR(50)
}
Table "Feedback" {
"feedback_id" INT [pk, increment]
"user_id" INT [not null]
"course_id" INT [not null]
"rating" INT [not null]
"comment" NVARCHAR(100)
"created_at" DATETIME [not null]
}
Table "Orders" {
"order_id" INT [pk, increment]
"user_id" INT [not null]
"order_date" DATETIME [not null]
"total_amount" DECIMAL(10,2) [not null]
}
Table "OrderItems" {
"order_id" INT [not null]
"course_id" INT [not null]
Indexes {
(order_id, course_id) [pk]
}
}
Table "Cart" {
"user_id" INT [not null]
"course_id" INT [not null]
Indexes {
(user_id, course_id) [pk]
}
}
Table "Purchases" {
"user_id" INT [not null]
"course_id" INT [not null]
Indexes {
(user_id, course_id) [pk]
}
}
Table "Experts" {
"expert_id" INT [pk, increment]
"user_id" INT [not null]
"description" NVARCHAR(MAX) [not null]
"certification" NVARCHAR(MAX)
}
Table "ExpertCourses" {
"expert_id" INT [not null]
"course_id" INT [not null]
Indexes {
(expert_id, course_id) [pk]
}
}
Table "ExpertCategories" {
"expert_id" INT [not null]
"category_id" INT [not null]
Indexes {
(expert_id, category_id) [pk]
}
}
Table "Sections" {
"section_id" INT [pk, increment]
"course_id" INT [not null]
"title" NVARCHAR(100) [not null]
}
Table "Lectures" {
"lecture_id" INT [pk, increment]
"section_id" INT [not null]
"title" NVARCHAR(100) [not null]
}
Table "Exams" {
"exam_id" INT [pk, increment]
"lecture_id" INT [not null]
"title" NVARCHAR(100) [not null]
"description" NVARCHAR(MAX)
}
Table "ExamQuestions" {
"question_id" INT [pk, increment]
"exam_id" INT [not null]
"question_text" NVARCHAR(MAX) [not null]
}
Table "ExamChoices" {
"choice_id" INT [pk, increment]
"question_id" INT [not null]
"choice_text" NVARCHAR(MAX) [not null]
"is_correct" BIT [not null]
}
Table "ExamSubmissions" {
"submission_id" INT [pk, increment]
"user_id" INT [not null]
"exam_id" INT [not null]
"submission_date" DATETIME [not null]
"score" DECIMAL(5,2) [not null]
}
Table "ExamResults" {
"result_id" INT [pk, increment]
"submission_id" INT [not null]
"question_id" INT [not null]
"choice_id" INT [not null]
"is_correct" BIT [not null]
"question_text" NVARCHAR(MAX)
"choice_text" NVARCHAR(MAX)
}
Table "Videos" {
"video_id" INT [pk, increment]
"lecture_id" INT [not null]
"title" NVARCHAR(100) [not null]
"description" NVARCHAR(MAX)
"youtube_link" NVARCHAR(MAX) [not null]
}
Table "Articles" {
"article_id" INT [pk, increment]
"lecture_id" INT [not null]
"title" NVARCHAR(100) [not null]
"description" NVARCHAR(MAX)
"article_link" NVARCHAR(MAX)
}
Table "UserProgress" {
"user_id" INT [not null]
"course_id" INT [not null]
"grade" INT [not null]
"progress" DECIMAL(5,2) [not null]
Indexes {
(user_id, course_id) [pk]
}
}