• 締切済み

曜日を表す項目

DBに、受注曜日を保持しなければなりませんが みなさんはどのようなカラム構成にしますか? 1)受注曜日1(日曜日を表す)~受注曜日7(土曜日を表す)の7項目を設け、 それぞれにON/OFFをセットする 例:月・水・金が受注日の場合、受注曜日2、4、6は1、その他はZERO 2)受注曜日1(1つ目の受注曜日を表す)~受注曜日7の7項目を設け、 受注曜日1から順に、曜日を表す区分をセットする 例:月・水・金が受注日の場合、受注曜日1=1、受注曜日2=3、受注曜日3=5、 受注曜日4~7はNull 3)受注曜日を7桁で設け、日曜日から順に受注曜日にはBitを立てる 例:月・水・金が受注日の場合、受注曜日=0101010 4)受注曜日を7桁で設け、受注曜日を表す区分をセットする 例:月・水・金が受注日の場合、受注曜日=135 以前、別のシステムでは2)を使用したのですが、ちょっと不評だったような・・・ ご経験のある方、アドバイスお願いします。 ちなみにDBはOracle8.1.7、この受注曜日を追加しようとしているTableは 既にかなりの項目数があります。 くだらない質問ですみませんがよろしくお願いします。

みんなの回答

  • MarrowG
  • ベストアンサー率53% (41/76)
回答No.3

補足ありがとうございます。 なるほど、わかりました。 受注曜日にある程度パターンがあるようなら、これを別テーブルにしたらどうでしょう? で、受注パターンテーブルにはパターンID+曜日(7つ)のカラムを作成する。 曜日のカラムは、CHAR(1)で0 or 1とかにしておく。 商品マスターにはこのパターンIDを外部キーとして追加。 こんな感じでどうでしょう? 例えば月曜日に発注するものは発注パターンテーブルから月曜日がONになってるIDを検索、この発注パターンIDをキーに商品マスターを検索すれば一覧が作れます。 副照会使って書けば↓こんな感じですね。 SELECT 商品 FROM 商品MASTER WHERE 商品マスター.発注パターンID IN (  SELECT 発注パターンID FROM 発注パターンテーブル  WHERE 月曜日 = '1' ) 実際の業務での使われ方に則していない可能性もありますが、発注パターンがある程度絞れるなら、これでも充分なパフォーマンスが出ると思います。

  • MarrowG
  • ベストアンサー率53% (41/76)
回答No.2

何故、受注曜日を横持ちにするんでしょう? 一般的な受注処理なら受注毎に受注番号を振っていくと思うんですが。 で、受注番号をキーに1受注あたり受注日と曜日を1つずつ持てばいいはず。 それとも週単位で受注入力をしているから、といった理由でしょうか? あるいは受注ではなく配送曜日? いずれにしても、業務の流れと受注曜日を入力する理由が不明なので、明確な回答は難しいです。

nebiki
質問者

補足

すみません、補足します。 これは商品Masterで、ある商品の発注サイクル/受注サイクルを持つために 「受注曜日」「発注曜日」を設けることになっています。 この曜日を、自動発注処理・所要量計算に使用することも考えられます。 「受注曜日」はこのMasterの所有者がSellerである際に、Buyerから発注を受け付ける曜日を示します。 説明が下手で申し訳ありません。

  • iwaz
  • ベストアンサー率57% (8/14)
回答No.1

どういった内容のテーブルで受注曜日を利用するのかわかりませんが、 4つの選択肢から選ぶとなると (1)は、カラムが7つ必要なので既にかなりの項目数があるのでしたら おすすめできません。 (2)は、受注曜日カラムにデータが入っているかまず判定しないといけ ないのでちょっとつかいづらい気がします。 (3)(4)は、曜日を条件にして検索はしやすいと思います。 ということから(3)または(4)がいいような気がします。 また、他の方法でも可と言うのでしたら 「稼働日」という項目を追加して 1 = 月~金、2 = 月、水、金、3 = 火、木、土 の数値を登録しておき、1、2、3それぞれの意味を「稼働日マスタ」テーブルとして 作成しておけば数値の意味も分かり、結合して稼働日内容表示もできるかと思います。