はじめに
Qiita Advent Calendar 13日目です。
ここが本間に折り返し、いろいろなことを考えるきっかけとなっていい企画だなと思いました。
(なんか言ったのかわからない。)
本日はマスターデータとトランザクションデータについて考えてみたいと思います。
マスターデータとトランザクションデータの違い
特徴/項目 | マスターデータ | トランザクションデータ |
---|---|---|
定義 | 基本的な情報を管理するデータ | 業務活動や取引の記録データ |
更新頻度 | 低い | 高い |
例 | 商品情報、顧客情報、社員情報 | 販売履歴、購買履歴、勤怠記録 |
役割 | 業務の基盤となる情報を提供 | 日々の業務活動や取引の詳細を記録 |
管理方法 | 一貫性と正確さを重視 | リアルタイムの更新と分析を重視 |
データの性質 | 静的(あまり変わらない) | 動的(頻繁に変わる) |
マスターデータの具体例
- 商品マスタ: 商品名、価格、メーカーなどの情報を含む
- 顧客マスタ: 顧客ID、名前、住所などの情報を含む
トランザクションデータの具体例
- 販売履歴: 商品ID、販売数量、販売日時などの情報を含む
- 勤怠記録: 従業員の出退勤時間、勤務日などの情報を含む
マスターデータかトランザクションデータなのか
会社と従業員をい例として、考えたいと思います。
会社というオブジェクトに関して考えると、起こるイベントというのは限られています。
入社の際には、トランザクション回数は1回です。
何回も同じ会社に入社しませんよね。
つまり、データの更新頻度は極めて少ないです。
これはマスターデータ一つでよいと思います。
逆に、給与支払いは毎月行われます。
そして、給与の額も勤務時間によって変わります。
これはトランザクションデータを使用する必要があります。
少なくとも入れたいデータを
社員番号、名前、部署名、入社年日、生年月日とします。
給与支払いのテーマで考えよう。
給与支払いのケースで考えうるデータの集まりは以下になると思いました。
結論
マスターデータ
- 社員番号: 各社員を一意に識別するための番号
- 名前: 社員の氏名
- 部署名: 社員が所属する部署の名称
- 入社年月日: 社員が会社に入社した日付
- 生年月日: 社員の生年月日
給与支払い
マスターデータ
- 社員番号: 各社員を一意に識別するための番号
- 名前: 社員の氏名
- 部署名: 社員が所属する部署の名称
- 入社年月日: 社員が会社に入社した日付
- 生年月日: 社員の生年月日
- 給与等級: 社員の給与ランクや等級
- 基本給: 各社員の基本給額
- 銀行口座情報: 給与振込先の銀行口座情報
トランザクションデータ
- 勤務時間: 各社員の月間勤務時間
- 残業時間: 各社員の月間残業時間
- 休暇情報: 有給休暇や病欠などの休暇情報
- 支給日: 給与が支給される日付
- 控除項目: 税金や社会保険料などの控除項目
- 支給額: 各月の総支給額
- 控除額: 各月の総控除額
- 手当: 交通費や住宅手当などの各種手当