数据库设计问题,你们都是。我有一个表单(如纸类),有几个数据入口点。这种形式已经发生了变化,预计会在几年内发生变化。它正在变成一个电脑应用程序,这样我们就可以停止浪费纸张。 (还有一些小问题,比如一个中央存储中的所有数据都可以被查询等等)。我想将所有表单数据存储在数据库中,并且对于这些更改非常不可知。数据库设计:将数据从纸质表格存储到数据库中
最初,我只是考虑每个字段是一个字符串 - 我有一个表是这样的:
FormId int (FK)
FieldName nvarchar(64)
FieldValue nvarchar(128)
...类似的东西。实际上,3NFy中的FieldName位于另一个表中,与人工键相关联,因此字段名称不会在所有位置重复。
但是,我想扩展到数字和下拉数据。我只能将数字数据存储为字符串,但这似乎是一个相当糟糕的想法。与下拉菜单相同。
我可以停止使用表格,并且实际上使用主表格表格(上面引用的FormId表格)上的列,但这意味着在每个新项目出现时添加一列,而旧表格只会是空值。 (而且,除非我保存它,我也不会对该列创建时知道该字符串表上面,这是隐含的。)
我可以扩展表上面的东西,如:
FormId int (FK)
FieldName nvarchar(64)
FieldValueType int -- enum as to which of the columns below are valid (or just let nulls imply that)
FieldValue nvarchar(128)
FieldValueInt int
组合必须位于OTLT(一个真正的查找表)中,我对此有所保留,但也许在这里需要?
有关StackOverflow的任何建议?我使用的是MSSQL,但这实际上是一个更普遍的问题。