
Untitled
By: a guest on
May 14th, 2012 | syntax:
None | size: 3.99 KB | hits: 13 | expires: Never
## SCHEMA
Character:
tableName: characters
columns:
id:
type: integer(2)
primary: true
unsigned: true
autoincrement: true
name:
type: string(255)
notnull: true
unique: true
rank:
type: integer(2)
unsigned: true
level:
type: integer(2)
unsigned: true
race:
type: enum
values: [Human, Dwarf, NightElf, Gnome, Draenei, Worgen, Orc, Undead, Tauren, Troll, BloodElf, Goblin]
class:
type: enum
values: [Deathknight, Druid, Hunter, Mage, Paladin, Priest, Rogue, Shaman, Warlock, Warrior]
gender:
type: integer(1)
unsigned: true
relations:
Bosses:
class: Boss
refClass: BossCharacter
foreignAlias: Characters
Raid:
tableName: raids
columns:
id:
type: integer(2)
primary: true
unsigned: true
autoincrement: true
name:
type: string(255)
notnull: true
date:
type: date
notnull: true
indexes:
raiduniquedate:
fields: [name, date]
type: unique
Boss:
tableName: bosses
columns:
id:
type: integer(2)
primary: true
unsigned: true
autoincrement: true
name:
type: string(255)
notnull: true
raid_id:
type: integer(2)
primary: true
unsigned: true
relations:
Raid:
class: Raid
local: raid_id
foreignAlias: Bosses
Characters:
foreignAlias: Bosses
class: Character
refClass: BossCharacter
indexes:
bossuniqueraid:
fields: [name, raid_id]
type: unique
BossCharacter:
tableName: bosses_characters
columns:
boss_id:
type: integer(2)
primary: true
unsigned: true
character_id:
type: integer(2)
primary: true
unsigned: true
relations:
Boss:
foreignAlias: BossCharacters
Character:
foreignAlias: BossCharacters
indexes:
bossunique:
fields: [boss_id, character_id]
type: unique
## SQL BUILD BY DOCTRINE (wrong)
CREATE TABLE bosses (id SMALLINT UNSIGNED AUTO_INCREMENT, name VARCHAR(255) NOT NULL, raid_id SMALLINT UNSIGNED, UNIQUE INDEX bossuniqueraid_idx (name, raid_id), PRIMARY KEY(id, raid_id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = innodb;
CREATE TABLE bosses_characters (boss_id SMALLINT UNSIGNED, character_id SMALLINT UNSIGNED, UNIQUE INDEX bossunique_idx (boss_id, character_id), PRIMARY KEY(boss_id, character_id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = innodb;
CREATE TABLE characters (id SMALLINT UNSIGNED AUTO_INCREMENT, name VARCHAR(255) NOT NULL UNIQUE, rank SMALLINT UNSIGNED, level SMALLINT UNSIGNED, race ENUM('Human', 'Dwarf', 'NightElf', 'Gnome', 'Draenei', 'Worgen', 'Orc', 'Undead', 'Tauren', 'Troll', 'BloodElf', 'Goblin'), class ENUM('Deathknight', 'Druid', 'Hunter', 'Mage', 'Paladin', 'Priest', 'Rogue', 'Shaman', 'Warlock', 'Warrior'), gender TINYINT UNSIGNED, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = innodb;
CREATE TABLE raids (id SMALLINT UNSIGNED AUTO_INCREMENT, name VARCHAR(255) NOT NULL, date DATE NOT NULL, UNIQUE INDEX raiduniquedate_idx (name, date), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = innodb;
ALTER TABLE bosses ADD CONSTRAINT bosses_raid_id_raids_id FOREIGN KEY (raid_id) REFERENCES raids(id);
# these two lines are completely wrong!
ALTER TABLE bosses ADD CONSTRAINT bosses_raid_id_bosses_characters_boss_id FOREIGN KEY (raid_id) REFERENCES bosses_characters(boss_id);
ALTER TABLE bosses ADD CONSTRAINT bosses_id_bosses_characters_boss_id FOREIGN KEY (id) REFERENCES bosses_characters(boss_id);
ALTER TABLE bosses_characters ADD CONSTRAINT bosses_characters_character_id_characters_id FOREIGN KEY (character_id) REFERENCES characters(id);
ALTER TABLE bosses_characters ADD CONSTRAINT bosses_characters_boss_id_bosses_id FOREIGN KEY (boss_id) REFERENCES bosses(id);