Вот пример макета:
A
B C
D
G F
E
H
K I
J
Каждая буква представляет физическое устройство. В этом примере вы можете видеть, что A
находится рядом с B
и C
. B
находится рядом с A
, D
и, возможно, C
.
Я думал о том, чтобы поместить каждое устройство в базу данных и объединить все возможные отношения. Например:
device | siblings
-------+---------
A | B,C
-------+---------
B | A,D,C
-------+---------
D | B,G,E
Таким образом, когда мне нужно найти устройства поблизости от D
, я могу сделать:
SELECT siblings FROM devices WHERE device = 'D';
siblings = siblings.split(',')
for sibling in siblings:
# do something with each sibling device
Мне было интересно, есть ли лучший способ. Учитывая, что может быть большое количество устройств, я чувствую, что этот метод может запутаться и, вероятно, глючить (человеческая ошибка отслеживания списка родных элементов, разделенных командами).
Есть предложения?