首先介绍一下我遇到问题如图:
我接收到场景模块其实想法很简单,就是一个场景,一个场景对条件一对多,一个场景对动作一对多,然而我想法太简单了,没有考虑到不同场景有多个设备,每个设备具有不同条件,比如空调在关机情况下其实可以检测出房间内的温度,根据温度决定是否开空调,有要开多少度数?
声光报警器: 需要达到闪光+85dB才能去执行相应的报警。
现在仔细想想思路很重要:
首先肯定的是:
每个场景表scene
设备条件和规则表 rule
具体执行表 action
上面表示基本表还不全,现在说具体思路首先我做一个树状图:
为什么是这样,我们肯定的是场景是唯一的肯定和规则和执行方案应该是一对多,
但是一个规则可以有多个执行方案:比如家里我设定一个规则,一旦家里温度达到30度,就开启空调和打开电风扇,窗帘拉上,这里很明白的表达了,需要多个设备执行,所以数据库不可能这么多设备放在一行,多以就需要多个执行方案
但是一个执行设备,也有可能被多个地方执行,比如: 一个人在家里感应器感受到阳光太强,强光规则被触发,也会拉上窗帘。
所以规则和执行设备肯定是多对多的关系。这里要注意!
当然还要表示出场景和执行方案和规则是多对多,最好的方式就是多创建一个关联规则组表,作为中介!