取引先マスタ「テーブル設計」

取引先マスタは2つのテーブルで構成しています。T05取引先Mが取引先の基本情報・請求書送付先・銀行口座・表示設定を保持するメインテーブルで、T05取引先M配送先が配送先情報を管理します。フォームから入力されたデータはT05取引先Mに格納され、配送先が複数ある取引先の情報はT05取引先M配送先で別管理する設計です。


T05取引先M

取引先マスタのメインテーブルです。会社情報・請求書送付先・銀行口座情報に加え、製品マスタや加工マスタでのコンボボックス表示制御に必要なフラグもこのテーブルに集約しています。

T05取引先M デザインビュー

T05取引先M フィールド構成(基本情報)

取引先の基本情報・会社属性を管理するフィールドです。

フィールド名 データ型 役割
ID オートナンバー型 主キー
取引先コード 数値型 管理者が任意で採番。番号帯で取引区分を識別する運用
取引先名 短いテキスト 取引先の正式名称
略称 短いテキスト 社内通称およびシステム内での標準表記
フリガナ 短いテキスト 略称のフリガナ
郵便番号 短いテキスト 郵便番号
都道府県 短いテキスト 都道府県
住所1 短いテキスト 市町村・番地
住所2 短いテキスト 建物名など
電話番号 短いテキスト 電話番号
FAX 短いテキスト FAX番号
URL 短いテキスト サイトURL
代表者 短いテキスト 会社代表者
担当者 短いテキスト 当社の担当者
締め日 短いテキスト 支払対象の〆日
端数金額区分 短いテキスト 顧客の合計額の端数処理区分
取引区分 短いテキスト 法人顧客・仕入先・顧客・仕入先・個人顧客・その他に区分
端数金額区分仕入 短いテキスト 仕入先に対しての合計額の端数処理区分
営業担当者 短いテキスト 当社営業担当
メモ 長いテキスト メモ(備考)
登録日 日付/時刻型 マスタ登録日
旧住所 長いテキスト 移転に伴う旧住所の格納

T05取引先M フィールド構成(配送先)

新規登録時に登録する1件目の配送先です。本社住所コピーボタンで転記するか手入力で登録します。編集フォームのサブフォームからT05取引先M配送先に追加登録することで複数管理に対応します。

フィールド名 データ型 役割
配送先郵便番号 短いテキスト 発送先郵便番号(複数ある場合のデフォルト)
配送先都道府県 短いテキスト 発送先都道府県(複数ある場合のデフォルト)
配送先住所1 短いテキスト 発送先住所1(複数ある場合のデフォルト)
配送先住所2 短いテキスト 発送先住所2(複数ある場合のデフォルト)
配送先部署 短いテキスト 発送先部署(複数ある場合のデフォルト)
配送先電話番号 短いテキスト 発送先電話番号(複数ある場合のデフォルト)
配送先取引先名 短いテキスト 発送先取引先名(複数ある場合のデフォルト)

T05取引先M フィールド構成(請求書送付先)

請求書の送付先が本社と異なるケースに対応するフィールド群です。

フィールド名 データ型 役割
請求書郵便番号 短いテキスト 請求書送付の郵便番号
請求書都道府県 短いテキスト 請求書送付の都道府県
請求書住所1 短いテキスト 請求書送付の住所1
請求書住所2 短いテキスト 請求書送付の住所2
請求書取引先名 短いテキスト 請求書送付の正式取引先名
請求書部署 短いテキスト 請求書送付の部署名
請求書電話番号 短いテキスト 請求書送付の電話番号

T05取引先M フィールド構成(銀行口座・表示フラグ)

振込先の銀行口座情報と、製品マスタ・加工マスタのコンボボックス表示を制御するフラグです。

フィールド名 データ型 役割
適格事業者番号 短いテキスト インボイス制度の適格事業者番号
銀行コード 短いテキスト 振込先銀行コード
銀行名 短いテキスト 振込先銀行名
支店コード 短いテキスト 振込先銀行支店コード
支店名 短いテキスト 振込先銀行支店名
口座種別 短いテキスト 振込先銀行口座種別
口座番号 短いテキスト 振込先銀行口座番号
口座名義 短いテキスト 振込先銀行口座名義
加工購入先表示 Yes/No型 製品マスタ加工の購入先取引先コンボに絞り込み表示させる
加工加工先表示 Yes/No型 製品マスタ加工の加工先取引先コンボに絞り込み表示させる
金型メーカー表示 Yes/No型 製品成形マスタの金型メーカーコンボに表示させる

T05取引先M配送先

