我有越来越多的机器,每个连接到不同类型的设备,可以做不同的事情,我试图建立某种排队系统。我到目前为止的第一个想法是使用存储可用机器的数据库表machines
,从中我可以根据指定的功能选择所需的机器。所以表将是这个样子:经常需要交集时存储多对多SQL关系的正确方法?
machineId machineName status equipment1 equipment2 network1 network2 1 Test FREE 0 1 1 0
当代码必须的参数列表,并执行代码,寻找他们。例如执行SELECT * FROM Machines WHERE equipment2=1 AND network1=1 AND network2=0 AND status LIKE 'FREE'
。
这个工作在理论,但有两个问题我想避免:
- 每个字段需要在代码中定义,添加一个新列,以及时
- 某些字段是互斥。 IE我不希望连接到网络2的计算机在某些情况下运行某些测试,并且某些设备会阻止计算机执行一些基本功能(即使那些不需要的和设备),所以我必须添加该代码具体排除它。例如。以上为
AND network2=0
。
我的下一个想法是使用连接表。所以表将是:
Machines: machineId machineName status
Equipments: equipemntId equipmentName exclusive
然后,我将有一个结表
MachinesEquipments: machineId equipmentId
不过,如果我想其中有equipment2
和访问权限的计算机到network1
,但无权访问network2
(因为它被标记为独占),并且也是FREE
,它对我来说太复杂了,知道该怎么做,或者即使它是正确的方式...
这是多对多的正确方法吗?我错过了哪些SQL文件?
“网络”在您的数据模型中存储在哪里? –
@Gordon Linoff就我而言,这是一种设备 – Nescio