• ベストアンサー

テーブルの設計について教えてください。

エクセルVBA+アクセスで、株式相場の分析プログラムを作ろうとしています。 市場データはアクセスに記録させようとしているのですが、 テーブルを各銘柄毎に作るのがよいのか? 1つのテーブルに、全銘柄のデータを記録させるのがよいのか? 判断しかねています。 プログラムのし易さ、データのメンテを考えると、一長一短がありそうなのですが、 こういった場合、一般的にはどちらを選択するのでしょうか? よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

株式については全くの門外漢ですが・・・ どの銘柄も同じ要素なら、一つのテーブルの方がよろしいかと思います。 ジャスダック?と東証では何かが異なるとかの場合は・・どうなのか分かりませんけど 銘柄マスタ   ID   企業名   企業名その他    価格テーブル ID (銘柄マスタとリンク) logDate ・・・ とかになるのでは? 分割や抽出はクエリで簡単に行えますし・・・、 1テーブルでAccessの制限である1ギガバイトを超える事も無いでしょうし・・・ 余談ですが 提示されたフィールド名は、Accessの予約語に含まれるので考え直した方が・・ http://support.microsoft.com/default.aspx?scid=kb;ja;286335 ・・ばかりが目につきますがご容赦を。

その他の回答 (3)

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.4

一つのテーブルでいいと思いますが、300銘柄程度を毎日記録しつづけると、データが一年で10万件を超えてしまいます。 PCのスペックが低いとかなりの速度低下になるので、Accessではなく、まともなSQLを入れたほうが快適になるかもしれません。

xyz_1990
質問者

お礼

ご回答、ありがとうございます。 Accessにこだわるわけではないのですが、 結果検証が容易な、Excel+VBAでやりたいと思っています。 Excel+VBAと相性の良い、データベースってほかにあるでしょうか?

xyz_1990
質問者

補足

すみません。 お礼のところに書いた質問は、 この質問のタイトルから離れてしまいますので、 新規に質問をたてることにしました。 ご回答いただける場合は、そちらにお願いします。

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.3

