188 lines
4.9 KiB
SQL
188 lines
4.9 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,
|
|
shape_definition JSON
|
|
) 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;
|
|
|