商いの帳場中小企業のAI導入支援|販売管理システムの独自開発から販売管理システムの独自開発 専門

コラム仕組みと技術

販売管理のテーブル設計、最小でいくつ必要?卸の3規模で数えた

販売管理のテーブル設計、最小でいくつ必要?(記事の表紙)

販売管理のテーブル設計は、受注から請求・入金までを1つの流れで回すなら、最小で7テーブルです。得意先、商品、単価、売上ヘッダ、売上明細、請求、入金で、締めグループは得意先の列で持ちます。商いの帳場が架空の卸3社(得意先80・400・2,000)の帳票から数えると、テーブルは7・13・21、列は52・94・132でした。1か月に増える行は約3,400・22,900・76,600行です(2026年10月時点)。

全体の流れと費用は販売管理の基礎のページにまとめています。

要点

  • 販売管理のテーブル設計は、受注から請求・入金までを回すだけなら、最小で7テーブル(列は合わせて52)です。
  • 架空の卸3社(得意先80・400・2,000)で必要なテーブルは7・13・21で、列は52・94・132になりました。
  • 1か月に増える行は約3,400・22,900・76,600行で、その67〜80%を明細の表が占めます。
  • テーブルが増えるのは、受注と出荷を分ける、直送の仕入を作る、分納や返品を持つといった業務が加わったときです。
目次
  1. 販売管理のテーブルは、最小でいくつ必要ですか?
  2. 売上ヘッダと明細は、なぜ分けるのですか?
  3. 単価と締めグループは、表にしますか、列にしますか?
  4. 規模が上がると、テーブルはいくつに増えますか?
  5. 1か月に、どの表の行が増えますか?
  6. 自社の帳票で、テーブル数を数えるには?
  7. 自社の帳票から、テーブルを一緒に数える
  8. よくある質問

販売管理のテーブルは、最小でいくつ必要ですか?

受注から請求・入金までを1つの流れで回すなら、最小で7テーブルです。得意先、商品、単価、売上ヘッダ、売上明細、請求、入金です。列は7テーブルで合わせて52列、図1の関係で足ります。

青葉食品(架空・小)の販売管理に要る7つのテーブルの関係図。得意先と商品が土台で、単価、売上ヘッダ、売上明細、請求、入金がつながる。締めグループは得意先の締め日の列で持つ1 対 多1 対 多1 対 多1 対 多1 対 多1 対 多invoice_no で束ねる商品 productcode(商品コード)name・unitstd_price(標準価格)tax_rate(税率)単価 pricecustomer_codeproduct_codeunit_pricevalid_from(適用開始日)得意先 customercode(得意先コード)name・住所・電話closing_day(締め日)pay_offset・pay_day(支払)tax_rounding(端数処理)売上ヘッダ sales_headerno(伝票番号)sales_datecustomer_codesubtotal・tax8・tax10invoice_no売上明細 sales_lineno・lineproduct_codeqty・unit_priceamount・tax_rate請求 invoiceno(請求書番号)customer_codeperiod_from・period_tototal8・total10tax8・tax10prev_balance・total入金 receiptnoreceipt_datecustomer_codeamount・invoice_no架空の導入例(イメージ)。列は主なものだけで、全列は7表で52列。商いの帳場の設計
図1 最小の7テーブルの関係(青葉食品、架空の導入例(イメージ))。1枚の売上伝票を、ヘッダと明細に分けて持ちます。

「最小」は、この記事で次の条件にしました。受注と出荷が1枚の売上伝票で済み、直送や分納がなく、締め日が月に1つだけです。業務用食品の卸「青葉食品」(架空、得意先80・商品600)の帳票を、そのまま表にした形です。

請求の表には、税率ごとの金額と消費税額の列を置きます。国税庁の適格請求書の記載事項に、10%・8%それぞれの対価の総額と適用税率、10%・8%それぞれの消費税額等があるからです。

売上ヘッダと明細は、なぜ分けるのですか?

同じ伝票の日付と得意先を、明細の行数ぶん繰り返さないためです。売上ヘッダには伝票1枚につき1行、売上明細には商品1行ごとに1行を持ちます。

架空の青葉食品が1か月に出す売上伝票は526枚、明細は2,688行でした。1枚の平均は約5.1行です。ヘッダと明細を1つの表にすると、日付と得意先が2,688行に入り、ヘッダの内容は約5倍に増えます。

直し間違いも減ります。納入先を変えるとき、ヘッダなら1行で済みますが、1つの表なら同じ伝票の全行を直します。明細は、商品・数量・単価・金額・税率だけを持てばよく、1行ごとの金額の合計がヘッダの小計と税額になります。伝票を後から検索するときも、日付や得意先で探すのはヘッダ、商品で探すのは明細と、見る表が分かれます。

単価と締めグループは、表にしますか、列にしますか?

単価は、得意先ごとに値段が違うなら表にします。締めグループは、締め日が1つのうちは得意先の列に入れ、締め日が増えて同じ条件の得意先が多くなったら表に分けます。

青葉食品は、得意先と商品の組み合わせで単価を持つ表を1つ置きました。締め日は末日だけなので、得意先の列で足ります。

建築資材の卸「三浦資材」(架空、得意先400・商品3,000)は、締め日が15日・20日・末日の3つで、掛け率と特値(特定の得意先と商品だけの値段)を使います。

掛け率は得意先の列、特値は表にし、締めグループ(コード・締め日・支払月・支払日の4列)を別の表にしました。支払日を変えるとき、400社ぶんではなく締めグループの3行を直せば済むからです。単価の持ち方の比べ方は、得意先別の単価・掛け率・特値の記事にあります。

