52 lines
2.7 KiB
SQL
52 lines
2.7 KiB
SQL
CREATE TABLE `academic_years` (
|
|
`id` varchar(128) NOT NULL,
|
|
`name` varchar(100) NOT NULL,
|
|
`start_date` timestamp NOT NULL,
|
|
`end_date` timestamp NOT NULL,
|
|
`is_active` boolean NOT NULL DEFAULT false,
|
|
`created_at` timestamp NOT NULL DEFAULT (now()),
|
|
`updated_at` timestamp NOT NULL DEFAULT (now()) ON UPDATE CURRENT_TIMESTAMP,
|
|
CONSTRAINT `academic_years_id` PRIMARY KEY(`id`),
|
|
CONSTRAINT `academic_years_name_unique` UNIQUE(`name`)
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `class_subject_teachers` (
|
|
`class_id` varchar(128) NOT NULL,
|
|
`subject` enum('语文','数学','英语','美术','体育','科学','社会','音乐') NOT NULL,
|
|
`teacher_id` varchar(128),
|
|
`created_at` timestamp NOT NULL DEFAULT (now()),
|
|
`updated_at` timestamp NOT NULL DEFAULT (now()) ON UPDATE CURRENT_TIMESTAMP,
|
|
CONSTRAINT `class_subject_teachers_class_id_subject_pk` PRIMARY KEY(`class_id`,`subject`)
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `classrooms` (
|
|
`id` varchar(128) NOT NULL,
|
|
`name` varchar(255) NOT NULL,
|
|
`building` varchar(100),
|
|
`floor` int,
|
|
`capacity` int,
|
|
`created_at` timestamp NOT NULL DEFAULT (now()),
|
|
`updated_at` timestamp NOT NULL DEFAULT (now()) ON UPDATE CURRENT_TIMESTAMP,
|
|
CONSTRAINT `classrooms_id` PRIMARY KEY(`id`),
|
|
CONSTRAINT `classrooms_name_unique` UNIQUE(`name`)
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `departments` (
|
|
`id` varchar(128) NOT NULL,
|
|
`name` varchar(255) NOT NULL,
|
|
`description` text,
|
|
`created_at` timestamp NOT NULL DEFAULT (now()),
|
|
`updated_at` timestamp NOT NULL DEFAULT (now()) ON UPDATE CURRENT_TIMESTAMP,
|
|
CONSTRAINT `departments_id` PRIMARY KEY(`id`),
|
|
CONSTRAINT `departments_name_unique` UNIQUE(`name`)
|
|
);
|
|
--> statement-breakpoint
|
|
ALTER TABLE `classes` ADD `school_name` varchar(255);--> statement-breakpoint
|
|
ALTER TABLE `class_subject_teachers` ADD CONSTRAINT `class_subject_teachers_teacher_id_users_id_fk` FOREIGN KEY (`teacher_id`) REFERENCES `users`(`id`) ON DELETE set null ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE `class_subject_teachers` ADD CONSTRAINT `cst_c_fk` FOREIGN KEY (`class_id`) REFERENCES `classes`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
CREATE INDEX `academic_years_name_idx` ON `academic_years` (`name`);--> statement-breakpoint
|
|
CREATE INDEX `academic_years_active_idx` ON `academic_years` (`is_active`);--> statement-breakpoint
|
|
CREATE INDEX `class_subject_teachers_class_idx` ON `class_subject_teachers` (`class_id`);--> statement-breakpoint
|
|
CREATE INDEX `class_subject_teachers_teacher_idx` ON `class_subject_teachers` (`teacher_id`);--> statement-breakpoint
|
|
CREATE INDEX `classrooms_name_idx` ON `classrooms` (`name`);--> statement-breakpoint
|
|
CREATE INDEX `departments_name_idx` ON `departments` (`name`); |