我正在开发一个应用程序,它接受任何上传的 CSV 数据,将其与之前上传的其他数据集一起存储,然后根据用户选择他们想要返回的列/值生成输出(CSV 或 HTML)。数据库将根据需要自动扩展以处理新的/不同的列和数据类型。这优先于实体属性值模型。
示例 - 将这 2 个集合上传到空白数据库:
数据集 A:
name | dept | age
------+-------+------
Bob | Sales | 24
Tim | IT | 32
数据集 B:
name | dept | age | salary
------+-------+------+--------
Bob | Sales | 24 | £20,000
Tim | IT | 32 | £20,000
将以编程方式更改“数据”表,以便导入数据集 A 导致 3 个新创建的列(名称、部门、年龄)。导入数据集 B 会产生 1 个新创建的列(工资)。目前,忘记记录集是否应该合并以及没有标准化。
我遇到的问题是某些列也将具有查找值 - 假设 Dept 列将在将来的某个时候具有关联值,这些值给出该部门的地址和电话号码。对于 Salary 列、查找税组等也是如此。
这个大表中的列数不应该变得太高(几百),但应该足够多,以便用户通过管理面板管理查找表结构和值,而不是每次都需要开发人员参与。
问题是是为每列(值、描述)使用单独的查找表,还是使用引用列(列、值、描述)的组合查找表。通常我会选择单独的查找表,但在这里应用程序需要自动创建它们(例如lookup_dept、lookup_salary),然后在主SQL 语句中添加一个新连接。这将在用户的请求下完成,而不是在添加列时完成(以避免数百个空表)。
另一方面,组合查找表需要多次连接到数据表上,每次都选择列名。
个人查找对我来说似乎很有意义,但我可能完全找错了树。