Я разрабатываю схему для еще не определенной базы данных SQL.Примите во внимание следующее:
- Сеть может содержать много устройств
- Устройство может быть подключено к нулю или к одной сети
Я вижу две вероятные конструкции иМне интересно узнать о плюсах и минусах каждого из них:
Подход с тремя таблицами:
network
network_id
device
device_id
connection
network_id
device_id
Преимущество подхода с тремя таблицами состоит в том, что к соединению легко добавлять информацию о состоянии.(например, время соединения, номер порта и т. д.).Недостатком является то, что он предполагает, что одно устройство может подключаться к нескольким сетям (связь HABTM), даже если устройство может подключаться только к одной сети одновременно.
Подход с двумя таблицами:
network
network_id
device
device_id
network_id (may be null if not connected)
Преимущество подхода с двумя таблицами состоит в том, что он обеспечивает семантику сети "подключайся к нулю или одному".Недостатком является то, что само устройство становится изменчивым, даже если (по логике) устройство не изменяется по сути путем простого присоединения к сети.
...
Несмотря на неявную природу HABTMподход с тремя таблицами, я склонен пойти по этому пути и использовать код более высокого уровня для обеспечения соблюдения правила «инструмент может подключаться только к одной сети».
Мои рассуждения проходят проверку?