如何创建每个客户可以有多个用户定义属性的架构?

时间:2009-05-08 14:19:14

标签: schema database entity-attribute-value application-design

我将开发一个应用程序,允许我们的客户定义将在某种反馈/调查环境中向用户显示的字段。例如,比萨店可能会有一个要求您最喜欢的馅料的场地,酒吧可能会有您最喜欢的啤酒品牌。

系统需要能够处理让我们的客户创建和修改这些字段,因为它们依赖于特定客户,并且可能不会重复。如果有某种方式根据类似客户的领域向客户提出建议,那将是理想的;例如,如果我们有第二个比萨店注册,在他们的管理页面上定义字段,可能会说类似的企业选择提出以下问题,并提供一个“样本”值列表。

这是否适合此表的Entity-Attribute-Value (EAV)模型?传统的关系模型不起作用,因为它涉及许多称为“user1”等的字段,这当然对任何事情都非常笨重。

1 个答案:

答案 0 :(得分:1)

不,你描述的系统不需要EAV,虽然你在下面看到的可能看起来与EAV模型有一些共同的元素:

CLIENT(clientId,clientName)

调查(surveyId,clientId)

答辩人(respondentId,surveyId,respondentName,respondentEmail)

问题(questionId,surveyId,questionText),例如“最喜欢的打顶”

OPTION(questionId,responseText),例如“凤尾鱼”,“意大利辣味香肠”

响应(questionId,respondentId,responseText)

客户可以创建许多调查,每个调查可以有很多问题,其中一些有建议的选项。答辩人对调查作出回应,他们的答案都记录为响应。 RESPONSE.responseText可能匹配也可能不匹配给定的OPTION.responseText,具体取决于他们是选择了一个选项还是键入了自己的响应。

这只是一个例子,您可能需要根据自己的具体要求制作此型号的许多变体。