在使用EAV模式

时间:2016-11-04 13:20:56

标签: sql database database-design

使用EAV模式时,我是否应该更具体地使用列名?

我有一个自定义表单构建器应用程序,用户可以从中选择一组特定字段类型(文本框,文本区域,电子邮件,URL,整数,小数,日期等)。它与formstack和surveymonkey的想法相似。

我决定使用EAV方法存储用户在这些表单字段中输入的值,我想知道的是数据库中的列是通用的还是特定的? e.g。

通用

  

FormValuesTable
   - Id
   - UserId
   - QuestionId
   - TextValue(类型NVARCHAR) - 将保留文本框,文本区域,电子邮件和URL值
   - IntegerValue(类型整数)
   - DecimalValue(类型十进制)
   - DateValue(Type DateTime)

具体

  

FormValuesTable
   - Id
   - UserId
   - QuestionId
   - TextboxValue(输入NVARCHAR)
   - TextAreaValue(输入NVARCHAR)
   - EmailValue(输入NVARCHAR)
   - URLValue(输入NVARCHAR)
   - IntegerValue(类型整数)
   - DecimalValue(类型十进制)
   - DateValue(Type DateTime)

我还有一个问题表,其中包含字段类型(文本框,文本区域,电子邮件,URL,整数,小数,日期)。

拥有Generic表的优点在于它意味着更少的列,并且具有特定表的优势在于它使域更有意义。

0 个答案:

没有答案