-1

複数のプロパティを持つことができる製品があるデータベース設計があります。私はデータベース設計があまり得意ではないので、この質問は、

Product
------------------------------------
Id           Name         Model
------------------------------------
1            Galaxy S     GT-XX123
2            Galaxy Y     GT-YY123


Product Specifications
-------------------------------------
Spec         Value        ProductId
-------------------------------------
OS           Windows            1
Processor    Dual Core          1
Screen       3.5 Inch           1
OS           Android 4.1        2
Processor    Quad core          2

ここで、OS = Android、プロセッサ = クアッド コアなど、プロパティ ベースで製品をフィルタリングする機能をユーザーに提供したいと考えています。私の質問は、複雑なクエリを記述してデータベースからデータを取得するのが良い考えなのか、それとも最初にデータを取得してからアプリケーションレベルでデータをフィルタリングするのが良いのかということです.

編集

各フィルターを分析して最終的なクエリを作成することでクエリを作成しようとしましたが、その場合複数のフィルターが適用されるとクエリが機能しません。私が直面している主な問題は、2 つの異なる値から単一のレコードを選択する方法です。だから私はその問題を解決しようとしていますが、その間にこの質問が頭に浮かんだので質問しました。

4

2 に答える 2

3

一般的に、SQLでフィルタリングが簡単であれば、間違いなくそこで作業を行うと思います。他のものとは別に、SQL システムはこれらのアクションを実行するように調整されています (INDEX などを使用)。

2 番目の考慮事項は、データセット全体を PHP に送り返す場合、データをループして一致を探している間、メモリに格納する必要があることです。

ただし、SQL で最高レベルのフィルタリングを行い、PHP で結果を「微調整」する中途半端な方法が最適なソリューションである場合もあります。

于 2013-10-27T07:47:01.140 に答える
2

私は、フィルタリングの行為がビジネス ルールであると信じています。そうは言っても、ビジネスルールはSQLコードではなくアプリケーションコードに属していると私は信じています。

以上のことを述べたので、注意点を教えてください。データベースから必要以上のデータを返さないようにする必要があります。

それで、それは私たちをどこに残しますか?使用しているテクノロジーはわかりませんが(経験のないphpのようです)、SQLを構築する優れたORMがあれば、両方の世界を最大限に活用できるはずですフィルタ ルールをアプリケーション ロジックに抽象化し、それらを ORM で使用して、データベースから正確に適切な量のデータを取得できるようにします。

幸運を!

于 2013-10-27T07:48:49.887 に答える