alter table vote drop foreign key fk_vote_user ; alter table vote drop foreign key fk_vote_quote ; alter table game drop foreign key fk_game_user ; alter table game_system_map drop foreign key FK5B40970FE5573E38 ; alter table game_system_map drop foreign key FK5B40970FD968AB11 ; alter table game_publisher_map drop foreign key FKC48C1B2A6659BAD ; alter table game_publisher_map drop foreign key FKC48C1B2D968AB11 ; alter table quote_flag drop foreign key fk_flag_user ; alter table quote_flag drop foreign key fk_flag_quote ; alter table game_quote drop foreign key fk_quote_user ; alter table game_quote drop foreign key fk_quote_game ; alter table quote_category_map drop foreign key FK5892F84657AD8111 ; alter table quote_category_map drop foreign key FK5892F846C2AA09DD ; drop table if exists vote; drop table if exists game; drop table if exists game_system_map; drop table if exists game_publisher_map; drop table if exists publisher; drop table if exists category; drop table if exists vgquote_user; drop table if exists quote_flag; drop table if exists game_quote; drop table if exists quote_category_map; drop table if exists system; create table vote ( vote_id INTEGER NOT NULL AUTO_INCREMENT, created DATETIME not null, direction INTEGER not null, voter_id INTEGER not null, quote_id INTEGER not null, primary key (vote_id) ); create table game ( game_id INTEGER NOT NULL AUTO_INCREMENT, game_name VARCHAR(255) not null, website VARCHAR(255), created DATETIME not null, icon BLOB, game_region INTEGER not null, creator INTEGER not null, primary key (game_id) ); create table game_system_map ( game_id INTEGER not null, system_id INTEGER not null, primary key (game_id, system_id) ); create table game_publisher_map ( game_id INTEGER not null, publisher_id INTEGER not null, primary key (game_id, publisher_id) ); create table publisher ( publisher_id INTEGER NOT NULL AUTO_INCREMENT, publisher_name TEXT not null, website TEXT, created DATETIME not null, primary key (publisher_id) ); create table category ( category_id INTEGER NOT NULL AUTO_INCREMENT, category_name VARCHAR(255) not null unique, created DATETIME not null, primary key (category_id) ); create table vgquote_user ( user_id INTEGER NOT NULL AUTO_INCREMENT, username VARCHAR(50), ip_address VARCHAR(40), created DATETIME not null, user_group INTEGER not null, user_password VARCHAR(100), salt VARCHAR(100), primary key (user_id) ); create table quote_flag ( quote_flag_id INTEGER NOT NULL AUTO_INCREMENT, flag_comment TEXT, created DATETIME not null, flag_type INTEGER not null, user_id INTEGER not null, quote_id INTEGER not null, primary key (quote_flag_id) ); create table game_quote ( quote_id INTEGER NOT NULL AUTO_INCREMENT, quote_text TEXT not null, created DATETIME not null, modified DATETIME, creator INTEGER not null, game_id INTEGER not null, score INTEGER, upvotes INTEGER, downvotes INTEGER, primary key (quote_id) ); create table quote_category_map ( quote_id INTEGER not null, category_id INTEGER not null, primary key (quote_id, category_id) ); create table system ( system_id INTEGER NOT NULL AUTO_INCREMENT, system_name VARCHAR(255) not null unique, system_abbreviation VARCHAR(12) unique, created DATETIME not null, release_date DATETIME, primary key (system_id) ); alter table vote add index (voter_id), add constraint fk_vote_user foreign key (voter_id) references vgquote_user (user_id); alter table vote add index (quote_id), add constraint fk_vote_quote foreign key (quote_id) references game_quote (quote_id); alter table game add index (creator), add constraint fk_game_user foreign key (creator) references vgquote_user (user_id); alter table game_system_map add index (system_id), add constraint FK5B40970FE5573E38 foreign key (system_id) references system (system_id); alter table game_system_map add index (game_id), add constraint FK5B40970FD968AB11 foreign key (game_id) references game (game_id); alter table game_publisher_map add index (publisher_id), add constraint FKC48C1B2A6659BAD foreign key (publisher_id) references publisher (publisher_id); alter table game_publisher_map add index (game_id), add constraint FKC48C1B2D968AB11 foreign key (game_id) references game (game_id); alter table quote_flag add index (user_id), add constraint fk_flag_user foreign key (user_id) references vgquote_user (user_id); alter table quote_flag add index (quote_id), add constraint fk_flag_quote foreign key (quote_id) references game_quote (quote_id); create index idx_score_upvotes on game_quote (score, upvotes); alter table game_quote add index (creator), add constraint fk_quote_user foreign key (creator) references vgquote_user (user_id); alter table game_quote add index (game_id), add constraint fk_quote_game foreign key (game_id) references game (game_id); alter table quote_category_map add index (category_id), add constraint FK5892F84657AD8111 foreign key (category_id) references category (category_id); alter table quote_category_map add index (quote_id), add constraint FK5892F846C2AA09DD foreign key (quote_id) references game_quote (quote_id);