2011-07-11 10 views
0

私はphpとmysqlを使ってWebアプリケーションを設計しています。私はデータベースに少し疑問があります。 アプリケーションはトリガーまたは複数のクエリ?パフォーマンスの効率性?

  1. のように登録されています。
  2. ユーザーが入力した作業負荷(ofcourseログイン後:))。
  3. ユーザーはログアウトします。

ここで、同じフォームで受け入れる複数のタイプの入力があります。 3つのタイプの入力があり、7つのテーブルに格納されているとします(クライアントの要求:()

入力が完了した後でクエリを起動する最も良い方法は何ですか? 今のところ私は考えることができます

  1. 火PHP
  2. から7種類のクエリは、適切な表に入力を伝播するためにトリガを書く

。方法を以下だけのパフォーマンス効率的であるアプローチ私を導く? Thがanks :)

+3

私はあなたが "Trigger"ではなく "Stored Procedure"を意味すると思います。なぜなら、トリガーを持っていると、トリガーが実行されている間にデータが生きる場所が必要になるからです。 –

答えて

2

多くのデータをロードする必要がある場合は、後でペナルティを科すため、一般的にはトリガーから遠ざかってください。ストアドプロシージャを使用する方法があります。必要に応じて、異なる条件を設定して異なるテーブルに入力を伝播することができます。

+0

トリガーは過度に使用すべきではありませんが、正当な用途を持っています。 –

+1

もちろん!あなたがそれらについて学ぶとき、彼らはとても涼しく見え、そしてあなたはそれらを過度に使わないことを学びます。 :) – Candide

1

あなたの状況を再考する必要があると思います。あなたはすでに対処するテーブルが少なくてすますのはすばらしいことを知っていますか?さて、適切に構築されたビューでその状況をシミュレートしてみてはいかがですか?次に、クライアント(クライアントであることは確かですか?opsには「クライアント」と書かれていますが、「後で提供する必要のあるレポート」)は、データベースが処理できるテーブルをいくつでも持つことができます。そして、ところで、あなたはまだinserts and updates on a viewを発射することができます。

データベースとPHPデータ構造との明確な関係がないように思えるので、私の本能は2つ以上を分離することです。これは実際にデバッグが難しくなることができ、(ある実行可能ではない上記の仮定)ストアドプロシージャとトリガを好む意味しますが、それはまた、PHPはたったの約

「私はこの事に挿入していますを考える必要があることを意味しますと呼ばれる<事名>「

代わりの

」OMG、これは、のような私が<表1>に話をする必要が最初に完全に激しいですが、私はを忘れることができませんテーブル2>特に、その2つが...待機している可能性があるので、私は自分のターンを欠場しましたか?

OK、PHPはディッツ(I実際には言語のような)ではありませんが、それは実際に物事を格納するために来るとき、それはまたできるだけダムとして機能しなければならない - それは、そのではありませんビジネス。

0

おそらく、7つのクエリを実行するストアドプロシージャを記述する必要があります。これらの7つのクエリを実行するために必要なトランザクションの数を考えてみてください。

0

実行するクエリをどのくらい頻繁に変更する必要があると思いますか?

データベースサーバーにアクセスできますか?

トリガーをトリガーする必要がある状況を知っていますか?

データベースにデータを書き込む他のプロセス/アプリケーションはありますか?

クエリが頻繁に変更される場合は、PHPでコードを実行してクエリを実行します。

データベースサーバーにアクセスできない場合は、実際にその方法を実行する必要があります。ストアドプロシージャとトリガを作成する権限が必要です。

他のプロセスが同じデータベースに書き込みを行っている場合は、それぞれのプロセス所有者と要件を協議する必要があります。それ以外の場合は、不要なデータがデータベースに表示されたり変更されたりすることがあります。

私は個人的に非常に単純なストアドプロシージャを呼び出さない限り、私は個人的にトリガから離れる傾向があります。私はトリガーによって誰も気にならないことを100%確信しています!

関連する問題