質問: Rubyを使ってYahooファイナンスをスクレイピングして株価をDBに蓄積しようとしています。 株価の取得はできているのですが、それをMySQLに蓄積する場合、 ・銘柄毎にテーブルを作る。銘柄の選択はテーブル名で行う ・全ての銘柄を一つのテーブルに蓄積する。銘柄の選択は、テーブル中の証券コードフィールドで行う のどちらが適切でしょうか。 データ取得は2~3時間に一度行う予定です。 これまで、簡単なWEBアプリ程度は作った事が有るのですが、大量のデータを扱った経験が無く、SQLもサイトを見ながら必要な部分だけつまみ食いした感じなので、 DB設計の定石的な知識がありません。 アドバイスをお願い致します。
回答: 後者です。 テーブルはクラスのようなもの,テーブル内のレコードはインスタンスのようなものだと思って下さい。(Ruby on Railsでもそういう設計になっています) 銘柄ごとにクラスをいっぱい作るのはNG設計ですよね。 銘柄ごとにインスタンスがいっぱい作れるように,クラスを設計するのです。 同じように,1テーブル内で全銘柄の違いを吸収できるようにしましょう。