基于 OpenTCS 工厂模型的数据,我们可以设计一个关系型数据库表结构来存储模型数据,包括点、路径、位置、车辆等元素。以下是一个基于
OpenTCS 模型的数据库表设计建议,以便高效地管理这些数据。
1. 表结构概览
OpenTCS 的工厂模型包括以下主要部分:
Points (点)
Paths (路径)
Locations (位置)
Vehicles (车辆)
Location Types (位置类型)
Blocks (区块)
Visual Layout (可视化布局)
我们将基于这些部分设计对应的数据库表,每个表都将存储相关的信息及其关联关系。
2. 数据库表设计
1. Points 表
用于存储工厂模型中的点(位置)。
2. Paths 表
用于存储点与点之间的路径信息。
3. Locations 表
存储位置类型,如工作站、存储站等。
4. Vehicles 表
用于存储车辆(AGV)信息。
5. Blocks 表
用于存储系统中定义的区块(Block),通常用于管理特定路径的使用限制。
6. LocationTypes 表
存储位置类型及其允许的操作。
7. Paths_Links 表(中间表)
用于表示位置与路径之间的链接关系,因为每个位置可以与多个点相连。
postgresql 建表语句
CREATE TABLE Points (point_id SERIAL PRIMARY KEY,name VARCHAR(100) NOT NULL,x FLOAT NOT NULL,y FLOAT NOT NULL,z FLOAT NOT NULL,vehicle_orientation_angle FLOAT,type VARCHAR(50),layout_position_x FLOAT,layout_position_y FLOAT,label_offset_x FLOAT,label_offset_y FLOAT,layer_id INT
);CREATE TABLE Paths (path_id SERIAL PRIMARY KEY,name VARCHAR(100) NOT NULL,src_point_id INT REFERENCES Points(point_id),dest_point_id INT REFERENCES Points(point_id),max_velocity FLOAT NOT NULL,max_reverse_velocity FLOAT NOT NULL,locked BOOLEAN DEFAULT FALSE,connection_type VARCHAR(50),layer_id INT
);CREATE TABLE Locations (location_id SERIAL PRIMARY KEY,name VARCHAR(100) NOT NULL,type_name VARCHAR(100),position_x FLOAT NOT NULL,position_y FLOAT NOT NULL,position_z FLOAT NOT NULL,locked BOOLEAN DEFAULT FALSE,layout_position_x FLOAT,layout_position_y FLOAT,label_offset_x FLOAT,label_offset_y FLOAT,layer_id INT
);CREATE TABLE Vehicles (vehicle_id SERIAL PRIMARY KEY,name VARCHAR(100) NOT NULL,length FLOAT NOT NULL,energy_level_critical FLOAT NOT NULL,energy_level_good FLOAT NOT NULL,energy_level_fully_recharged FLOAT NOT NULL,energy_level_sufficiently_recharged FLOAT NOT NULL,max_velocity FLOAT NOT NULL,max_reverse_velocity FLOAT NOT NULL,route_color VARCHAR(20)
);CREATE TABLE Blocks (block_id SERIAL PRIMARY KEY,name VARCHAR(100) NOT NULL,type VARCHAR(50),color VARCHAR(20)
);CREATE TABLE LocationTypes (location_type_id SERIAL PRIMARY KEY,name VARCHAR(100) NOT NULL,allowed_operations VARCHAR(255),representation VARCHAR(50)
);CREATE TABLE Paths_Links (location_id INT REFERENCES Locations(location_id),point_id INT REFERENCES Points(point_id),PRIMARY KEY (location_id, point_id)
);