当前位置:  开发笔记 > 前端 > 正文

布尔表达式的数据模型

如何解决《布尔表达式的数据模型》经验,为你挑选了2个好方法。

您是否知道在数据库中组织布尔表达式的方法,同时允许表达式的无限嵌套?

例:

a = 1 AND (b = 1 OR b = 2)

整个表达式不应存储为varchar以保持数据完整性.



1> Tomalak..:

选项1将使用嵌套表(具有id/parent_id结构的树),如Gamecat建议的那样.这样做相对昂贵,并且需要重复发出SQL查询以构建单个嵌套表达式的等效项.

选项2是使用序列化对象并将其存储到varchar列中.例如,JSON将是一个不错的选择.它不是对空白敏感的,可以用大量语言创建和解析,并保留数据完整性.

只要将表达式字符串解析为内存中的树对象,就可以将其序列化并存储.如果没有必要在数据库级别上操作表达式,我想我会走那条路.



2> Toon Krijthe..:

表达式是树状结构.所以你需要一种方法来在表格中呈现树.

例如,您可以使用以下字段:

ID

TypeExpression(和,等等......)

FirstChildID

SecondChildID

在这种情况下,您有以下类型:

    AND,孩子指向其他表达.

    或者,孩子指向其他表达.

    平等,孩子指向其他表达.

    Literal,FirstChild指向文字表中的条目.

    VariableLookup,FirstChild指向可变量表中的条目.

但我认为有更好的方法来组织表达.我曾经做过一个简单的表达式求值程序,它接受一个字符串并产生一个数字结果.

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有