CREATE DATABASE highscores; use highscores; CREATE TABLE Guilds( GuildId bigint unsigned not null unique, SubmissionChannel bigint unsigned, UsernameLength smallint DEFAULT 12, VerificationChannel bigint unsigned, PRIMARY KEY (GuildId) ); CREATE TABLE CategoryGroups( GroupId int unsigned not null unique AUTO_INCREMENT, GroupName varchar(50) not null, ChannelId bigint unsigned, GuildId bigint unsigned not null, MessageId bigint unsigned, PadLength smallint not null DEFAULT 26, Size smallint not null DEFAULT 3, -- unsure if I like this name. Also unsure belong here or in Category CONSTRAINT UniqueGuildCategoryGroup UNIQUE (GuildId, GroupName), FOREIGN KEY (GuildId) REFERENCES Guilds(GuildId), PRIMARY KEY (GroupId) ); CREATE TABLE Categories( CategoryId int unsigned not null unique AUTO_INCREMENT, CategoryName varchar(30) not null, GroupId int unsigned not null, IsAscending boolean not null DEFAULT true, IsTimeRecord boolean not null DEFAULT false, IsValidated boolean not null DEFAULT true, CONSTRAINT UniqueCategoryInGroup UNIQUE (GroupId, CategoryName), FOREIGN KEY (GroupId) REFERENCES CategoryGroups(GroupId), PRIMARY Key (CategoryId) ); CREATE TABLE Scores( UserName varchar(30) not null, Score float not null, -- Maybe should have time and int scores?? timestamp type? CategoryId int unsigned not null, FOREIGN KEY (CategoryId) REFERENCES Categories(CategoryId), PRIMARY KEY (CategoryId, UserName) );