顧客ごとに複数のユーザー定義属性があるスキーマを作成する方法は?
-
22-07-2019 - |
質問
私は、クライアントがフィードバック/調査環境のようなものでユーザーに表示されるフィールドを定義できるようにするアプリケーションに取り組んでいきます。たとえば、ピッツェリアにはお気に入りのトッピングを求めるフィールドがあり、バーにはお気に入りのビールのブランドがあります。
これらのフィールドは特定の顧客に依存しており、おそらく重複しないため、システムはこれらのフィールドを顧客が作成および変更できるようにする必要があります。同様の顧客のフィールドに基づいて、顧客に提案を提示する何らかの方法があれば理想的です。たとえば、2番目のピッツェリアにサインアップしている場合、管理ページでフィールドを定義して、同様の企業が以下の質問をすることを選択し、「サンプル」のリストを提示したと言うかもしれません。値。
これは、このテーブルの Entity-Attribute-Value(EAV)
モデルの良い候補でしょうか?従来のリレーショナルモデルは、「user1」と呼ばれる多くのフィールドを含むため機能しません。など、これはもちろん非常に扱いにくいものです。
解決
いいえ、説明するシステムはEAVを必要としませんが、以下に表示されるものにはEAVモデルに共通の要素が含まれているように見える場合があります。
CLIENT(clientId、clientName)
SURVEY(surveyId、clientId)
RESPONDENT(respondentId、surveyId、respondentName、respondentEmail)
QUESTION(questionId、surveyId、questionText)例: 「お気に入りのトッピング」
OPTION(questionId、responseText)例: 「アンチョビ」、「ペパロニ」
RESPONSE(questionId、respondentId、responseText)
クライアントは多くの調査を作成できます。各調査には多くの質問を含めることができ、一部には推奨オプションがあります。回答者は調査に応答し、回答はそれぞれ回答として記録されます。 RESPONSE.responseTextは、オプションを選択したか、独自の応答を入力したかに応じて、特定のOPTION.responseTextと一致する場合と一致しない場合があります。
これは単なる例であり、このモデルには多くのバリエーションがあり、特定の要件に合わせて作成する必要があります。