Home >Backend Development >PHP Tutorial >用户自定义数据表中的字段
有一个需求,比如客户上传以前的excel表格或者csv文件,导入用户表,是用户信息,包括以下列:昵称,城市,生日,订单号,手机号等,
但在我们的系统中,现有的用户表的字段只有昵称,城市等,没有生日,订单号,手机号等字段。
能否让客户上传文件时,读取表格文件并新建一张表,储存本来用户表中没有的字段信息?
或是把本来没有的字段信息串行化后存入原用户表中的一个特定字段?在前台呈现时,格式化这个特定字段并显示?
哪种可行性更高呢,或是有其他办法?
有一个需求,比如客户上传以前的excel表格或者csv文件,导入用户表,是用户信息,包括以下列:昵称,城市,生日,订单号,手机号等,
但在我们的系统中,现有的用户表的字段只有昵称,城市等,没有生日,订单号,手机号等字段。
能否让客户上传文件时,读取表格文件并新建一张表,储存本来用户表中没有的字段信息?
或是把本来没有的字段信息串行化后存入原用户表中的一个特定字段?在前台呈现时,格式化这个特定字段并显示?
哪种可行性更高呢,或是有其他办法?
如果自定义的字段没有排序,检索方面的需求,还是建议用大字段吧,把非标准字段的数据全部以JSON或数组序列化的格式存到一个大字段中,需要展示的时候再做格式化输出就好了。
如果有排序或检索需求,则可能需要结合一些开源的索引软件比如Apache Lucene来实现了,看具体需求吧。
还有另外一种方式,代码逻辑上可能稍微复杂一点,存储效率也会很低,其实不大建议,但是如果你不是海量数据的话,问题也不大。方法就是建立一张字段足够多的表(user_data),字段命名都采用通用命名方式比如“column1,column2“等,然后专门建立一个表做用户的数据字段对应(user_data_columns),格式如下:
| uid | name | field |
| 101 | 生日 | column1 |
| 101 | 手机号 | column5 |
需要使用的时候,先到user_data_columns表中把相应的字段名和表的字段读取出来,然后到user_data表中去取相应列的数据。