Skip to content

Instantly share code, notes, and snippets.

@chengluyu
Created July 8, 2018 14:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chengluyu/2932d192b6b24c6ec5da512815f05f3b to your computer and use it in GitHub Desktop.
Save chengluyu/2932d192b6b24c6ec5da512815f05f3b to your computer and use it in GitHub Desktop.
Database System Final Project SQL Schema
CREATE TABLE `movies` (
`id` INT NOT NULL AUTO_INCREMENT,
`title` VARCHAR(255) NOT NULL,
`original_title` VARCHAR(255) NOT NULL,
`rating` FLOAT NOT NULL,
`introduction` VARCHAR(255) NOT NULL,
`film_year` INT NOT NULL,
`film_region_id` INT NOT NULL,
`is_tv` BOOLEAN NOT NULL,
`film_company_id` INT NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `screens` (
`movie_id` INT NOT NULL,
`screen_date` DATE NOT NULL,
`duration` TIME NOT NULL,
`region_id` INT NOT NULL,
`release_date` DATE NOT NULL,
`language` VARCHAR(255) NOT NULL,
PRIMARY KEY (`movie_id`)
);
CREATE TABLE `tags` (
`movie_id` INT NOT NULL,
`name` VARCHAR(255) NOT NULL,
PRIMARY KEY (`movie_id`,`name`)
);
CREATE TABLE `genres` (
`name` VARCHAR(255) NOT NULL,
`description` VARCHAR(255) NOT NULL,
PRIMARY KEY (`name`)
);
CREATE TABLE `movie_genres` (
`movie_id` INT NOT NULL,
`genre_name` VARCHAR(255) NOT NULL,
PRIMARY KEY (`movie_id`,`genre_name`)
);
CREATE TABLE `staffs` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`native_name` VARCHAR(255) NOT NULL,
`abstract` VARCHAR(255) NOT NULL,
`birthday` DATE NOT NULL,
`region_id` DATE NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `participates` (
`movie_id` INT NOT NULL,
`staff_id` INT NOT NULL,
`role` INT NOT NULL,
PRIMARY KEY (`movie_id`,`staff_id`,`role`)
);
CREATE TABLE `regions` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`description` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`,`name`)
);
CREATE TABLE `aliases` (
`movie_id` INT NOT NULL,
`name` VARCHAR(255) NOT NULL,
PRIMARY KEY (`movie_id`,`name`)
);
CREATE TABLE `film_company` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`region_id` INT NOT NULL,
`abstract` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`)
);
ALTER TABLE `movies` ADD CONSTRAINT `movies_fk0` FOREIGN KEY (`film_region_id`) REFERENCES `regions`(`id`);
ALTER TABLE `movies` ADD CONSTRAINT `movies_fk1` FOREIGN KEY (`film_company_id`) REFERENCES `film_company`(`id`);
ALTER TABLE `screens` ADD CONSTRAINT `screens_fk0` FOREIGN KEY (`movie_id`) REFERENCES `movies`(`id`);
ALTER TABLE `screens` ADD CONSTRAINT `screens_fk1` FOREIGN KEY (`region_id`) REFERENCES `regions`(`id`);
ALTER TABLE `tags` ADD CONSTRAINT `tags_fk0` FOREIGN KEY (`movie_id`) REFERENCES `movies`(`id`);
ALTER TABLE `movie_genres` ADD CONSTRAINT `movie_genres_fk0` FOREIGN KEY (`movie_id`) REFERENCES `movies`(`id`);
ALTER TABLE `movie_genres` ADD CONSTRAINT `movie_genres_fk1` FOREIGN KEY (`genre_name`) REFERENCES `genres`(`name`);
ALTER TABLE `staffs` ADD CONSTRAINT `staffs_fk0` FOREIGN KEY (`region_id`) REFERENCES `regions`(`id`);
ALTER TABLE `participates` ADD CONSTRAINT `participates_fk0` FOREIGN KEY (`movie_id`) REFERENCES `movies`(`id`);
ALTER TABLE `participates` ADD CONSTRAINT `participates_fk1` FOREIGN KEY (`staff_id`) REFERENCES `staffs`(`id`);
ALTER TABLE `aliases` ADD CONSTRAINT `aliases_fk0` FOREIGN KEY (`movie_id`) REFERENCES `movies`(`id`);
ALTER TABLE `film_company` ADD CONSTRAINT `film_company_fk0` FOREIGN KEY (`region_id`) REFERENCES `regions`(`id`);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment