--- /dev/null
+/*!40101 SET NAMES utf8 */;
+
+DROP TABLE IF EXISTS `characters`;
+
+DROP TABLE IF EXISTS `characters_has_profiles`;
+DROP TABLE IF EXISTS `profile_selects`;
+DROP TABLE IF EXISTS `profile_tables`;
+DROP TABLE IF EXISTS `profiles`;
+
+DROP TABLE IF EXISTS `systems`;
+
+CREATE TABLE `systems` (
+ `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
+ `name` VARCHAR(255) NOT NULL,
+ `detail` TEXT NOT NULL,
+ `sort_order` INTEGER UNSIGNED NOT NULL DEFAULT '0',
+ `image_filename` VARCHAR(64) NOT NULL,
+ `url` TEXT NOT NULL,
+ `logo_filename` VARCHAR(64) NOT NULL,
+ PRIMARY KEY(`id`),
+ INDEX `systems_sort`(`sort_order`),
+ UNIQUE INDEX `systems_name`(`name`)
+) TYPE=InnoDB DEFAULT CHARSET=utf8;
+
+CREATE TABLE `characters` (
+ `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
+ `system_id` INTEGER UNSIGNED,
+ `user_id` INTEGER UNSIGNED NOT NULL,
+ `name` TEXT NOT NULL,
+ `image_filename` VARCHAR(64) NOT NULL,
+ `notes` TEXT NOT NULL,
+ `public_flag` ENUM('public','private') NOT NULL DEFAULT 'public',
+ `status_2` ENUM('active', 'graduate', 'inactive') NOT NULL DEFAULT 'active',
+ `sort_order` INTEGER UNSIGNED NOT NULL DEFAULT '0',
+ `deleted` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
+ `created` DATETIME NOT NULL,
+ `modified` DATETIME NOT NULL,
+ `deleted_date` DATETIME NOT NULL,
+ PRIMARY KEY(`id`),
+ INDEX `characters_user`(`user_id`, `public_flag`),
+ INDEX `characters_modified`(`modified`, `public_flag`),
+ INDEX `characters_sort`(`sort_order`),
+ INDEX `characters_system`(`system_id`),
+ CONSTRAINT `fk_systems-characters`
+ FOREIGN KEY (`system_id`) REFERENCES `systems` (`id`) ON DELETE SET NULL
+) TYPE=InnoDB DEFAULT CHARSET=utf8;
+
+
+CREATE TABLE `profiles` (
+ `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
+ `system_id` INTEGER UNSIGNED NOT NULL,
+ `name` VARCHAR(32) NOT NULL,
+ `caption` TEXT NOT NULL,
+ `profile_type` ENUM('input', 'textarea', 'select', 'checkbox', 'colums', 'table') NOT NULL DEFAULT 'input',
+ `required` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
+ `editable` TINYINT(1) NOT NULL DEFAULT '1',
+ `public_flag_default` ENUM('public', 'private') NULL DEFAULT 'public',
+ `sort_order` INTEGER UNSIGNED NOT NULL DEFAULT '0',
+ `is_link` TINYINT(1) UNSIGNED NULL DEFAULT '0',
+ PRIMARY KEY(`id`),
+ INDEX `profiles_sort`(`sort_order`),
+ INDEX `profiles_system_id`(`system_id`),
+ CONSTRAINT `fk_systems-profiles`
+ FOREIGN KEY (`system_id`) REFERENCES `systems` (`id`) ON DELETE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+CREATE TABLE `profile_selects` (
+ `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
+ `profile_id` INTEGER UNSIGNED NOT NULL,
+ `value` TEXT NOT NULL,
+ `sort_order` INTEGER UNSIGNED NOT NULL DEFAULT '0',
+ PRIMARY KEY(`id`),
+ INDEX `profile_selects_profile`(`profile_id`),
+ INDEX `profile_selects_sort`(`sort_order`),
+ INDEX `profile_selects_profile_sort`(`profile_id`, `sort_order`),
+ CONSTRAINT `fk_profiles-profile_selects`
+ FOREIGN KEY (`profile_id`) REFERENCES `profiles` (`id`) ON DELETE CASCADE
+) TYPE=InnoDB DEFAULT CHARSET=utf8;
+
+CREATE TABLE `profile_tables` (
+ `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
+ `profile_id` INTEGER UNSIGNED NOT NULL,
+ `name` VARCHAR(32) NOT NULL,
+ `title` TEXT NOT NULL,
+ `sort_order` INTEGER UNSIGNED NOT NULL DEFAULT '0',
+ PRIMARY KEY(`id`),
+ INDEX `profile_tables_profile`(`profile_id`, `sort_order`),
+ CONSTRAINT `fk_profiles-profile_talbles`
+ FOREIGN KEY (`profile_id`) REFERENCES `profiles` (`id`) ON DELETE CASCADE
+) TYPE=InnoDB DEFAULT CHARSET=utf8;
+
+CREATE TABLE `characters_has_profiles` (
+ `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
+ `character_id` INTEGER UNSIGNED NOT NULL,
+ `profile_id` INTEGER UNSIGNED NOT NULL,
+ `profile_selects_id` INTEGER UNSIGNED NOT NULL,
+ `profile_tables_id` INTEGER UNSIGNED NOT NULL,
+ `value` TEXT NOT NULL,
+ `public_flag` ENUM('public', 'private') NOT NULL DEFAULT 'public',
+ `link_value` TEXT NOT NULL,
+ PRIMARY KEY(`id`),
+ INDEX `characters_has_profiles_character`(`character_id`),
+ INDEX `characters_has_profiles_character_public`(`character_id`, `public_flag`),
+ CONSTRAINT `fk_profiles-characters_has_profiles`
+ FOREIGN KEY (`profile_id`) REFERENCES `profiles` (`id`) ON DELETE CASCADE,
+ CONSTRAINT `fk_profile_selects-characters_has_profiles`
+ FOREIGN KEY (`profile_selects_id`) REFERENCES `profile_selects` (`id`) ON DELETE CASCADE,
+ CONSTRAINT `fk_profile_tables-characters_has_profiles`
+ FOREIGN KEY (`profile_tables_id`) REFERENCES `profile_tables` (`id`) ON DELETE CASCADE
+) TYPE=InnoDB DEFAULT CHARSET=utf8;
+
+
+DROP TABLE IF EXISTS `character_profile_archives`;
+CREATE TABLE `character_profile_archives` (
+ `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
+ `character_id` INTEGER UNSIGNED NOT NULL,
+ `value` TEXT NOT NULL,
+ `public_flag` ENUM('public', 'private') NOT NULL DEFAULT 'public',
+ `deleted` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
+ `created` DATETIME NOT NULL,
+ `deleted_date` DATETIME NOT NULL,
+ PRIMARY KEY(`id`),
+ INDEX `character_prifile_archives_character`(`created`),
+ INDEX `character_prifile_archives_public`(`public_flag`, `created`)
+) TYPE=InnoDB DEFAULT CHARSET=utf8;
+
+DROP TABLE IF EXISTS `character_histories`;
+CREATE TABLE `character_histories` (
+ `id` INTEGER UNSIGNED NOT NULL,
+ `disp_date` DATETIME NOT NULL,
+ `title` TEXT NOT NULL,
+ `value` TEXT NOT NULL,
+ `public_flag` ENUM('public', 'private') NOT NULL DEFAULT 'public',
+ `created` DATETIME NOT NULL,
+ `modified` DATETIME NOT NULL,
+ INDEX `character_histories_disp_by_character`(`disp_date`, `public_flag`)
+) TYPE=InnoDB DEFAULT CHARSET=utf8;
+