算法+数据结构=软件,我这里主要谈下在软件开发过程中处理数据结构时均会遇到的问题:动态的数据结构。
数据库中表字段是已列属性来组织数据的,如果增加属性按理应该增加列字段,但我们在做软件时经常会遇到如下情况:
问题1:列属性多且变动频繁
以上是淘宝上截取的服装和电脑的两类产品的详情,首先你完全可以将所有的列:如品牌、适用年龄、尺寸等信息作为列字段存储,但会有两个问题,一是属性非常多,二是属性经常变,这是我们在软件开发过程中经常会遇到的问题。
问题2:树形属性且变动频繁
这是从携程上截取的一张酒店截图,明显看到这不是通过列属性就能解决的,尤其是此类属性依然有可能变动频繁,你可以用分表的方式实现,如酒店:hotel表,酒店公共区:hotelPublicArea表,hotelPublicArea中有自动售货机(布尔值),礼品廊(布尔值)等列属性,但如果经常变动的话(比如在二级下再增加一级,如对公共区下面的自动售货机再进行描述,说明自动售货机的经营品类,价格标准等),因为属性会硬编码进代码,会给项目开发带来一定风险。
以上两个问题就是在开发软件过程中面临数据结构的经常会遇到的问题,一是数据列变动,二是数据维度不仅仅是行-列,也有可能是树形结构,每个项目都有自己的应对方法,我这里主要说明我使用的解决方式:数据库列字段+json动态数据
把问题归纳为两点:一是要解决动态的数据结构的问题,二是要解决检索的问题
动态的数据结构用json格式去表达,json数据本来就是树形存储结构,但是缺点是检索速度慢
对于需要检索的数据,可以采用数据库列字段表示。
那么:json和列字段如何同步?如何规范json数据标准(太灵活,不做规范无法识别),这两个问题解决后,我们动态的数据结构才能得到很好的解决,我在下一篇会提到我在项目中的处理方法。