Как грамотно спроектировать модели и связи в проекте ?


#1

Всем привет! Заранее извиняюсь, если пишу не в тот раздел.

Работаю в небольшом ISP и пишу для своих рабочих целей справочник/БД клиентов и прошу совета, как грамотнее спроектировать модели.

Имеем: клиент(модель Customer), подключается к свободному порту устройства(модель Device), который в свою очередь имеет множество портов. Клиенту присваивается vlan_id из свободных(модель VLAN), к VLAN в свою очередь привязывается IP-адрес из свободных(модель IP или Address) и порт устройства. При отключении клиент отвязывается от vlan_id и порта.
Т.к. список VLAN для клиентов статичен, что первично а, а что вторично в вопросе привязки IP к VLAN ? Блок IP-адресов безусловно ограничен, но статичным назвать нельзя, т.к. ip-адреса кочуют от клиента к клиента(добавляются, удаляются)
Нужна ли модель Port(s) ? Какие модели еще нужны или не нужны ?

На данный момент так: Vlan(has_many: customers ); Customer(belongs_to: vlan, belongs_to: device); Device(has_many: customer).

Извините за сумбур, но в проектировании архитектуры не силён, потому и сформулировать не очень получается.
Как бы правильно спроектировали мастера ? :smile: