38 lines
2.4 KiB
SQL
38 lines
2.4 KiB
SQL
CREATE TABLE `grades` (
|
|
`id` varchar(128) NOT NULL,
|
|
`school_id` varchar(128) NOT NULL,
|
|
`name` varchar(100) NOT NULL,
|
|
`order` int NOT NULL DEFAULT 0,
|
|
`grade_head_id` varchar(128),
|
|
`teaching_head_id` varchar(128),
|
|
`created_at` timestamp NOT NULL DEFAULT (now()),
|
|
`updated_at` timestamp NOT NULL DEFAULT (now()) ON UPDATE CURRENT_TIMESTAMP,
|
|
CONSTRAINT `grades_id` PRIMARY KEY(`id`)
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `schools` (
|
|
`id` varchar(128) NOT NULL,
|
|
`name` varchar(255) NOT NULL,
|
|
`code` varchar(50),
|
|
`created_at` timestamp NOT NULL DEFAULT (now()),
|
|
`updated_at` timestamp NOT NULL DEFAULT (now()) ON UPDATE CURRENT_TIMESTAMP,
|
|
CONSTRAINT `schools_id` PRIMARY KEY(`id`),
|
|
CONSTRAINT `schools_name_unique` UNIQUE(`name`),
|
|
CONSTRAINT `schools_code_unique` UNIQUE(`code`)
|
|
);
|
|
--> statement-breakpoint
|
|
ALTER TABLE `classes` ADD `school_id` varchar(128);--> statement-breakpoint
|
|
ALTER TABLE `classes` ADD `grade_id` varchar(128);--> statement-breakpoint
|
|
ALTER TABLE `grades` ADD CONSTRAINT `g_s_fk` FOREIGN KEY (`school_id`) REFERENCES `schools`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE `grades` ADD CONSTRAINT `g_gh_fk` FOREIGN KEY (`grade_head_id`) REFERENCES `users`(`id`) ON DELETE set null ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE `grades` ADD CONSTRAINT `g_th_fk` FOREIGN KEY (`teaching_head_id`) REFERENCES `users`(`id`) ON DELETE set null ON UPDATE no action;--> statement-breakpoint
|
|
CREATE INDEX `grades_school_idx` ON `grades` (`school_id`);--> statement-breakpoint
|
|
CREATE INDEX `grades_school_name_uniq` ON `grades` (`school_id`,`name`);--> statement-breakpoint
|
|
CREATE INDEX `grades_grade_head_idx` ON `grades` (`grade_head_id`);--> statement-breakpoint
|
|
CREATE INDEX `grades_teaching_head_idx` ON `grades` (`teaching_head_id`);--> statement-breakpoint
|
|
CREATE INDEX `schools_name_idx` ON `schools` (`name`);--> statement-breakpoint
|
|
CREATE INDEX `schools_code_idx` ON `schools` (`code`);--> statement-breakpoint
|
|
ALTER TABLE `classes` ADD CONSTRAINT `c_s_fk` FOREIGN KEY (`school_id`) REFERENCES `schools`(`id`) ON DELETE set null ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE `classes` ADD CONSTRAINT `c_g_fk` FOREIGN KEY (`grade_id`) REFERENCES `grades`(`id`) ON DELETE set null ON UPDATE no action;--> statement-breakpoint
|
|
CREATE INDEX `classes_school_idx` ON `classes` (`school_id`);--> statement-breakpoint
|
|
CREATE INDEX `classes_grade_id_idx` ON `classes` (`grade_id`); |