217 lines
6.6 KiB
SQL
217 lines
6.6 KiB
SQL
|
|
# This is a fix for InnoDB in MySQL >= 4.1.x
|
|
# It "suspends judgement" for fkey relationships until are tables are set.
|
|
SET FOREIGN_KEY_CHECKS = 0;
|
|
|
|
-- ---------------------------------------------------------------------
|
|
-- game
|
|
-- ---------------------------------------------------------------------
|
|
|
|
CREATE TABLE IF NOT EXISTS `game`
|
|
(
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`visible` TINYINT DEFAULT 0 NOT NULL,
|
|
`created_at` DATETIME,
|
|
`updated_at` DATETIME,
|
|
`version` INTEGER DEFAULT 0,
|
|
`version_created_at` DATETIME,
|
|
`version_created_by` VARCHAR(100),
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB;
|
|
|
|
-- ---------------------------------------------------------------------
|
|
-- question
|
|
-- ---------------------------------------------------------------------
|
|
|
|
CREATE TABLE IF NOT EXISTS `question`
|
|
(
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`visible` TINYINT DEFAULT 0 NOT NULL,
|
|
`game_id` INTEGER NOT NULL,
|
|
`created_at` DATETIME,
|
|
`updated_at` DATETIME,
|
|
`version` INTEGER DEFAULT 0,
|
|
`version_created_at` DATETIME,
|
|
`version_created_by` VARCHAR(100),
|
|
PRIMARY KEY (`id`),
|
|
INDEX `FI_game_id` (`game_id`),
|
|
CONSTRAINT `fk_game_id`
|
|
FOREIGN KEY (`game_id`)
|
|
REFERENCES `game` (`id`)
|
|
ON UPDATE RESTRICT
|
|
ON DELETE CASCADE
|
|
) ENGINE=InnoDB;
|
|
|
|
-- ---------------------------------------------------------------------
|
|
-- answer
|
|
-- ---------------------------------------------------------------------
|
|
|
|
CREATE TABLE IF NOT EXISTS `answer`
|
|
(
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`visible` TINYINT DEFAULT 0 NOT NULL,
|
|
`correct` TINYINT DEFAULT 0 NOT NULL,
|
|
`question_id` INTEGER NOT NULL,
|
|
`created_at` DATETIME,
|
|
`updated_at` DATETIME,
|
|
`version` INTEGER DEFAULT 0,
|
|
`version_created_at` DATETIME,
|
|
`version_created_by` VARCHAR(100),
|
|
PRIMARY KEY (`id`),
|
|
INDEX `FI_question_id` (`question_id`),
|
|
CONSTRAINT `fk_question_id`
|
|
FOREIGN KEY (`question_id`)
|
|
REFERENCES `question` (`id`)
|
|
ON UPDATE RESTRICT
|
|
ON DELETE CASCADE
|
|
) ENGINE=InnoDB;
|
|
|
|
-- ---------------------------------------------------------------------
|
|
-- participate
|
|
-- ---------------------------------------------------------------------
|
|
|
|
CREATE TABLE IF NOT EXISTS `participate`
|
|
(
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`email` VARCHAR(255) NOT NULL,
|
|
`win` TINYINT DEFAULT 0 NOT NULL,
|
|
`game_id` INTEGER NOT NULL,
|
|
`customer_id` INTEGER,
|
|
PRIMARY KEY (`id`),
|
|
INDEX `FI_game_participate_id` (`game_id`),
|
|
INDEX `FI_game_customer_id` (`customer_id`),
|
|
CONSTRAINT `fk_game_participate_id`
|
|
FOREIGN KEY (`game_id`)
|
|
REFERENCES `game` (`id`)
|
|
ON UPDATE RESTRICT
|
|
ON DELETE CASCADE,
|
|
CONSTRAINT `fk_game_customer_id`
|
|
FOREIGN KEY (`customer_id`)
|
|
REFERENCES `customer` (`id`)
|
|
ON UPDATE RESTRICT
|
|
ON DELETE CASCADE
|
|
) ENGINE=InnoDB;
|
|
|
|
-- ---------------------------------------------------------------------
|
|
-- game_i18n
|
|
-- ---------------------------------------------------------------------
|
|
|
|
CREATE TABLE IF NOT EXISTS `game_i18n`
|
|
(
|
|
`id` INTEGER NOT NULL,
|
|
`locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
|
|
`title` VARCHAR(255),
|
|
`description` LONGTEXT,
|
|
PRIMARY KEY (`id`,`locale`),
|
|
CONSTRAINT `game_i18n_FK_1`
|
|
FOREIGN KEY (`id`)
|
|
REFERENCES `game` (`id`)
|
|
ON DELETE CASCADE
|
|
) ENGINE=InnoDB;
|
|
|
|
-- ---------------------------------------------------------------------
|
|
-- question_i18n
|
|
-- ---------------------------------------------------------------------
|
|
|
|
CREATE TABLE IF NOT EXISTS `question_i18n`
|
|
(
|
|
`id` INTEGER NOT NULL,
|
|
`locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
|
|
`title` VARCHAR(255),
|
|
`description` LONGTEXT,
|
|
PRIMARY KEY (`id`,`locale`),
|
|
CONSTRAINT `question_i18n_FK_1`
|
|
FOREIGN KEY (`id`)
|
|
REFERENCES `question` (`id`)
|
|
ON DELETE CASCADE
|
|
) ENGINE=InnoDB;
|
|
|
|
-- ---------------------------------------------------------------------
|
|
-- answer_i18n
|
|
-- ---------------------------------------------------------------------
|
|
|
|
CREATE TABLE IF NOT EXISTS `answer_i18n`
|
|
(
|
|
`id` INTEGER NOT NULL,
|
|
`locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
|
|
`title` VARCHAR(255),
|
|
`description` LONGTEXT,
|
|
PRIMARY KEY (`id`,`locale`),
|
|
CONSTRAINT `answer_i18n_FK_1`
|
|
FOREIGN KEY (`id`)
|
|
REFERENCES `answer` (`id`)
|
|
ON DELETE CASCADE
|
|
) ENGINE=InnoDB;
|
|
|
|
-- ---------------------------------------------------------------------
|
|
-- game_version
|
|
-- ---------------------------------------------------------------------
|
|
|
|
CREATE TABLE IF NOT EXISTS `game_version`
|
|
(
|
|
`id` INTEGER NOT NULL,
|
|
`visible` TINYINT DEFAULT 0 NOT NULL,
|
|
`created_at` DATETIME,
|
|
`updated_at` DATETIME,
|
|
`version` INTEGER DEFAULT 0 NOT NULL,
|
|
`version_created_at` DATETIME,
|
|
`version_created_by` VARCHAR(100),
|
|
`question_ids` TEXT,
|
|
`question_versions` TEXT,
|
|
PRIMARY KEY (`id`,`version`),
|
|
CONSTRAINT `game_version_FK_1`
|
|
FOREIGN KEY (`id`)
|
|
REFERENCES `game` (`id`)
|
|
ON DELETE CASCADE
|
|
) ENGINE=InnoDB;
|
|
|
|
-- ---------------------------------------------------------------------
|
|
-- question_version
|
|
-- ---------------------------------------------------------------------
|
|
|
|
CREATE TABLE IF NOT EXISTS `question_version`
|
|
(
|
|
`id` INTEGER NOT NULL,
|
|
`visible` TINYINT DEFAULT 0 NOT NULL,
|
|
`game_id` INTEGER NOT NULL,
|
|
`created_at` DATETIME,
|
|
`updated_at` DATETIME,
|
|
`version` INTEGER DEFAULT 0 NOT NULL,
|
|
`version_created_at` DATETIME,
|
|
`version_created_by` VARCHAR(100),
|
|
`game_id_version` INTEGER DEFAULT 0,
|
|
`answer_ids` TEXT,
|
|
`answer_versions` TEXT,
|
|
PRIMARY KEY (`id`,`version`),
|
|
CONSTRAINT `question_version_FK_1`
|
|
FOREIGN KEY (`id`)
|
|
REFERENCES `question` (`id`)
|
|
ON DELETE CASCADE
|
|
) ENGINE=InnoDB;
|
|
|
|
-- ---------------------------------------------------------------------
|
|
-- answer_version
|
|
-- ---------------------------------------------------------------------
|
|
|
|
CREATE TABLE IF NOT EXISTS `answer_version`
|
|
(
|
|
`id` INTEGER NOT NULL,
|
|
`visible` TINYINT DEFAULT 0 NOT NULL,
|
|
`correct` TINYINT DEFAULT 0 NOT NULL,
|
|
`question_id` INTEGER NOT NULL,
|
|
`created_at` DATETIME,
|
|
`updated_at` DATETIME,
|
|
`version` INTEGER DEFAULT 0 NOT NULL,
|
|
`version_created_at` DATETIME,
|
|
`version_created_by` VARCHAR(100),
|
|
`question_id_version` INTEGER DEFAULT 0,
|
|
PRIMARY KEY (`id`,`version`),
|
|
CONSTRAINT `answer_version_FK_1`
|
|
FOREIGN KEY (`id`)
|
|
REFERENCES `answer` (`id`)
|
|
ON DELETE CASCADE
|
|
) ENGINE=InnoDB;
|
|
|
|
# This restores the fkey checks, after having unset them earlier
|
|
SET FOREIGN_KEY_CHECKS = 1;
|