列挙値管理設計
要求
システム内で使用する列挙型の値をデータベースで管理したい
データモデル
- 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
- 雑収入
- 口座利息
- その他雑収入
- 懇親会会費
- 事業支出
- 大会開催費
- 講習会開催費
- 審判員派遣費
- 加盟金支出
- 日本協会加盟金
- 関東ブロック協賛金
- 日本協会登録料(審判認定料・チーム登録料)
- 大会協賛金支出(北関東大会負担金)
- 会議費支出
- 会議費(会場費、交通費、飲食代等)
- 事務費支出
- 通信費
- 事務用消耗品
- 備品費
- 事務経費(振込手数料、交通費)
- 事務手数料
- 販売品仕入
- 販売品仕入代金
- 慶弔費
- 全国大会祝金
- 慶弔支出
- 雑費
- 雑費
- 次年度繰越金
- 次年度繰越金