私はデータベース設計に非常に慣れていませんが、データに非常に複雑な関係があるクライアントからかなりの注文を受けました。私がやろうとしているのは、顧客の状態に基づいて製品を推奨するためのロジックを書くことです。ただし、データの他のさまざまなビットの値に応じて適用する必要がある興味深いフィルターがいくつかあります。たとえば、一部の製品は {men|women} のみを対象としているため、say の値によってはcustomers.customer_gender
その製品が推奨されない場合があります。
もちろん、これをすべて PHP で行うこともできますが、それをデータベースで表現し、それらをデータベースへのフォーム インターフェイスにするだけでよいでしょう。そうすれば、コードをカスタマイズするために私を再雇用することなく、新しい製品を追加するときにこれらの関係をカスタマイズおよび変更できます。私の問題は、経験不足です。この情報を表でどのように表す必要があるのか はっきりわかりません。
EDIT 1 -- 例を試す
次のテーブルがあるとします。
お客様
id name gender
-- ---- ------
1 Bob male
2 Mary female
3 Steve male
調子
id name
-- ----
1 Headaches
2 Allergies
3 Low Energy
製品
id name description
-- ---- -----------
1 Product A anti-allergy
2 Product B energy booster
3 Product C pain reliever
また、外部キーを使用して、これらの間の関係を定義するいくつかの追加のテーブルがあります。たとえば、どの製品がどの条件に対して推奨されるか (製品 ID と条件 ID を接続する 2 列のテーブル)、どの顧客がどの条件を持っているかなどです。
今は例えば男性にしかオススメできない商品もあります。または、カフェインに敏感でない人にのみ。または、特定の重大度の特定の状態にある人 (重大度は、1 ~ 3 の int 値を含む顧客と状態をリンクする表の追加の列です)。純粋なデータベース テーブルでこれらの種類の関係 (「式 Z を除く条件 Y に対して製品 X を推奨する」) を表現するにはどうすればよいですか?