- ベストアンサー
データベースの設計について
- データベースの設計に関して広くアドバイスを頂きたいです。
- ユーザーの入力データをDBで効率よく管理したいと考えています。
- 具体的には、PerlでCGIをつくり、ブラウザ上などからユーザーの入力したデータを取得してPostgreSQLに次々挿入していく形にしようとしています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
はじめまして、通るすがるともうします。 ご質問の内容なのですが、設計手法についてのご質問かと判断してお答えします。 DB(RDBリレーショナルデータベース)の設計について、以下の要領でテーブルを 決定します。(概要ですが) 1.DBに持たせる必要な項目の洗い出しから始めます。 2.次にそれらをあるカテゴリ別に分類していきます。 3.各々のカテゴリについて関係を分析する。 4.カテゴリ毎の項目属性について検討する。 5.テーブル名、項目名の付け方のルールを検討し、項目名を付与する。 という具合に設計を進めていきます。 カテゴリとは(エンティティ)、その業務の内容を熟知していなければできません。 いきなり、入力イメージが出てきて、それにシーク番号がついたイメージを記述 されても、他の人はその業務について無知な訳ですからアドバイスのしようが ないことになります。 データベース設計は、DB構築、テーブル定義などの知識とは別に設計手法なる 知識および経験が必要となります。 まず、「データベース設計」というキーワードで検索してみてください。 また、それらについて専門書がありますので、何冊かそれらの書物を読み 試行錯誤し研究することが必要と思います。 これらを誤って、設計し入力イメージ、項目追加により作成したテーブルが大幅に 変更となり大変なことになったシステムを私は多く見てきました。 これとは、別に性能についても検討をしていきます。 たとえば、一つのテーブルに数千万件、数億件のレコードが入るとします。 これらを一つのテーブルスペースに配置した場合、検索に時間がかかりレスポンス が低下するのであれば、使い勝手が非常に悪くクレームが上がるかもしれません。 レスポンス低下の原因として、これだけでもなくpostgresのメモリ割り当て、1テ ーブル当たりの項目数、項目属性、テーブルレコード長などの原因により低下する こともあるかと思います。またインデックス等の検討も必要となります。 さらに、サービス運用時のインデックス分割監視によるレスポンス低下による 作業方式、ハード障害時の対応方法等も検討しなければなりません。 なにぶん回答文字制限により説明不足かもしれませんが、効率的な設計ができるこ と、ご検討を祈ります。
お礼
お礼が遅れまして申し訳ありません。 まだまだ試行錯誤が必要なようですね。ありがとうございました。