質問: ### 前提・実現したいこと 日々の仕入データに対して、任意のタイミングで別システムへの連携(CSV出力)を行う仕組みを検討しています。 ``` (仕入データ) 仕入No 仕入日付 数量 単価 商品CD CSV出力No 1 5/1 10 100 102 1 2 5/3 20 300 105 1 3 5/12 5 100 102 2 4 5/10 30 500 101 5 5/3 -10 300 105 ``` CSV出力Noに数字が入っていれば、別システムへ連携(CSV出力)済みを意味します。 なお、性能のためにCSV出力データも別に保持します。 ``` (CSV出力データ) CSV出力No 件数 合計金額 1 2 7000 2 1 500 ``` 仕入データのCSV出力Noカラムについて、どのように設計するか悩んでいます。 ### 案1 nullを許容する ``` (仕入データ) 仕入No 仕入日付 数量 単価 商品CD CSV出力No 1 5/1 10 100 102 1 2 5/3 20 300 105 1 3 5/12 5 100 102 2 4 5/10 30 500 101 null 5 5/3 -10 300 105 null ``` ### 案2 nullの代わりに0を入れる。 ``` (仕入データ) 仕入No 仕入日付 数量 単価 商品CD CSV出力No 1 5/1 10 100 102 1 2 5/3 20 300 105 1 3 5/12 5 100 102 2 4 5/10 30 500 101 0 5 5/3 -10 300 105 0 ``` ### 案3 仕入データに持つのではなく別テーブルに切り出す。 ``` (CSV出力Noデータ) 仕入No CSV出力No 1 1 2 1 3 2 ``` どのようにするのが良いでしょうか。
回答: 別テーブルである必要はないと思います。 1つのテーブルで済んだほうが、副問い合わせが減ってSQLの処理速度も速くなりますし。 nullだと想定外の動きをすることもあるそうで。 データベースのINT型項目にNULLはNG? 入力区分のカラムを追加して、そこで判断するのも手かと思います。