數據庫設計問題,你們都是。我有一個表單(如紙類),有幾個數據入口點。這種形式已經發生了變化,預計會在幾年內發生變化。它正在變成一個電腦應用程序,這樣我們就可以停止浪費紙張。 (還有一些小問題,比如一箇中央存儲中的所有數據都可以被查詢等等)。我想將所有表單數據存儲在數據庫中,並且對於這些更改非常不可知。數據庫設計:將數據從紙質表格存儲到數據庫中
最初,我只是考慮每個字段是一個字符串 - 我有一個表是這樣的:
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,但這實際上是一個更普遍的問題。