T05取引先Mの取引先コードと連動する配送先管理テーブルです。1つの取引先に対して複数の配送先を登録できる設計で、デフォルトフラグで優先配送先を制御します。

T05取引先M配送先 デザインビュー

T05取引先M配送先 フィールド構成

フィールド名 データ型 役割
ID オートナンバー型 主キー
取引先コード 数値型 取引先コード(T05取引先Mと紐付け)
配送先取引先名 短いテキスト 発送先取引先名
配送先郵便番号 短いテキスト 発送先郵便番号
配送先都道府県 短いテキスト 発送先都道府県
配送先住所1 短いテキスト 発送先住所1
配送先住所2 短いテキスト 発送先住所2
配送先部署 短いテキスト 発送先部署
配送先電話番号 短いテキスト 発送先電話番号
デフォルト Yes/No型 複数ある発送先のデフォルト
登録日 日付/時刻型 登録日
メモ 短いテキスト メモ(備考)

設計のポイント

テーブルを設計する際に意識した判断と根拠を整理します。フィールドのデータ型選択・テーブル分割の基準・運用上の工夫など、後から見返したときに設計意図が伝わるようまとめています。

項目 設計判断 理由
取引先コードの採番 数値型・任意採番 管理者が番号帯で取引区分を識別する運用のためオートナンバーではなく数値型を採用
メモ・旧住所を長いテキスト型 長いテキスト型 短いテキスト型は255文字が上限。備考・住所履歴は長文になる可能性があるため余裕を持たせる
電話番号・FAX系 短いテキスト型 ハイフンを含む入力に対応するため数値型は使わない
請求書送付先を同一テーブルに集約 同一テーブル内に請求書フィールドを追加 請求書の送付先が本社と異なるケースに対応。別テーブルにするほどの規模ではないため同一テーブルに集約
配送先をサブテーブルで管理 T05取引先M配送先を別テーブル 配送先が複数になるケースに対応。1対多の関係になるため別テーブルが適切
Yes/No型の表示フラグ Yes/No型を3フィールド 製品マスタや加工マスタのコンボボックスで表示する取引先を絞り込む制御用
デフォルトフラグ Yes/No型 複数配送先がある場合に受注入力フォームでデフォルト配送先を自動セットするための制御
登録日 日付/時刻型 新規登録時にマクロで自動セット

取引先コードに番号帯で意味を持たせる設計

取引先コードはオートナンバーではなく管理者が任意で採番する設計です。連番テーブル(30,000件)と取引先MをクエリでJOINし、取引先マスタに存在しない連番だけを抽出してポップアップフォームに表示します。管理者はその一覧から番号を選んで登録します。

この設計の本質は番号帯に意味を持たせられる点です。

採番例

番号帯 分類
1000番台 仕入先
3000番台 顧客
5000番台 個人顧客

取引先コードを見るだけで取引区分が判断できるため、伝票や帳票の確認作業でも番号が手がかりになります。オートナンバーでは欠番が生じると再利用できませんが、この設計では削除・変更で空いた番号も候補として表示されるため無駄なく管理できます。(採番決定は管理者になりますが経験値を生かして採番しているようです)


配送先をサブテーブルで分離した設計

T05取引先Mの中に配送先フィールドを持たせるだけでも基本的な運用はできます。ただし取引先によっては配送先が本社・工場・倉庫と複数存在するケースがあります。同一テーブルに「配送先1」「配送先2」と列を増やしていく設計だと、使わない列が大量に発生し管理が煩雑になります。T05取引先M配送先として1対多で管理することで、配送先が何件になっても行を追加するだけで対応できます。受注入力フォームではデフォルトフラグが立っている配送先を自動セットし、必要に応じてコンボボックスで別の配送先に切り替える設計です。


新規登録時の住所コピーボタン

新規登録時の配送先は未入力禁止の設計です。多くの場合、初回登録時の配送先は取引先の本社住所と同じになります。そこで取引先住所→配送先住所への1クリック転記ボタンを用意しています。住所・都道府県・郵便番号・電話番号をまとめてコピーするため、入力工数の削減と転記ミスの防止を同時に解決します。配送先が本社と異なる場合はそのまま上書き入力できます。


まとめ

取引先マスタはT05取引先Mに会社情報・請求書送付先・銀行口座・表示フラグを集約し、T05取引先M配送先で複数配送先を別管理する2テーブル構成です。取引先コードの番号帯による分類管理・配送先の1対多管理・Yes/No型フラグによるコンボボックス絞り込みがこの設計の核になっています。フォームからの入力・参照・更新はすべてこの2テーブルをベースに設計されています。