
単純な質問ですみません。
現在、商品の名前や価格・在庫数を商品テーブルに記録しています。
この商品の価格や在庫数の1年分(365日分)の履歴をデータベースに記録したいのですが、通常はどのような設計になるのでしょうか?
価格テーブルや在庫テーブルを作って356日分のカラムを作るのが普通ですか?
あと、商品データベースには商品テーブルが一つだけあります。
もし上記のように価格テーブル、在庫テーブルを作るとしたら商品データベースの中に作るのでしょうか?
それとも価格データベースの中に価格テーブル、在庫データベースの中に在庫テーブルを作るのでしょうか?
長所・短所などがありましたら教えてください。
どうぞよろしくお願い致します。
No.2ベストアンサー
- 回答日時:
>この商品の価格や在庫数の1年分(365日分)の履歴をデータベースに記録したいのですが、通常はどのような設計になるのでしょうか?
例えば、
価格:
価格テーブル
商品コード、適用開始日、価格
(適用終了日はあっても可:通常は次の適用開始日の前日なのであまり持たない)
※価格が取引先によってまちまちな場合は、価格テーブルに取引先コードがはいっていたり・・・。
在庫:
あまり、日単位の在庫数を持っているのを見たことがない。
元帳テーブル
商品コード、(在庫場所)、年月、月初在庫数
入出庫テーブル
年月日、(入出庫場所)、商品コード、入出庫数
入庫と出庫別々で持つため最大で2レコード持つ。
※毎日の在庫は、上記2テーブルより集計。
★目的によってどういうテーブルを用意するかは変わってきておかしくないので、
例えば、在庫の適正水準算出のために必要な帳票専用のテーブルとして、
年月日、商品コード、在庫数のテーブルがあってもおかしいとは言いませんが、
このテーブルは更新するのが面倒なんです。
⇒例えば、過去日付の入庫を訂正したら・・・その日以降の全データを修正しないといけません。
注:どこまで管理しているかにもよります。
質問文の内容では、入庫数や出庫数は管理していない、単に一日の終わりに在庫数を入力しているだけ
とも考えられます。
これなら、年月日、商品コード、在庫数のテーブルでいいと思われます。
(というより他の持ち方ができない)
データベースを分けるかどうかは、どちらでもいいでしょう。
商品属性なので、商品データベースに含めてもいいし、
在庫属性なので、在庫データベースを別に作ってもいいし、
データベースの容量との関係で問題がなければわかりやすいと思うほうでいいでしょう。
お礼が遅れて申し訳ございませんでした。
いろいろアドバイスいただけて助かります!
>このテーブルは更新するのが面倒なんです。
>例えば、過去日付の入庫を訂正したら・・・その日以降の全データを修正しないといけません。
たしかにそのとおりですね。過去のデータをデータベース内で配置変えするのは無駄ですしね。
>質問文の内容では、入庫数や出庫数は管理していない、単に一日の終わりに在庫数を入力しているだけとも考えられます。
はい、入庫数や出庫数は管理しません。
>これなら、年月日、商品コード、在庫数のテーブルでいいと思われます。
これはNo1さんと同じように「年月日のテーブルに商品コードと在庫数のカラムで良い」という意味でしょうか?
No.1
- 回答日時:
>価格テーブルや在庫テーブルを作って356日分のカラムを作るのが普通ですか?
これはあり得ない
条件として、特定の日付には同じ商品がダブらないということでよいですか?
(一日なんども価格がかわるとか在庫数がかわるということではない?)
であれば商品テーブルに正規化された商品情報をいれ
日ごと商品管理テーブル的なものをつくって、日付と商品コードでユニーク属性をつけて
日付,商品コード,価格,在庫
を追記していく方式が良いと思います。
価格テーブル、在庫テーブルなど細分化する必要はないと思います
ありがとうございます!
>日ごと商品管理テーブル的なものをつくって、日付と商品コードでユニーク属性をつけて
そのようにするのですね。
10万件くらいあるので1つのテーブルでもけっこうな大きさになりそうですがやってみます。
助かりました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「テーブルに座って……」という...
-
会社の飲み会の幹事になり、座...
-
L2SWはARPテーブルを持っている?
-
外部キーだけのテーブル(主キ...
-
mysqlのupdate構文についての質...
-
飲み会で、座敷orテーブルどち...
-
リレーションシップが出来ません。
-
SQL Server management studio ...
-
[DB設計]多対多の問題点とは
-
【MySQL】1対1でテーブルをあ...
-
複雑なSQL文について
-
UTF8のテーブルをODBCドライバ...
-
アクセスのリンクテーブル一覧...
-
テーブルリンク リンク元を知...
-
1対1のリレーション(主キー同...
-
テーブルのカラム構造だけをコ...
-
SQL2000 ワークテーブルの作成...
-
SQLです!!教えてください。あ...
-
【エクセル】データテーブルの...
-
テーブル:生徒名簿 生徒名簿の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「テーブルに座って……」という...
-
会社の飲み会の幹事になり、座...
-
外部キーだけのテーブル(主キ...
-
テーブルリンク リンク元を知...
-
オーダーの覚え方について
-
下記、問題に対しての解答が以...
-
飲み会で、座敷orテーブルどち...
-
アクセスのリンクテーブル一覧...
-
【エクセル】データテーブルの...
-
L2SWはARPテーブルを持っている?
-
面接のときテーブルが正面に。...
-
男性と2人で飲食店に行きテーブ...
-
UTF8のテーブルをODBCドライバ...
-
お金持ちのテーブル
-
1つのテーブルに同じデータを参...
-
テーブル名の前のドットの意味
-
複雑なSQL文について
-
データベースの接続に失敗して...
-
【PHP】SQL文のSUM関数で出力し...
-
更新されたテーブルを表示したい
おすすめ情報