基本 - 間違って使わないように。



データベースを使ったシステム開発は、テーブル設計が駄目だとプログラム作成で苦労します。
プログラム作成といっても、この場合はSQL文の作成です。
駄目な設計だと、一回のSQL文で必要なデータを取得する事ができません。(それどころか、取得条件を絞れずテーブル修正することにも・・・)
VB側から、何度もSQL文を投げるようなことが無いように設計したいものです。
しかし、設計以前に「SELECT * FROM テーブル名」なんてSQL文を投げて、返ってきたデータをVB側でチェックして必要なデータを取得するなんて馬鹿なプログラムは止めて下さい。
冗談のような話ですが、以前そういう会社に出会った事があります。


1. 条件はSQL文の中に書く。
  間違っても、全件取得した後にVB側でデータのチェックするような真似は止めましょう。
  データベースを使っている意味がありません。

2. 「*」を使わず、必要な項目名を記述する。
  項目名がわかっているなら、項目名を書いたほうが処理が早くなります。

最低でもこれくらいはしましょう。
もっと言えば、以下もしましょう。

3. VB側でNULL判定はせず、SQL内で行う。
  VBのIsNull関数を使わず、SELECT内でNULL判定をしましょう(データベースによって書き方は違います)。

4. テーブル別名を使う。
  長いテーブル名の場合などは、別名を使いましょう。
  SQL文が短くなり、見やすくなります。

5. 処理速度の速い書き方をする。
  LIKE、BETWEEN、INなど、処理が早いものを使いましょう。(条件によって変わります)
  WHRER条件の順番によっても処理速度は変わります。
  10分以上かかっていた処理が、数秒で終わるようになる場合もあります。

6. 適切なカーソルを使う。

さらに言えば、以下もしましょう。

7. 何度もよく使う条件の場合はVIEWを使う。
  一覧表示や帳票出力などで同じ条件のSQL文を使う場合、予めVIEWを作成する事で処理速度を上げることができます。
  FROMの中にSELECT文を書いてもいいですが、VIEWを作成してもいいなら、そのほうがいいです。
  ※ VIEWとは、予めデータベース側にSELECT文を作成し、その結果をテーブルのように扱える機能です。

8. 時間のかかる処理は、ストアドを使う。
  無理にVB側で処理をせずに、時間がかかるならばストアドを作成しましょう。
  VBからはストアドをキックするだけです。
  ※ ストアドとはデータベース側に置いておけるプログラムです。コンパイル済みの物を置き、データベース側に処理させる為、高速です。

それと、以下は必ずしましょう。

9. トランザクションの開始と終了を書く。
  処理途中で何が起こるかわかりませんので、トランザクションを記述しましょう。
  トランザクションの開始と終了を使った方が、VB側の処理が読みやすくもなります。
  ※ トランザクションとは、複数のテーブルに対してデータの追加・更新・削除などを行い、
    途中で失敗した場合などに、開始前の状態にデータを戻せる機能です。


これは個人的にですが。

10. トリガーを使いたくない。
  トリガーを使うと、プログラムから処理の流れがわかり辛くなるので使いたくない。
  ※ トリガーとは、各テーブルにInsert、Update、Deleteなどの処理が発生した場合に実行するプログラムです。
    例えば、商品マスターの商品コード="B000102"のデータを削除した場合、
    商品マスターのDeleteトリガーに、削除した商品を買い物データから削除するような処理を書いておけば、
    買い物データにある商品は、必ずマスターにもあることになります。

職業プログラマは、使っていません。(たぶん)

11. データベース接続コンポーネント、データグリッドなどは使わない。
   VB付属の、データベース接続用のコンポーネントは使いません。
   データベース接続
   標準コンポーネント、ADO用、RDO用、ORACLE用などあります。
   フォームに貼り付けたのが上の絵です。
   この手のものを使い、接続しているシステムを見たことがありません。
   「VBで接続」で書いたような接続をします。

   また、これをデータソースとしてデータグリッドコンポーネントを使うようなまねもしません。
   ※ 単純な主キーしかないマスタのメンテナンスプログラムには使うことがあります。(工数を減らしたいので)
   カーソルをオープンしつづけるのも困りますが、もっと大きな問題があります。
   ・ 入力チェックが出来ない。(データベースまかせ)
   ・ 入力・更新の時、コンボボックスで選択さすことが出来ない。(直接コードを入力させるシステムになってしまう)
   ・ 行や列を結合させたような、見やすい画面が作れない。(ただの一覧表になってしまう)

   ※ データグリッドは、SQL文を投げた結果を一行ずつ追加する方法で使います。
      付属のデータグリッドを使うことは稀で、スプレッドシートやパーフェクトグリッドなどを使います。

12. VBのデーターレポート(印刷)は使いません。
   クリスタルレポートなど、使い勝手のいいものがあります。(VBにはフリー版が付属してあります)


TOP

(c)2006 はじめたばかりのデータベース rAreSoft All Rights Reserved.