テーブル(postgresql 9.1)を作成する必要があり、行き詰まります。助けてもらえますか?
受信データは、次の2つの形式のいずれかを想定できます。
- クライアントID(int)、ショップID(int)、asof(日付)、数量
- クライアントID(int)、、 asof(date)、数量
指定された受信CSVテンプレートは次のとおりです。{クライアントID、ショップID、ショップタイプ、ショップジャンル、現在、数量}
最初のケースでは、キーは--client id、shop id、asofです。
2番目のケースでは、キーは-クライアントID、ショップタイプ、ショップジャンル、asofです。
私は次のようなことを試しました:
create table(
client_id int references...,
shop_id int references...,
shop_type int references...,
shop_genre varchar(30),
asof date,
quantity real,
primary key( client_id, shop_id, shop_type, shop_genre, asof )
);
しかし、それから私は問題に遭遇しました。データの形式が1の場合、pkのnullが原因で挿入が失敗します。
クライアント内のクエリは、ショップID、またはショップの種類とジャンルの組み合わせのいずれかで行うことができます。ジャンルでの部分一致または正規表現一致のユースケースはありません。
適切なデザインは何でしょうか?これを2つのテーブルに分割してから、検索結果を結合する必要がありますか?または、欠落している値に0と空白を入れて、先に進むのが通例ですか?
重要な場合は、すべての履歴データがロードされると、テーブルは1億から5億行になると予想されます。
ありがとう。