No2です ごめんなさい。予約語では無かったですね・・ (^^ゞ

xyz_1990
質問者

お礼

ありがとうございます。 テーブルはひとつでいこうと思います。

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

機能に拠ります。 一つのテーブルに入れても問題ないと思いますが。 (銘柄の増減を考えると一つのテーブルのほうがよいでしょう) または正規化して、銘柄テーブルと金額を入れるテーブルに分けるとか。

xyz_1990
質問者

お礼

早速の、ご回答、ありがとうございます。 すみません、質問が漠然としすぎていました。 単一のテーブルの場合は、つぎのようにしようかと考えています。 市場価格テーブル ID dateID companyID open (始値) high (高値) low (安値) close (終値) 正規化はきちんとするつもりです。 やはり、テーブルを1つにするべきでしょうか?

関連するQ&A

  • データベースの設計について

    朝からデータベースの設計について悩んでいます。 テーブルにしたいデータがあるのですが、 それぞれカテゴリーが違うデータがあります。 構造的には少ししか違わないのですが、 これらのデータを1つのテーブルとしてまとめるか、 それとも、それぞれ1つずつのテーブルにするか迷っています。 迷っている理由として: ・同時にアクセスがあった場合、全て一つのテーブルにまとめていると、障害がないか? ・全てを1つのテーブルにすると、多少は構造が違うので、必要のないフィールドが出てしまう。 それぞれを1つのテーブルで分割するということも考えたのですが、 例えば、全てのデータからある特定のデータの検索をかける場合に 不都合なのではないか?と考えてしまいます。 こういう場合には: select * from table_A where field="検索したいデータ"; select * from table_B where field="検索したいデータ"; select * from table_C where field="検索したいデータ"; とテーブルの分だけSQLを実行するしかないのでしょうか? どちらを選択しても、それぞれ一長一短のようで、混乱しています。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • データベースのテーブル設計について

    データベースのテーブル設計で、数項目のみのデータをひとつのテーブルにしていますでしょうか? すべてデータベース内で管理するという一貫性はあると思うのですが、たかだか数項目なのでどうかなとも思ってしまいます。 かといって、数項目のみのデータをプログラム内(たとえば構造体)で管理するというのも、管理が必要な要素が散らばるし、再コンパイルも必要になってきます。 このあたりどのようにすればよいのかなといつも判断に悩んでいます。 みなさんはどのように判断、設計していますでしょうか?ご意見お教えください。

  • エクセル+VBAからデータベースを使う場合、何がよいでしょうか?

    連続質問で恐縮ですが、教えてください。 エクセル+VBAで株価分析を行おうと思い、データをアクセスに記録するようにしようとしていましたが、 データ量が増えると、アクセスだと重くなるとの指摘を頂きました。 プログラムはエクセル+VBAで書きたいと思っているのですが、 エクセル+VBAから使いやすいデータベースって、アクセスの他にあるでしょうか? 出来上がったプログラムは、スタンドアロンというか、私一人で使用します。 よろしくお願いいたします。

  • VBAでのテーブルのソートについて

    初歩的な質問をさせていただきます。 VBAの処理で事前にテーブルにためたデータからテーブル内に同じデータがあるか調べたいのですが、テーブル内をソートさせてから上下のテーブル内のデータで1つ1つ判断して同じデータがあるか調べようとしています。 (1)VBAでテーブルにためこんだデータを  sortメソッドでソート可能でしょうか?  可能でしたら、サンプルになるコードを  教えていただけると有難いです。 (2)テーブル内に同じデータがあるか、  一発(?)で判断できる命令はあるのでしょうか? よろしくお願いします。

  • テーブルデータのエクスポートについて

    質問です。 VBAで、Access2003をSQL,DAOで操作しようとしています。 a.mdbのテーブルデータを、b.mdbのテーブルにエクスポートしたいのですが、やり方がわからず困っています。 ちなみに私はVBA未経験で、1週間前からVBAを使っています。 すみませんが、データを含めてエクスポートする方法を教えてください。

  • EXCEL97 から ACCESS97 のテーブルを変更するには?

    EXCEL97 の VBA を使って ACCESS97 のテーブルのデータを変更するには どうやれば、いいでしょうか?

  • ACCESS VBA でテーブルの定義だけコピー

    すみません、VBAをまだ始めたばかりなのですが、 Accessで作成したテーブルをVBAでテーブルの定義のみコピーしたいのです。 調べていたらDoCmd.CopyObjectでコピー出来たのですが、テーブルの中身のデータもコピーされてしまうので困っています。 よろしくお願いします。

  • Accessのテーブルデータを一気にVBAで追加したい・・

    Accessのテーブルデータを一気にVBAで追加したい・・ Accessに一時商品登録データというテーブルがあり、 問題なければ商品登録データにデータを流し込みたいと思っています テーブルのデータ構造は全く同じです VBAで一時商品登録のテーブルから一件ずつデータを読み取って 商品登録データに追加することは出来るのですが 一気にデータを追加する方法があれば教えていただけないでしょうか? よろしくお願いいたいます

  • アクセスDBの処理速度で一番早い方法は?

    エクセル + アクセス VBAで システムトレードのシステムを作ろうと思ってます バックテストをやるために データを入れようと思うのですが 下記の中でどれが速度が速いですか? 1.銘柄ごとにエクセルのブックを作る 2.全部の銘柄をエクセルの一ブックに収める 3.全部の銘柄をエクセルの1ページに納める 4.銘柄ごとに違うテーブルのアクセスDBに入れる 5.全部銘柄が入ったテーブルを一つ作る 一テーブル6列×6000行ぐらいのデータです 3000銘柄ほど予定してます これに2行増やして移動平均などの求める値を 入れた場合 計算して値を出すよりもはやくなりますか?

  • エクセルVBAでアクセステーブル更新

    エクセルとアクセスともに2003を使っています。 毎回エクセルでアクセスのテーブルに投入するデータを加工して、アクセスのテーブルに投入しているのですが、この過程をエクセルVBAを使って、自動的にアクセスのテーブルに投入していきたいと思っているのですが、教えて頂けないでしょうか? よろしくお願いします。