規模が上がると、テーブルはいくつに増えますか?

架空の3社で数えると、テーブルは7・13・21に増えました。表は次のとおりです。増えた理由は、すべて業務が加わったことです。

導入例(イメージ) 得意先・商品 テーブル 列 1か月に増える行
青葉食品(小) 80・600 7 52 3,374
三浦資材(中) 400・3,000 13 94 22,901
東和パック(大) 2,000・8,000 21 132 76,637

青葉食品から三浦資材の6つの増加は、受注と出荷を分ける(売上の2表が、受注と出荷の4表に)、直送の仕入を同時に作る(仕入先と仕入の3表)、締めグループ(1表)からです。東和パック(架空、分納・預かり在庫・返品あり)では、納入先、倉庫、在庫、返品の2表、請求明細、入金の消込、単価の履歴の8表が加わります。

分納の持ち方は分納と受注残の記事、直送・預かり・返品は卸の商習慣の記事で扱っています。

1か月に、どの表の行が増えますか?

増える行の67〜80%は、明細の表です。明細は商品1行ごとに1行増えるので、売上の件数より速く伸びます。青葉食品では売上明細が2,688行で、1か月の合計3,374行の79.7%でした。三浦資材は受注明細と出荷明細で72.3%、東和パックは67.3%です。

架空の卸3社が1か月に全テーブルへ書き足す行数。青葉食品3,374行、三浦資材22,901行、東和パック76,637行1か月に増える行数(全テーブルの合計、計算値)青葉食品(小)テーブル73,374行三浦資材(中)テーブル1322,901行東和パック(大)テーブル2176,637行架空の導入例(イメージ)。乱数の種20261017、Python 3.14.2・SQLite 3.50.4。商いの帳場の計算
図2 1か月に増える行数(架空の3社、計算値)。1年にならすと約4万行・27万行・92万行です。

年に直した数は、1か月分の12倍の計算値です。繁忙期の偏りは入れていません。得意先が増えても、増えるのは主に明細と請求の表で、得意先や商品の表は新しい得意先や商品の数だけです。

行数を見積もるときは、月の受注の数と1枚あたりの明細の行数を先に決めます。青葉食品なら526枚×約5.1行、三浦資材なら1,388枚×約6.0行です。

自社の帳票で、テーブル数を数えるには?

帳票を1枚ずつ並べ、その帳票が見る「1件」ごとに表を置きます。納品書なら伝票と明細、請求書なら請求です。同じ内容が何度も出てくる部分だけを、別の表に切り出します。

  1. 受注・納品・請求・入金の帳票を、全部並べる
  2. 帳票ごとに、1枚で1回だけ出る項目と、行ごとに出る項目を分ける
  3. 前者をヘッダ、後者を明細の表にする
  4. 得意先・商品・単価の持ち方を決め、締め日と支払条件を列か表にする

数えた台本はsales_table_design.pyです。SQLiteに表を作り、列はPRAGMA table_infoで数えました。環境はWindows 11、Python 3.14.2、SQLite 3.50.4です。乱数の種は20261017で、同じ台本を動かせば同じ数字が出ます。

単価の表の持ち方は単価管理の3通りを比べた記事に、旧データを移すときに名前の桁があふれる行の数え方はデータ移行の桁あふれの記事に、費用の前提は5年総額の計算にあります。

この数は設計の一例で、列の数え方は設計者で変わります。支払条件を別の表にするなら、青葉食品でも8テーブルです。1か月の受注は3社とも平均を決めた乱数なので、実際の会社の数字ではありません。

自社の帳票から、テーブルを一緒に数える

商いの帳場では、今の受注票や納品書、請求書の形からテーブルの数と関係を一緒に整理するところからお手伝いします。何をどう頼むか決まっていなくても大丈夫です。御社のやり方に合わせて、進め方を一緒に考えます。

準備は要りません。無料で相談するからお送りください。

よくある質問

最小の7テーブルに、締めグループの表は入っていませんか?
入っていません。締め日が1つなら、得意先の列(締め日・支払月・支払日)で足ります。締め日が15日・20日・末日と3つに増え、同じ条件の得意先が多いときに、締めグループの表に分けました。
売上ヘッダと明細は、1つの表にまとめてはいけませんか?
1つにすると、同じ伝票の日付と得意先が明細の行数ぶん重なります。青葉食品の1か月では、売上ヘッダの526行に対して明細は2,688行なので、ヘッダの内容が約5倍に増えます。
テーブルの数が多いほど、よい設計ですか?
いいえ。ここで数えた数は、業務に必要な分だけです。受注と出荷が同じ伝票で足りる会社が、受注と出荷の表を分ける必要はありません。
自社に要るテーブル数は、どう見積もりますか?
帳票を1枚ずつ並べ、その帳票が見る「1件」ごとに表を1つ置きます。あとは、同じ内容が何度も出る部分だけを別の表に切り出すと数が決まります。

出典

  1. 国税庁「インボイス制度の概要」(適格請求書の記載事項。10%・8%それぞれの対象となる対価の総額と適用税率、10%・8%それぞれの消費税額等)(2026年10月17日確認)
  2. 商いの帳場の計算(2026年10月17日、Windows 11・Python 3.14.2・SQLite 3.50.4。架空の卸3社:得意先80・400・2,000、商品600・3,000・8,000、月の受注回数は得意先あたり平均6.0・3.5・2.5のポアソン分布、乱数の種 20261017。台本は /sales-management-app/scripts/sales_table_design.py)(2026年10月17日確認)