如何在数据库逻辑里体现与、或

戴威 发布于 2010/09/06 15:50
阅读 219
收藏 1

比如

任务1的达成条件是a与b与c

任务2的达成条件是a或b或c

任务3的达成条件是a与(b或c)

……

如何建表

加载中
0
烈冰
烈冰

数据库存放数据,数据间的逻辑关系不是应该在代码里实现吗?

0
戴威
戴威

我不可能每增加一个任务,就加一段代码吧,必须得在数据库里存放一个能辨别的东西

0
红薯
红薯

反正我是没看明白,这到底要干吗:)

0
G.
G.

楼主的意思是"触发器"吧?

0
戴威
戴威

把达成条件存到数据库里,比如有两张表

任务 - 达成条件

要达成任务1所需的条件为A、B、C都满足

要达成任务2所需的条件为A、B、C其中一个满足

要达成任务3所需的条件为A必须满足,B和C其中一个满足

要达成任务4所需的条件为A满足,或者B和C其中都满足满足

以此类推,如何从数据库建中建立一张关联表,把逻辑体现出来

我现在的想法是在任务里保存一个表达式,在关联表里加一个序号

任务1:1&2&3

任务2:1|2|3

任务3:1&(2|3)

任务4:1|(2&3)

然后按照序号取条件就可以了

红薯老大,推荐一个解析这种表达式的工具包吧

0
戴威
戴威

IKExpression看起来不错

0
MUTEX
MUTEX

可以用规则引擎

0
V
V

自己封装个JS专门用来解析吧,搞出来了放上来大伙分享分享啊,你这需求太特殊

不过就现在这几种情况,你自个封装个JS或者类用来解析应该还过得去

0
mallon
mallon

这个最好还是用程序逻辑实现吧,数据库的老本行毕竟还是存数据用的,即便是某一个数据库提供了这样的功能,你在上面实现了,但以后如果要换数据库又麻烦了

0
戴威
戴威

引用来自#10楼“mallon”的帖子

这个最好还是用程序逻辑实现吧,数据库的老本行毕竟还是存数据用的,即便是某一个数据库提供了这样的功能,你在上面实现了,但以后如果要换数据库又麻烦了

这个是哪个数据库没什么关系吧

任务有10w个,我就要写10w个判断,如果改下任务,我得重写代码?那我的系统不是废品么

返回顶部
顶部