従業員マスタは2つのテーブルで構成しています。T01従業員Mが従業員の基本情報・権限・パスワードを保持するメインテーブルで、T02従業員所属部署が所属部署のマスタデータを管理します。フォームから入力されたデータはT01従業員Mに格納され、所属部署の詳細情報はT02従業員所属部署をDLookUpで参照する設計です。
T01従業員M
従業員マスタのメインテーブルです。氏名・住所・連絡先などの基本情報に加え、システムログインパスワード・権限・在庫登録権限など運用管理に必要な情報をすべてこのテーブルに集約しています。
T01従業員M デザインビュー
T01従業員M フィールド構成
| フィールド名 | データ型 | 役割 |
|---|---|---|
| ID | オートナンバー型 | 主キー |
| 従業員コード | 数値型 | IDと連動。Format関数で000表記に変換して使用 |
| 氏名 | 短いテキスト | 名字と名前を合体する |
| フリガナ | 短いテキスト | ミョウジとナマエを合体する |
| 略称 | 短いテキスト | 氏名の略称 |
| 役職 | 短いテキスト | 役職 |
| 携帯TEL | 短いテキスト | 携帯電話番号 |
| 自宅TEL | 短いテキスト | 自宅電話番号 |
| 性別 | 数値型 | 性別(1:男性・2:女性) |
| 緊急連絡先 | 短いテキスト | 緊急時連絡先の名前 |
| 緊急時連絡TEL | 短いテキスト | 緊急時連絡時電話番号 |
| 郵便番号 | 短いテキスト | 郵便番号 |
| 都道府県 | 短いテキスト | 都道府県 |
| 住所1 | 短いテキスト | 市町村町名番地 |
| 住所2 | 短いテキスト | 建物名 |
| 保険証番号 | 短いテキスト | 健康保険証番号 |
| 備考 | 長いテキスト | 備考 |
| 入社日 | 日付/時刻型 | 入社日 |
| 退職日 | 日付/時刻型 | 退職日 |
| 所属部署 | 短いテキスト | 所属部署コード |
| メールアドレス | 短いテキスト | メールアドレス |
| 生年月日 | 日付/時刻型 | 生年月日 |
| ログインパスワード | 短いテキスト | システムログインパスワード |
| 権限 | 数値型 | システム管理者権限 |
| 血液型 | 短いテキスト | 血液型 |
| 旧住所 | 長いテキスト | 旧住所 |
| 雇用区分 | 短いテキスト | 雇用形態区分 |
| 年間有休日数 | 数値型 | 年間に保有する有休日数 |
| 有休時間積 | 短いテキスト | 有休の時間休換算の記録を一時保管(常に更新) |
| 在庫登録権限 | Yes/No型 | 在庫登録の権限があるかないか |
| 取得後有休合計 | 数値型 | 年間有休取得日数の一時保管(常に更新) |
| 取得後有休残 | 数値型 | 年間有休残日数の一時保管(常に更新) |
| 休暇区分 | 短いテキスト | 産休・育休などの特別休暇中期間に記録 |
設計のポイント
このテーブルを設計する際に意識したポイントを整理します。
IDと従業員コードの使い分け
IDはオートナンバー型で主キーとして設置しています。従業員コードはIDと連動した数値型で管理し、フォームやレポートでの表示には Format([ID],"000") で3桁のゼロ埋め表記に変換して使用します。
備考・旧住所を長いテキスト型にした理由
短いテキスト型は255文字が上限のため、個人情報など長文になる可能性がある備考フィールドは長いテキスト型で余裕を持たせています。旧住所は引っ越しのたびに住所履歴が追記されていく設計のため、同様に長いテキスト型にしています。
性別・権限を数値型にした理由
性別は1・2の2値、権限は1桁の数値で管理するため数値型を採用しています。フォーム側ではオプショングループで選択する設計です。
有休関連フィールドについて
年間有休日数・有休時間積・取得後有休合計・取得後有休残は勤怠管理と連動して常に更新される一時保管フィールドです。詳細は勤怠管理のページで解説します。
Format関数で000表記
データベースで連番管理をする場合、オートナンバー型のIDをそのまま使うと「1」「2」「3」と表示されます。「001」「002」「003」と桁を揃えて表示したい場合、テキスト型のフィールドを別途作って管理する方法も考えられますが、フィールドが増えて管理が複雑になります。このシステムでは Format([ID],"000") の1行をフォームのコントロールソースに設定するだけで000表記を実現しています。テーブル側はオートナンバー型のままシンプルに保ちつつ、表示だけを整える設計です。
T02従業員所属部署
T01従業員Mの所属部署フィールドと連動するマスタテーブルです。所属部署コードをキーとして部署情報を管理します。部署マスタとしての役割に加え、製品マスタでの表示設定と工場識別の3つの役割を1テーブルに集約しています。
T02従業員所属部署 デザインビュー
T02従業員所属部署 フィールド構成
| フィールド名 | データ型 | 役割 |
|---|---|---|
| ID | オートナンバー型 | 主キー |
| 所属部署コード | 短いテキスト | 所属部署のコード |
| 所属部署 | 短いテキスト | 正式所属部署名 |
| 所属略称 | 短いテキスト | 正式名が長いので社内通称 |
| 分類 | 短いテキスト | 所属部署の大分類 |
| 並び順 | 数値型 | リストで並べる際の並び順 |
| 製品マスタ分類 | 短いテキスト | 製品マスタ上で表示される通称 |
| 製品マスタ並び順 | 数値型 | 製品マスタ上で表示されるリストの並び順 |
| 工場 | 短いテキスト | 所属工場 |
設計のポイント
このテーブルを設計する際に意識したポイントを整理します。
1テーブルに複数の用途を持たせた理由
正式部署名は長いため製品マスタ上では略称(製品マスタ分類)で表示しています。製品マスタのコンボボックスに表示される順番は製品マスタ並び順で制御しています。またこの会社は工場が2つあり同じ部署名が両工場に存在するため、工場フィールドでどちらの工場所属かを識別できるようにしています。部署情報・製品マスタ表示設定・工場識別の3つの役割を1テーブルに集約したことで、管理するテーブル数を抑えた設計です。
並び順フィールドについて
所属部署のコンボボックスや一覧表示で任意の順番に並べるために並び順フィールドを設けています。製品マスタ側でも独自の並び順が必要なため製品マスタ並び順を別フィールドとして持っています。
②並び順フィールドの2段設計
所属部署のコンボボックスや一覧表示では業務上の優先順位で並べたい。一方で製品マスタのコンボボックスでは製品登録の作業効率に合わせた別の順番で表示したい。1つの並び順フィールドで両方を兼ねようとするとどちらかの表示が崩れます。そこで「並び順」と「製品マスタ並び順」を別フィールドとして持たせることで、同じ部署データでも表示する場面ごとに独立した順番を制御できるようにしています。フィールドを1つ増やすだけで表示の自由度が大きく上がる設計です。
まとめ
従業員マスタはT01従業員Mに個人情報・権限・パスワードを集約し、T02従業員所属部署で部署マスタを別管理する2テーブル構成です。T02は部署マスタとしての役割に加え製品マスタの表示設定と工場識別も担うことで、テーブル数を最小限に抑えています。フォームからの入力・参照・更新はすべてこの2テーブルをベースに設計されています。
本サイトではマクロを用いた構築手順を中心に紹介していますが、決してマクロを唯一の正解として推奨しているわけではありません。VBAが扱える環境であれば、より多彩で柔軟なプログラムが組めるVBAでの構築をむしろ推奨したいと考えています。
ここでマクロという選択肢を提示しているのは、VBAにハードルを感じている方への「もう一つの入り口」として、また将来的な後継者への引き継ぎ負荷を抑えるという実務上のメリットを考慮してのことです。設計の考え方の一つとして、状況に合わせて活用してください。