请教一个设计思路问题,要实现一个层级配置功能,
有 1 个基础表简称 b (a, b, c, d, e)有很多列数据。现在需要依据这个配置做一个层级配置。
规则如下,使用 a, b, c 3 个列 做一个规则配置,
必须依次往下配置,a 必填,b 和 c 非必填。不会有(null, null, "x" )或 ("1", null ,"3")这样的数据,可以出现('a', null, null) 、(a, b, null) {a, b, null}这样数据
配置的数据项不能存在重复的级别配置,举例
如果存在("1", "2", "3"),那么任何("1" ,? , ?) 类型的都不可以(?包含 null ),只能是不同与现有数据级别的值,比如可以是("1","2","4")、("1","2","5")、("1","3","3")这样的数据
如果存在("1", "2", null),那么任何("1" , "2" , ?) 类型的都不可以(?包含 null ),只能是不同与现有数据级别的值,比如可以是("1","3",null)、("1","1",null)、("2","1", null)这样的数据
如果存在("1", null, null),那么任何("1" , ? , ?) 类型的都不可以(?包含 null ),只能是不同与现有数据级别的值,比如可以是("2",null, null)、("3", null, null) 、("4", "2", null 这样的数据
如果配置了 a=1 ,bc 为 null ,后面所有 a=1 后续无法再配置,只能再配置 a!=1 的。
如果配置了 a=2,b=3 ,后面所有 a=2 ,b=3 的后续无法再配置,只能再配置符合 非(a=2 且 b=3)的。
总和来说,就是 只能存在同级别不重复的数据,取决于谁先谁后,先配置了层级大小决定了后续能添加的维度大小。不存在交叉数据的维度。
目前的想法,是数据库设计一个 b 如 t ( a,b,c ) 3 个字段
select CONCAT_WS('_',ifnull(a,''), ifnull(b,''), ifnull(c,'')) as uniqueKey
from t
where LOCATE(#{uniqueKey,jdbcType=VARCHAR}, t.uniqueKey) > 0 or LOCATE(t.uniqueKey, #{detail.uniqueKey,jdbcType=VARCHAR}) > 0
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.