1

私が質問をするとき、私はしばしばこれについて疑問に思います:

テーブルにフィールドを追加する方がよいですか、それとも値を取得してサーバー側の言語で計算する方がよいでしょうか。

たとえば、テーブルStudentにはStudent.scoreフィールドが含まれています。成績を取得したいです。

スコアを取得して、成績のif / else / switchを作成しますか?

別のフィールドに依存するものを格納するためだけにフィールドを追加してスペースを浪費しますか?

前者は、成績が必要になるたびにやるのが面倒です。スペースの使用法を考えると、後者は私を怖がらせます。10,000レコードしかない場合は、すでに10,000フィールドを無駄にしています。

重要なテーブルと中規模から大規模のデータベースサイズを考慮すると、最も効率的な方法はどれですか?

重要な場合は、サーバー側の言語としてPHPを使用しましょう。

4

3 に答える 3

2

通常、データ永続化レイヤーには、頻繁に変更される計算値を保存しないでください。これを行うと、停滞したデータがデータ ストア内に存続し、ビジネス レイヤーに影響を与え、それが他のすべてに影響を与えるリスクが生じます。

一般的に言えば、実行時に常に計算値を生成する必要があります。

ただし、設計上の問題に対処する最善の方法を決定する際に、データベース内の単一の追加フィールドについては心配しません。ハード ドライブの容量は安価でありながら豊富です。:-)

于 2008-11-02T02:31:51.103 に答える
2

あなたのデータベースは、あなたが信用しているよりもはるかに強力です。

これの多くは DB のタイプとバージョンに依存しますが、スクリプトをより効率的にするために使用できる手順と関数があります。これらのメソッドは、存在する複数行のソリューション サーバー側言語と比較して、単純なクイック コールである可能性があります。呼び出されたときに、生徒のすべての情報と、計算された文字の成績を返すプロシージャを作成してみませんか? 2 つのフィールドの違いを見つけるためにいくつかの数学関数を使用してみませんか? 日時関数を使用して日付フィールドをフォーマットしてみませんか?

DB を使用して情報を処理する方法はたくさんあります。それは、データベースが予想されるサイズに依存します。それが単純な 5 ページの CMS Web サイトであれば、いや、DB 側であまり多くの作業を行う必要はないでしょう。そうです、おそらく処理の一部を DB に移動したいと思うでしょう。

于 2008-11-02T02:38:28.533 に答える
1

追加フィールドを追加するときは、依存するフィールドが更新されるたびに、追加フィールドも更新する必要があることも考慮する必要があります。レコード セットをループしてサーバー側のコードで実行する代わりに、計算を SQL に移動することは可能ですか?

于 2008-11-02T02:33:22.020 に答える