我们正在开发一个重要的内部项目,该项目可以让用户上传Excel文件,并最终对从这些Excel中收集的所有数据进行搜索。在开始设计之前,我正在努力做我的功课,并提出最佳解决方案。
要求如下:
1. 用户可以上传具有任意列数的Excel文件,因此没有预定义的Excel结构。 2. 与第一点相反,我们认为用户具有一些字段。例如-名字,姓氏。这些列不必存在。 3. 搜索选项将按以下方式工作-当用户搜索时,他可以搜索特定列-那些预定义并且我们期望他的Excel文件拥有的列(在我们的示例中为名字和姓氏)。他还可以在“其他”字段下搜索所有其他列。
关于“其他”搜索字段-此字段将浏览所有不适合预定义列的所有Excel文件中的所有列。即-一个文件有一个年龄列,另一个文件有一个出生地列,“其他”字段将搜索所有这些列。
最佳方法是什么?
1. 动态为每个上传的Excel创建一个新的Django模型,其中包含Excel具有的所有列吗? 2. 动态为每个文件创建一个新的Django模型,其中包含所有预定义的列(如果存在!)和一个“其他”文本字段,它将连接所有不相关的字段吗? 3. 有一个大的Django模型(意味着我的数据库中只有1个表),其中包含所有预定义的字段(再次,可以为空),以及一个称为“其他”的字段,它将连接所有不相关的列吗? 4. 我可以拥有具有所有预定义列的主表,以及具有对主表的外键的另一张表,其中每行代表一个“其他”字段。
第四种解决方案的示例-
和维度表有关 -
关于扩展性 - 我们预计最终不会有超过1500个Excel文件,每个文件包含100到大约10万行(我们可能会限制每个Excel文件的行数为100k)。我们从检查的Excel中得出的统计数据表明,我们不会超过30万行。
我们将使用Django和MySQL或PostgreSQL。
希望我的问题清晰易懂,不要太难理解。
谢谢!
要求如下:
1. 用户可以上传具有任意列数的Excel文件,因此没有预定义的Excel结构。 2. 与第一点相反,我们认为用户具有一些字段。例如-名字,姓氏。这些列不必存在。 3. 搜索选项将按以下方式工作-当用户搜索时,他可以搜索特定列-那些预定义并且我们期望他的Excel文件拥有的列(在我们的示例中为名字和姓氏)。他还可以在“其他”字段下搜索所有其他列。
关于“其他”搜索字段-此字段将浏览所有不适合预定义列的所有Excel文件中的所有列。即-一个文件有一个年龄列,另一个文件有一个出生地列,“其他”字段将搜索所有这些列。
最佳方法是什么?
1. 动态为每个上传的Excel创建一个新的Django模型,其中包含Excel具有的所有列吗? 2. 动态为每个文件创建一个新的Django模型,其中包含所有预定义的列(如果存在!)和一个“其他”文本字段,它将连接所有不相关的字段吗? 3. 有一个大的Django模型(意味着我的数据库中只有1个表),其中包含所有预定义的字段(再次,可以为空),以及一个称为“其他”的字段,它将连接所有不相关的列吗? 4. 我可以拥有具有所有预定义列的主表,以及具有对主表的外键的另一张表,其中每行代表一个“其他”字段。
第四种解决方案的示例-
+----+--------+--------+--------+
| id | field1 | field2 | field3 |
+----+--------+--------+--------+
| 1 | val1 | val1 | val1 |
| 2 | val2 | val2 | val2 |
| 3 | val3 | val3 | val3 |
+----+--------+--------+--------+
和维度表有关 -
+----+------+------+
| fk | key | val |
+----+------+------+
| 1 | key1 | val1 |
| 1 | key2 | val2 |
| 1 | key3 | val3 |
| 2 | key4 | val4 |
+----+------+------+
关于扩展性 - 我们预计最终不会有超过1500个Excel文件,每个文件包含100到大约10万行(我们可能会限制每个Excel文件的行数为100k)。我们从检查的Excel中得出的统计数据表明,我们不会超过30万行。
我们将使用Django和MySQL或PostgreSQL。
希望我的问题清晰易懂,不要太难理解。
谢谢!