A.L.E.C pisze:
Adresy urządzeń (w tym i komputerów) przenosimy do tabeli 'ipaddresses' ('nodes' też by mogło być, bo to w końcu coś więcej niż sam adres):
CREATE TABLE nodes ( id int(11) NOT NULL auto_increment, deviceid int(11) NOT NULL DEFAULT '0', -- ID urządzenia -- teraz pola które były w nodes mac varchar(20) NOT NULL DEFAULT '', ipaddr int(16) unsigned NOT NULL DEFAULT '0', ipaddr_pub int(16) unsigned NOT NULL DEFAULT '0', passwd varchar(32) NOT NULL DEFAULT '', creationdate int(11) NOT NULL DEFAULT '0', moddate int(11) NOT NULL DEFAULT '0', creatorid int(11) NOT NULL DEFAULT '0', modid int(11) NOT NULL DEFAULT '0', -- i najważniejsze pole 'nodetypeid' int(11) DEFAULT NULL );
Jak wspomniał już ktoś wcześniej można byłoby zrobić obsługę IPv6, czyli przechowywać adresy IP jako INT (w postgresie to będzie NUMERIC(64)). Adresy IPv6 byłyby przechowywane w sposób klasyczny, a adresy IPv4 można zapisywać w formacie ipv4 compat (http://www.ietf.org/rfc/rfc1933.txt).
Do tego można dodać pole określającą długość bitową maski sieci i mamy z głowy problem przypisywania zakresów IP do urządzeń.
Przeniósłbym też pole 'mac' do tabeli 'devices'.
Czyli już możemy do każdego urządzenia dopisać kilka adresów, teraz ważne jest żeby zdefiniować do czego dany adres służy i jak ma być traktowany przez backend. Tzn. czy ma być brany pod uwagę przy generowaniu DHCP, firewalla, tc
CREATE TABLE nodetypes ( id int(11) NOT NULL auto_increment, name varchar(64) NOT NULL DEFAULT '', description text NOT NULL DEFAULT '', chkmac tinyint(1) DEFAULT NULL, halfduplex tinyint(1) DEFAULT NULL, nas tinyint(1) DEFAULT NULL, dhcp tinyint(1) DEFAULT NULL, -- i tu dodać inne potrzebne flagi, jak np. firewall, tc, ident, ewx, ether, których listę należy zdefiniować dokładniej. Można by także zastąpić je wszystkie jednym polem 'flags', ale wtedy backend będzie miał trudniej (wolniej) parsować jego zawartość. Innym rozwiązaniem byłoby zastosowanie sumy binarnej, tak jak jest zrobione z typami kont. );
Tutaj sugerowałbym użycie pola 'flags' i sum binarnych.