====== 列挙値管理設計 ====== ===== 要求 ===== システム内で使用する列挙型の値をデータベースで管理したい ===== データモデル ===== * slug はレコードの値が属する親を識別するための文字列で、スラッシュ区切りで階層を表す. * 当初 slug は値の識別も含めたユニーク値にしようと考えたが、いちいち英名を考えるのは苦しいので、やめた. * いっそのこと slug 自体にマルチバイト文字を含めてはどうだろう... * やはり英名を考える時間を短縮できる魅力は捨てがたい * 区切り文字のエスケープを考えなければならない. '/' は汎用的すぎるので '::' にしてみる * ソースコードにマルチバイトの slug を含めることになるが、定数化するため特に問題も出ないだろう... * 例) 費目の事業収入に属する費目の一覧 * slug: 費目::事業収入, value: 大会参加費 * slug: 費目::事業収入, value: 講習会参加費 * slug: 費目::事業収入, value: 審判派遣費 * 親は slug で判断できるので parent_id は不要 ---- CREATE TABLE IF NOT EXISTS `enumerations` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `slug` VARCHAR(255) NOT NULL comment '分類名 階層のセパレータは :: とする(先頭セパレータ不要)', `name` VARCHAR(255) NULL comment '表示名が value と異なる場合のみ指定', `value` VARCHAR(255) NOT NULL, `weight` INT(11) NOT NULL DEFAULT '0', `note` text NULL, `applied_at` DATETIME NOT NULL, `expired_at` DATETIME NULL DEFAULT NULL, `created_by` VARCHAR(20) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci', `created_at` DATETIME(3) NOT NULL, `updated_by` VARCHAR(20) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci', `updated_at` DATETIME(3) NULL DEFAULT NULL, `deleted_by` VARCHAR(20) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci', `deleted_at` DATETIME(3) NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `UNQ__slug__value__applied_at` (`slug`, `value`, `applied_at`), INDEX `IDX__slug` (`slug`) ) ENGINE=InnoDB COLLATE='utf8mb4_general_ci'; ==== 各種列挙値設計 ==== === 費目 === * 前年度繰越金 * 前年度繰越金 * 登録料収入 * JDBA 登録料 * チーム登録料 * 審判登録料 * 新規審判登録料 * 賛助会員等登録料 * 事業収入 /expenses/project_incomes * 大会参加料 /expenses/project_incomes/championship_entry_fee * 講習会受講料 /expenses/project_incomes/workshop_fee * 大会主管料(補助金,助成金等)/expense/project_incomes/tournament_management_fee * 大会協賛金収入 /expenses/project_incomes/tournament_sponsorship * 審判派遣収入 /expenses/project_incomes/referee_dispatch_fee * 広告料収入 /expenses/advertising_revenues * 広告料 /expenses/advertising_revenues/advertisement_charge * 販売収入 /expenses/selling_revenues * 販売品売上 /expenses/product_salse * 雑収入 * 口座利息 * その他雑収入 * 懇親会会費 * 事業支出 * 大会開催費 * 講習会開催費 * 審判員派遣費 * 加盟金支出 * 日本協会加盟金 * 関東ブロック協賛金 * 日本協会登録料(審判認定料・チーム登録料) * 大会協賛金支出(北関東大会負担金) * 会議費支出 * 会議費(会場費、交通費、飲食代等) * 事務費支出 * 通信費 * 事務用消耗品 * 備品費 * 事務経費(振込手数料、交通費) * 事務手数料 * 販売品仕入 * 販売品仕入代金 * 慶弔費 * 全国大会祝金 * 慶弔支出 * 雑費 * 雑費 * 次年度繰越金 * 次年度繰越金