给定一些信号,我需要找出具有配置的最小和最大限制的机器的状态。我计划建立一个具有以下结构的表(和示例数据)
| StateID | SignalID | min | max |
|---------|----------|-----|-----|
| 1 | 1 | 1 | 2 |
| 1 | 3 | 2 | 3 |
| 2 | 2 | 0 | 4 |
| 3 | 2 | 5 | 9 |
因此,我可以通过有效的那些行找到可能的状态(在 SignalID 的值介于 min 和 max 之间的意义上)。所有信号的有效状态的交集应该导致正确的状态(假设表格以这种方式完成)。但是-至于某些状态,可能对给定信号没有亲和力-我认为必须首先遍历状态-似乎效率低下,或者?
上表中的一些示例(如果已实现,则 SignalValue 介于 min 和 max 之间):
- (1,2,3) -> 1(第 1 行和第 2 行已完成)或 -> 2(第 3 行已完成)
- (2,9,2) -> 1(第 1 行和第 2 行已完成)或 -> 3(第 4 行已完成)
- (3,1,3) -> 2(仅满足第 3 行)
- (3,8,2) -> 3(仅满足第 4 行)
重新开始我有一些问题:
- 我可以更改表结构(或逻辑)中的某些内容以优化它吗?
- 如何处理不依赖于信号的状态而不为该状态添加具有 min=-infinity 和 max=infinity 的行?
- 由于状态和信号的数量是动态的——如何高效地进行相应的查询?可以在 SQL 中完成(结果的动态计数的)交集吗?
感谢您的任何想法和帮助。