Схема sql: изменяемый слот и таблица ассоциаций - PullRequest
0 голосов
/ 26 июня 2018

Я разрабатываю схему для еще не определенной базы данных 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подход с тремя таблицами, я склонен пойти по этому пути и использовать код более высокого уровня для обеспечения соблюдения правила «инструмент может подключаться только к одной сети».

Мои рассуждения проходят проверку?

1 Ответ

0 голосов
/ 27 июня 2018

Объявите device_id как ключ для таблицы соединений.Это ограничит каждое устройство не более чем одной сетью.

...