CREATE TABLE departments (
department_id INT PRIMARY KEY AUTO_INCREMENT,
department_name VARCHAR(50) NOT NULL
);
CREATE TABLE students (
student_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
department_id INT NOT NULL,
FOREIGN KEY (department_id) REFERENCES departments(department_id)
);
CREATE TABLE teachers (
teacher_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
department_id INT NOT NULL,
FOREIGN KEY (department_id) REFERENCES departments(department_id)
);
CREATE TABLE courses (
course_id INT PRIMARY KEY AUTO_INCREMENT,
course_name VARCHAR(100) NOT NULL,
credits INT NOT NULL CHECK (credits > 0)
);
CREATE TABLE offerings (
offering_id INT PRIMARY KEY AUTO_INCREMENT,
course_id INT NOT NULL,
teacher_id INT NOT NULL,
semester VARCHAR(20) NOT NULL,
capacity INT NOT NULL CHECK (capacity > 0),
FOREIGN KEY (course_id) REFERENCES courses(course_id),
FOREIGN KEY (teacher_id) REFERENCES teachers(teacher_id)
);
CREATE TABLE enrollments (
enrollment_id INT PRIMARY KEY AUTO_INCREMENT,
student_id INT NOT NULL,
offering_id INT NOT NULL,
enroll_date DATE NOT NULL,
UNIQUE (student_id, offering_id),
FOREIGN KEY (student_id) REFERENCES students(student_id),
FOREIGN KEY (offering_id) REFERENCES offerings(offering_id)
);
CREATE TABLE teaching_assignments (
assignment_id INT PRIMARY KEY AUTO_INCREMENT,
teacher_id INT NOT NULL,
offering_id INT NOT NULL,
FOREIGN KEY (teacher_id) REFERENCES teachers(teacher_id),
FOREIGN KEY (offering_id) REFERENCES offerings(offering_id)
);