Question: USE LanguageCenter; CREATE TABLE Student ( student _ id INT PRIMARY KEY AUTO _ INCREMENT, first _ name VARCHAR ( 2 0 ) , last

USE LanguageCenter; CREATE TABLE Student ( student_id INT PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR(20), last_name VARCHAR(20), date_of_birth DATE, contact_number VARCHAR(15), email VARCHAR(100), address VARCHAR(255), registration_date DATE NOT NULL ); CREATE TABLE Teacher ( teacher_id INT PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR(20), last_name VARCHAR(20), contact_number VARCHAR(15), email VARCHAR(100), hire_date DATE, salary DECIMAL(10,2)); CREATE TABLE Course ( course_id INT PRIMARY KEY AUTO_INCREMENT, course_name VARCHAR(100), language VARCHAR(50), level ENUM('Beginner', 'Intermediate', 'Advanced'), course_fee DECIMAL(10,2) CHECK (course_fee >0), duration_weeks INT ); CREATE TABLE Class ( class_id INT PRIMARY KEY AUTO_INCREMENT, class_name VARCHAR(50), room_number VARCHAR(10), start_time TIME, end_time TIME ); CREATE TABLE Enrollment ( enrollment_id INT PRIMARY KEY AUTO_INCREMENT, student_id INT, course_id INT, enrollment_date DATE, progress_status ENUM('Not Started', 'In Progress', 'Completed'), FOREIGN KEY (student_id) REFERENCES Student(student_id), FOREIGN KEY (course_id) REFERENCES Course(course_id)); CREATE TABLE Payment ( payment_id INT PRIMARY KEY AUTO_INCREMENT, student_id INT, payment_date DATE, amount DECIMAL(10,2), payment_method ENUM('Credit Card', 'Cash', 'Bank Transfer'), FOREIGN KEY (student_id) REFERENCES Student(student_id)); DELIMITER $$ CREATE TRIGGER validate_payment_date BEFORE INSERT ON Payment FOR EACH ROW BEGIN -- Check if the payment_date is in the future IF NEW.payment_date > CURDATE() THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Payment date cannot be in the future'; END IF; END$$ DELIMITER ; CREATE TABLE Schedule ( schedule_id INT PRIMARY KEY AUTO_INCREMENT, class_id INT, teacher_id INT, day_of_week ENUM('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'), start_time TIME, end_time TIME, FOREIGN KEY (class_id) REFERENCES Class(class_id), FOREIGN KEY (teacher_id) REFERENCES Teacher(teacher_id)); CREATE TABLE Attendance ( attendance_id INT PRIMARY KEY AUTO_INCREMENT, student_id INT, class_id INT, attendance_date DATE, attendance_status ENUM('Present', 'Absent'), FOREIGN KEY (student_id) REFERENCES Student(student_id), FOREIGN KEY (class_id) REFERENCES Class(class_id)); CREATE TABLE Feedback ( feedback_id INT PRIMARY KEY AUTO_INCREMENT, student_id INT, course_id INT, feedback_date DATE, rating INT CHECK (rating BETWEEN 1 AND 5), comments TEXT, FOREIGN KEY (student_id) REFERENCES Student(student_id), FOREIGN KEY (course_id) REFERENCES Course(course_id)); CREATE TABLE Admin ( admin_id INT PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR(50), last_name VARCHAR(50), contact_number VARCHAR(15), email VARCHAR(100), role VARCHAR(50)); CREATE ROLE 'StudentRole'; CREATE ROLE 'TeacherRole'; -- Grant read-write access to students for their own details GRANT SELECT, UPDATE ON Student TO 'StudentRole'; GRANT SELECT ON Course TO 'StudentRole'; GRANT SELECT ON Enrollment TO 'StudentRole'; GRANT INSERT, UPDATE ON Feedback TO 'StudentRole'; -- Grant read-write access to teachers for attendance marking GRANT SELECT, UPDATE ON Teacher TO 'TeacherRole'; GRANT SELECT ON Class TO 'TeacherRole'; GRANT SELECT, UPDATE ON Attendance TO 'TeacherRole'; -To create an ER diagram to this SQL code with all relations and attributes

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!