Skip to content

Instantly share code, notes, and snippets.

@Nilpo
Created April 12, 2018 04:32
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 Nilpo/80225f4b9ee9157faf27a55292cad5c1 to your computer and use it in GitHub Desktop.
Save Nilpo/80225f4b9ee9157faf27a55292cad5c1 to your computer and use it in GitHub Desktop.
A sample of a good database creation script.
-- -----------------------------------------------------
-- Temporarily disable key checks
-- -----------------------------------------------------
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
-- -----------------------------------------------------
-- Schema Music
-- -----------------------------------------------------
DROP SCHEMA IF EXISTS `Music` ;
-- -----------------------------------------------------
-- Schema Music
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `Music` DEFAULT CHARACTER SET utf8 ;
USE `Music` ;
-- -----------------------------------------------------
-- Table `Music`.`Artists`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `Music`.`Artists` ;
CREATE TABLE IF NOT EXISTS `Music`.`Artists` (
`ArtistId` INT NOT NULL AUTO_INCREMENT,
`ArtistName` VARCHAR(255) NOT NULL,
PRIMARY KEY (`ArtistId`));
-- -----------------------------------------------------
-- Table `Music`.`Genres`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `Music`.`Genres` ;
CREATE TABLE IF NOT EXISTS `Music`.`Genres` (
`GenreId` INT NOT NULL AUTO_INCREMENT,
`Genre` VARCHAR(255) NOT NULL,
PRIMARY KEY (`GenreId`));
-- -----------------------------------------------------
-- Table `Music`.`Albums`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `Music`.`Albums` ;
CREATE TABLE IF NOT EXISTS `Music`.`Albums` (
`AlbumId` INT NOT NULL AUTO_INCREMENT,
`AlbumName` VARCHAR(255) NOT NULL,
`DateReleased` DATETIME NOT NULL,
`ArtistId` INT NOT NULL,
`GenreId` INT NOT NULL,
PRIMARY KEY (`AlbumId`),
INDEX `ArtistId_idx` (`ArtistId` ASC),
INDEX `GenreId_idx` (`GenreId` ASC),
CONSTRAINT `ArtistId`
FOREIGN KEY (`ArtistId`)
REFERENCES `Music`.`Artists` (`ArtistId`)
ON DELETE RESTRICT
ON UPDATE RESTRICT,
CONSTRAINT `GenreId`
FOREIGN KEY (`GenreId`)
REFERENCES `Music`.`Genres` (`GenreId`)
ON DELETE RESTRICT
ON UPDATE RESTRICT);
-- -----------------------------------------------------
-- Re-enable key checks
-- -----------------------------------------------------
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment