Pregunta

Voy a trabajar en una aplicación que permita a nuestro cliente definir los campos que se mostrarán a los usuarios en una especie de entorno de comentarios / encuestas. Por ejemplo, una pizzería podría tener un campo pidiendo su cobertura favorita, un bar podría tener su marca favorita de cerveza.

El sistema debe poder permitir que nuestros clientes creen y modifiquen estos campos, ya que dependen del cliente específico y probablemente no se duplicarán. Sería ideal si hubiera alguna forma de presentar sugerencias al cliente basadas en campos similares del cliente; por ejemplo, si tenemos una segunda pizzería para registrarse, en su página de administración para definir campos, podría decir que empresas similares optaron por hacer las siguientes preguntas y presentar una lista de "muestra". valores.

¿Sería este un buen candidato para el modelo Entity-Attribute-Value (EAV) para esta tabla? Un modelo relacional tradicional no funcionaría porque implicaría muchos campos llamados "usuario1". y similares, que por supuesto es muy difícil de manejar para cualquier cosa.

¿Fue útil?

Solución

No, el sistema que describe no requiere un EAV, aunque lo que ve a continuación puede tener algunos elementos comunes con los modelos EAV:

CLIENTE (clientId, clientName)

ENCUESTA (surveyId, clientId)

RESPONDENTE (respondentId, surveyId, respondentName, respondentEmail)

PREGUNTA (questionId, surveyId, questionText) p. " topping favorito "

OPCIÓN (questionId, responseText) p. ej. " anchoas " ;, " pepperoni "

RESPUESTA (questionId, respondentId, responseText)

Un CLIENTE puede crear muchas ENCUESTAS, cada una de las cuales puede tener muchas PREGUNTAS, algunas con OPCIONES sugeridas. Un RESPONDENTE responde a una ENCUESTA, y cada una de sus respuestas se registra como RESPUESTA. RESPONSE.responseText puede o no coincidir con una OPTION.responseText dada, dependiendo de si eligieron una opción o escribieron su propia respuesta.

Este es solo un ejemplo, hay muchas variaciones en este modelo que probablemente necesitará hacer para satisfacer sus requisitos específicos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top