私はジュニアプログラマーであり、特にデータベース設計の初心者です。
少し前に、暇なときに、Javaで株価の変化を追跡してグラフ化するプログラムを作成しました。当時、DBをインストールするのは面倒だったので、CSVファイルの山を使用してデータを保存し、各株の1つを追跡しました(GOOG.csv、BHP.csvなど)。
Iv'eは、データベースを学習アクティビティとして使用するように更新することにしましたが、私の設計ではハードルにぶつかりました。株式ごとに個別のデータパイルの以前の設計を継続するか、それらを統合する必要があります。つまり、追跡された株式ごとにテーブルを作成し、日ごとのデータの新しいレコードを作成する必要があります。または、株式の識別子を使用した一般的な「株式データ」テーブルを作成する必要があります。
最初の方法はもっと簡単に思えます。すべてのレコードを取得するのは簡単です。
SELECT *
FROM GOOG
2番目は
SELECT *
FROM stock_data
WHERE stock_name="GOOG"
私が言ったように、私は完全なデータベース初心者です。私には、最初の方が高速であるように見えますが、全体的に設計が貧弱で管理が難しく、拡張性が高くありません。2つ目は、1つ目が問題ない場合、不必要に遅くなる可能性があるようです。
私のプロジェクトの規模のために、どちらもうまくいく可能性が高いと思いますが、このタイプの問題の原則として、どちらが正しい設計の選択でしょうか?
賢明なDB設計のアドバイスは大歓迎です。:)