43 lines
2.4 KiB
SQL
43 lines
2.4 KiB
SQL
CREATE TABLE `class_enrollments` (
|
|
`class_id` varchar(128) NOT NULL,
|
|
`student_id` varchar(128) NOT NULL,
|
|
`class_enrollment_status` enum('active','inactive') NOT NULL DEFAULT 'active',
|
|
`created_at` timestamp NOT NULL DEFAULT (now()),
|
|
CONSTRAINT `class_enrollments_class_id_student_id_pk` PRIMARY KEY(`class_id`,`student_id`)
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `class_schedule` (
|
|
`id` varchar(128) NOT NULL,
|
|
`class_id` varchar(128) NOT NULL,
|
|
`weekday` int NOT NULL,
|
|
`start_time` varchar(5) NOT NULL,
|
|
`end_time` varchar(5) NOT NULL,
|
|
`course` varchar(255) NOT NULL,
|
|
`location` varchar(100),
|
|
`created_at` timestamp NOT NULL DEFAULT (now()),
|
|
`updated_at` timestamp NOT NULL DEFAULT (now()) ON UPDATE CURRENT_TIMESTAMP,
|
|
CONSTRAINT `class_schedule_id` PRIMARY KEY(`id`)
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `classes` (
|
|
`id` varchar(128) NOT NULL,
|
|
`name` varchar(255) NOT NULL,
|
|
`grade` varchar(50) NOT NULL,
|
|
`homeroom` varchar(50),
|
|
`room` varchar(50),
|
|
`teacher_id` varchar(128) NOT NULL,
|
|
`created_at` timestamp NOT NULL DEFAULT (now()),
|
|
`updated_at` timestamp NOT NULL DEFAULT (now()) ON UPDATE CURRENT_TIMESTAMP,
|
|
CONSTRAINT `classes_id` PRIMARY KEY(`id`)
|
|
);
|
|
--> statement-breakpoint
|
|
ALTER TABLE `class_enrollments` ADD CONSTRAINT `ce_c_fk` FOREIGN KEY (`class_id`) REFERENCES `classes`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE `class_enrollments` ADD CONSTRAINT `ce_s_fk` FOREIGN KEY (`student_id`) REFERENCES `users`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE `class_schedule` ADD CONSTRAINT `cs_c_fk` FOREIGN KEY (`class_id`) REFERENCES `classes`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE `classes` ADD CONSTRAINT `classes_teacher_id_users_id_fk` FOREIGN KEY (`teacher_id`) REFERENCES `users`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
CREATE INDEX `class_enrollments_class_idx` ON `class_enrollments` (`class_id`);--> statement-breakpoint
|
|
CREATE INDEX `class_enrollments_student_idx` ON `class_enrollments` (`student_id`);--> statement-breakpoint
|
|
CREATE INDEX `class_schedule_class_idx` ON `class_schedule` (`class_id`);--> statement-breakpoint
|
|
CREATE INDEX `class_schedule_class_day_idx` ON `class_schedule` (`class_id`,`weekday`);--> statement-breakpoint
|
|
CREATE INDEX `classes_teacher_idx` ON `classes` (`teacher_id`);--> statement-breakpoint
|
|
CREATE INDEX `classes_grade_idx` ON `classes` (`grade`); |