0

Je vais travailler sur une application qui permet à notre client de définir des champs qui seront montrés aux utilisateurs dans un environnement de feedback/enquête. Par exemple, une pizzeria pourrait avoir un champ demandant votre garniture préférée, un bar pourrait avoir votre marque de bière préférée.Comment créer un schéma où il peut y avoir plusieurs attributs définis par l'utilisateur par client?

Le système doit être capable de gérer la création et la modification de ces champs par nos clients, car ils dépendent du client spécifique et ne seront probablement pas dupliqués. Ce serait idéal s'il y avait un moyen de présenter des suggestions au client en fonction des champs de clients similaires; Par exemple, si nous avons une deuxième pizzeria, sur sa page d'administration pour définir les champs, il est possible que des entreprises similaires choisissent de poser les questions suivantes et présentent une liste de valeurs «échantillon».

Serait-ce un bon candidat pour le modèle Entity-Attribute-Value (EAV) pour cette table? Un modèle relationnel traditionnel ne fonctionnerait pas parce qu'il impliquerait beaucoup de champs appelés «user1» et autres, ce qui est évidemment très lourd pour n'importe quoi.

Répondre

1

Non, le système que vous décrivez ne nécessite pas d'EAV, bien que ce que vous voyez ci-dessous peut sembler avoir des éléments communs avec les modèles EAV:

CLIENT (clientId, CLIENTNAME)

ENQUÊTE (surveyId, clientId)

REPONDANT (respondentId, surveyId, respondentName, respondentEmail)

QUESTION (QuestionID, surveyId, questionText), par exemple "garniture préférée"

OPTION (questionId, responseText) par ex. "anchois", "pepperoni"

RÉPONSE (QuestionID, respondentId, responseText)

Un client peut créer de nombreux ENQUÊTES, dont chacun peut avoir de nombreuses questions, dont certaines avec options proposées. Un RÉPONDANT répond à un SONDAGE, et leurs réponses sont enregistrées comme une RÉPONSE. RESPONSE.responseText peut correspondre ou non à un OPTION.responseText donné, selon qu'il a choisi une option ou a tapé sa propre réponse.

Ceci est juste un exemple, il existe de nombreuses variantes de ce modèle que vous devrez probablement faire pour répondre à vos besoins spécifiques.

Questions connexes