0

客户希望能够每月导入一个相当庞大的数据电子表格(至少在我看来)。目前它由大约 200 行和 41 列组成。

前两列是标识符(位置的 ID 和人类可读的名称);接下来的 39 列都是数值。这些数字实际上是“评级”,分为 39 个类别 - 但是客户刚刚暗示他们可能希望在未来扩展这些类别。

我最初的想法是创建一个模仿电子表格的数据库结构(基本上是 41 列) - 但是客户可能希望稍后添加到它,我不知道这是否是解决这个问题的最佳方法和。

我不是受过经典训练的编码员;我只是根据需要选择了一些东西,所以解决方案越简单越好。我考虑过可能在每个位置的基础上序列化一个关联数组:

----------------------------------------------------------
 ID     Name        Data                            Date
----------------------------------------------------------
 1      Newport     {niceness:1, staff:6.5, etc.}   Mar 13
 2      Stobart     {niceness:7, staff:3.1, etc.}   Mar 13
----------------------------------------------------------

...但我不知道这是否是最好的方法,或者它是否一定会按照我设想的方式工作。想法是,如果13 年 3 月只有 39 个类别,而13 年 7 月有 42 个类别,那么数据库结构不会受到影响;只是存储了一个不同的关联数组。

这种事情还可能(?)消除导入表时出现列不匹配错误的可能性 - 例如,如果他们突然决定在没有警告的情况下删除一个类别,然后尝试导入一个短列的电子表格。

注意事项:

我正在开发这是一个 Wordpress 插件,所以数据库表结构写在那里,并且由于 WP 的dbDelta函数,更新起来相当简单。

我还希望使用 Matt Kruse 的PHP ExcelReader,在我最初的测试中它似乎非常出色。

4

1 回答 1

3

我会将表拆分为名称、类别和一个名为 *names_categories* (或类似名称)的链接表

表名称

----------------------------------------------------------
 ID     Name        Date                    
----------------------------------------------------------
 1      Newport     Mar 13
 2      Stobart     Mar 13

表类别

----------------------------------------------------------
 ID     Category                                    
----------------------------------------------------------
 1      niceness
 2      staff       

表名_类别(链接表)

----------------------------------------------------------
 id_name    id_category value                           
----------------------------------------------------------
 1          1           1
 1          2           6.5
 2          1           7
 2          2           3.1

This would give you more flexibility. Even if your solution works, it's not that flexible and could be hard to do maintenance of the database in future.

于 2013-04-10T19:13:48.273 回答