Files
netwatch/init.sql
2026-02-11 15:46:50 +01:00

187 lines
4.8 KiB
SQL

CREATE TABLE locations (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
comment TEXT
) ENGINE=InnoDB;
CREATE TABLE buildings (
id INT AUTO_INCREMENT PRIMARY KEY,
location_id INT NOT NULL,
name VARCHAR(255) NOT NULL,
comment TEXT,
FOREIGN KEY (location_id) REFERENCES locations(id)
ON DELETE CASCADE
) ENGINE=InnoDB;
CREATE TABLE floors (
id INT AUTO_INCREMENT PRIMARY KEY,
building_id INT NOT NULL,
name VARCHAR(255) NOT NULL,
level INT,
svg_path VARCHAR(255),
comment TEXT,
FOREIGN KEY (building_id) REFERENCES buildings(id)
ON DELETE CASCADE
) ENGINE=InnoDB;
CREATE TABLE rooms (
id INT AUTO_INCREMENT PRIMARY KEY,
floor_id INT NOT NULL,
name VARCHAR(255) NOT NULL,
number VARCHAR(50),
x INT,
y INT,
width INT,
height INT,
comment TEXT,
FOREIGN KEY (floor_id) REFERENCES floors(id)
ON DELETE CASCADE
) ENGINE=InnoDB;
CREATE TABLE network_outlets (
id INT AUTO_INCREMENT PRIMARY KEY,
room_id INT NOT NULL,
name VARCHAR(255) NOT NULL,
x INT,
y INT,
comment TEXT,
FOREIGN KEY (room_id) REFERENCES rooms(id)
ON DELETE CASCADE
) ENGINE=InnoDB;
CREATE TABLE network_outlet_ports (
id INT AUTO_INCREMENT PRIMARY KEY,
outlet_id INT NOT NULL,
name VARCHAR(50) NOT NULL,
port_type_id INT,
FOREIGN KEY (outlet_id) REFERENCES network_outlets(id)
ON DELETE CASCADE
) ENGINE=InnoDB;
CREATE TABLE racks (
id INT AUTO_INCREMENT PRIMARY KEY,
floor_id INT NOT NULL,
name VARCHAR(255) NOT NULL,
height_he INT NOT NULL,
comment TEXT,
FOREIGN KEY (floor_id) REFERENCES floors(id)
ON DELETE CASCADE
) ENGINE=InnoDB;
CREATE TABLE device_types (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
category ENUM('switch','server','patchpanel','other') NOT NULL,
image_path VARCHAR(255),
image_type ENUM('svg','bitmap') NOT NULL,
comment TEXT
) ENGINE=InnoDB;
CREATE TABLE device_type_ports (
id INT AUTO_INCREMENT PRIMARY KEY,
device_type_id INT NOT NULL,
name VARCHAR(50) NOT NULL,
port_type_id INT,
x INT NOT NULL,
y INT NOT NULL,
metadata JSON,
FOREIGN KEY (device_type_id) REFERENCES device_types(id)
ON DELETE CASCADE
) ENGINE=InnoDB;
CREATE TABLE devices (
id INT AUTO_INCREMENT PRIMARY KEY,
device_type_id INT NOT NULL,
rack_id INT,
name VARCHAR(255) NOT NULL,
rack_position_he INT,
rack_height_he INT,
serial_number VARCHAR(255),
comment TEXT,
web_config_url VARCHAR(255),
FOREIGN KEY (device_type_id) REFERENCES device_types(id),
FOREIGN KEY (rack_id) REFERENCES racks(id)
ON DELETE SET NULL
) ENGINE=InnoDB;
CREATE TABLE device_ports (
id INT AUTO_INCREMENT PRIMARY KEY,
device_id INT NOT NULL,
name VARCHAR(50) NOT NULL,
port_type_id INT,
status ENUM('active','disabled') DEFAULT 'active',
mode VARCHAR(50),
vlan_config JSON,
FOREIGN KEY (device_id) REFERENCES devices(id)
ON DELETE CASCADE
) ENGINE=InnoDB;
CREATE TABLE port_types (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
medium ENUM('copper','fiber','coax','other') NOT NULL,
comment TEXT
) ENGINE=InnoDB;
CREATE TABLE connection_types (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
medium ENUM('copper','fiber','coax','other') NOT NULL,
duplex ENUM('half','full','custom') DEFAULT 'custom',
max_speed VARCHAR(50),
color VARCHAR(20),
line_style ENUM('solid','dashed','dotted') DEFAULT 'solid',
comment TEXT
) ENGINE=InnoDB;
CREATE TABLE modules (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
module_type VARCHAR(100),
comment TEXT
) ENGINE=InnoDB;
CREATE TABLE module_ports (
id INT AUTO_INCREMENT PRIMARY KEY,
module_id INT NOT NULL,
name VARCHAR(50) NOT NULL,
port_type_id INT,
FOREIGN KEY (module_id) REFERENCES modules(id)
ON DELETE CASCADE
) ENGINE=InnoDB;
CREATE TABLE device_port_modules (
id INT AUTO_INCREMENT PRIMARY KEY,
device_port_id INT NOT NULL,
module_id INT NOT NULL,
FOREIGN KEY (device_port_id) REFERENCES device_ports(id)
ON DELETE CASCADE,
FOREIGN KEY (module_id) REFERENCES modules(id)
ON DELETE CASCADE
) ENGINE=InnoDB;
CREATE TABLE vlans (
id INT AUTO_INCREMENT PRIMARY KEY,
vlan_id INT NOT NULL,
name VARCHAR(255),
comment TEXT
) ENGINE=InnoDB;
CREATE TABLE connections (
id INT AUTO_INCREMENT PRIMARY KEY,
connection_type_id INT NOT NULL,
port_a_type ENUM('device','module','outlet') NOT NULL,
port_a_id INT NOT NULL,
port_b_type ENUM('device','module','outlet') NOT NULL,
port_b_id INT NOT NULL,
vlan_config JSON,
mode VARCHAR(50),
comment TEXT,
FOREIGN KEY (connection_type_id) REFERENCES connection_types(id)
) ENGINE=InnoDB;