中小企業MES系統數據庫設計


版本:V1.0
日期:2025年5月2日


一、數據庫架構概覽

1.1 數據庫選型

數據類型數據庫類型技術選型用途
時序數據(傳感器讀數)時序數據庫TimescaleDB存儲設備實時監控數據
結構化業務數據關系型數據庫PostgreSQL工單、質量、設備等核心業務數據
非結構化數據對象存儲MinIO質檢圖片、SOP文檔等
實時緩存內存數據庫Redis看板數據、會話狀態

二、核心表結構設計

2.1 生產執行模塊

工單表 (work_order)
字段名類型約束描述
order_idVARCHAR(36)PRIMARY KEY工單唯一標識
product_codeVARCHAR(20)NOT NULL產品型號
plan_qtyINTEGERCHECK>0計劃數量
priorityENUM(‘H’,‘M’,‘L’)DEFAULT ‘M’優先級
statusENUM(‘Created’,‘Scheduled’,‘Running’,‘Completed’,‘Closed’)NOT NULL工單狀態
start_timeTIMESTAMPTZ實際開始時間
end_timeTIMESTAMPTZ實際結束時間
工序表 (work_step)
字段名類型約束描述
step_idSERIALPRIMARY KEY工序自增ID
order_idVARCHAR(36)FOREIGN KEY REFERENCES work_order(order_id)關聯工單
seq_numINTEGERCHECK>0工序順序號
equipment_idVARCHAR(20)綁定設備編號
target_cycleFLOAT標準節拍(秒/件)

2.2 質量管理模塊

質檢記錄表 (quality_inspection)
CREATE TABLE quality_inspection (inspection_id UUID PRIMARY KEY,order_id VARCHAR(36) REFERENCES work_order(order_id),step_id INTEGER REFERENCES work_step(step_id),defect_code VARCHAR(10) NOT NULL,  -- 缺陷代碼severity_level SMALLINT CHECK (severity_level BETWEEN 1 AND 5),inspector VARCHAR(32),created_at TIMESTAMPTZ DEFAULT NOW(),CHECK ((defect_code = 'OK' AND severity_level IS NULL) OR (defect_code <> 'OK' AND severity_level IS NOT NULL))
);
SPC數據表 (spc_data)
字段名類型約束描述
sample_idUUIDPRIMARY KEY采樣數據ID
parameter_name VARCHAR(50)NOT NULL監控參數名(如"直徑")
measurementFLOATNOT NULL測量值
uslFLOAT規格上限
lslFLOAT規格下限
collection_time TIMESTAMPTZNOT NULL采集時間

2.3 設備管理模塊

設備表 (equipment)
CREATE TABLE equipment (equipment_id VARCHAR(20) PRIMARY KEY,name VARCHAR(50) NOT NULL,type VARCHAR(20) CHECK (type IN ('CNC','AGV','Sensor')),protocol_type VARCHAR(20) NOT NULL,  -- 協議類型(OPCUA/Modbus等)ip_address INET,last_maintenance_date DATE,oee_target FLOAT CHECK (oee_target BETWEEN 0 AND 1)
);
維護記錄表 (maintenance_log)
字段名類型約束描述
log_idSERIALPRIMARY KEY維護記錄ID
equipment_idVARCHAR(20)REFERENCES equipment(equipment_id)設備ID
maintenance_type ENUM(‘Preventive’,‘Corrective’)NOT NULL維護類型
downtime_duration INTERVALNOT NULL停機時長

2.4 時序數據表(TimescaleDB超表)

傳感器數據表 (sensor_data)
CREATE TABLE sensor_data (time TIMESTAMPTZ NOT NULL,device_id VARCHAR(20) REFERENCES equipment(equipment_id),sensor_type VARCHAR(20),value DOUBLE PRECISION,status_code SMALLINT
);-- 轉換為TimescaleDB超表
SELECT create_hypertable('sensor_data','time',chunk_time_interval => INTERVAL '1 day',partitioning_column => 'device_id',number_partitions => 16
);-- 創建壓縮策略
ALTER TABLE sensor_data SET (timescaledb.compress,timescaledb.compress_orderby = 'time DESC',timescaledb.compress_segmentby = 'device_id'
);

三、索引設計

3.1 關系型數據庫索引

表名索引字段類型用途
work_order(status, start_time)復合索引快速查詢進行中工單
quality_inspection(order_id, defect_code)復合索引缺陷統計分析
equipment(type, protocol_type)GIN索引設備類型快速檢索

3.2 時序數據庫索引

-- 時間范圍查詢優化
CREATE INDEX idx_sensor_time ON sensor_data (time DESC);-- 設備維度查詢優化
CREATE INDEX idx_sensor_device ON sensor_data (device_id, time DESC);

四、數據分區策略

4.1 關系型數據分區

-- 按時間范圍分區(工單表)
CREATE TABLE work_order_2023 PARTITION OF work_orderFOR VALUES FROM ('2025-01-01') TO ('2026-01-01');-- 按設備類型哈希分區(設備表)
CREATE TABLE equipment_cnc PARTITION OF equipmentFOR VALUES WITH (MODULUS 4, REMAINDER 0)WHERE type = 'CNC';

4.2 時序數據壓縮

# TimescaleDB壓縮策略
compression:segment_by: device_idorder_by: time DESCchunk_time_interval: 1dcompression_algorithm: zstd

五、安全設計

5.1 權限模型

-- 角色定義
CREATE ROLE production_manager;
GRANT SELECT, UPDATE ON work_order TO production_manager;-- 行級安全(RLS)
ALTER TABLE quality_inspection ENABLE ROW LEVEL SECURITY;
CREATE POLICY qc_policy ON quality_inspectionUSING (inspector = CURRENT_USER);

5.2 審計日志表

CREATE TABLE audit_log (log_id BIGSERIAL PRIMARY KEY,table_name VARCHAR(50) NOT NULL,operation_type VARCHAR(10) CHECK (operation_type IN ('INSERT','UPDATE','DELETE')),old_record JSONB,new_record JSONB,user_name VARCHAR(50) NOT NULL,operation_time TIMESTAMPTZ DEFAULT NOW()
);

六、性能優化設計

6.1 物化視圖

-- OEE每日匯總
CREATE MATERIALIZED VIEW daily_oee
AS
SELECT equipment_id,time_bucket('1 day', time) AS bucket,AVG(availability) AS avg_availability,AVG(performance) AS avg_performance,AVG(quality) AS avg_quality
FROM oee_calculations
GROUP BY equipment_id, bucket
WITH DATA;-- 每日定時刷新
SELECT add_continuous_aggregate_policy('daily_oee',start_offset => INTERVAL '3 days',end_offset => INTERVAL '1 hour',schedule_interval => INTERVAL '1 day');

6.2 查詢緩存

-- 高頻查詢結果緩存
CREATE TABLE query_cache (cache_key VARCHAR(128) PRIMARY KEY,result JSONB NOT NULL,expires_at TIMESTAMPTZ NOT NULL
);-- 索引加速緩存查詢
CREATE INDEX idx_cache_expiry ON query_cache (expires_at);

七、數據字典

7.1 關鍵枚舉值

表名字段名枚舉值
work_orderstatusCreated/Scheduled/Running/Completed/Closed
equipmenttypeCNC/AGV/Sensor
maintenance_logmaintenance_typePreventive/Corrective

設計驗證要點

  1. 時序數據寫入:測試500設備持續寫入時,TimescaleDB的吞吐量是否≥10萬數據點/秒
  2. 復雜查詢響應:驗證跨工單-工序-質檢的關聯查詢在1億數據量下的執行計劃
  3. 分區切換:模擬年度數據歸檔時,新分區自動創建是否正常

該數據庫設計通過以下創新點支撐系統需求:

  • 混合存儲策略:結合關系型與時序數據庫優勢,平衡事務處理與時間序列分析需求
  • 動態壓縮:TimescaleDB自動壓縮策略降低存儲成本70%+
  • 多級安全:行級安全(RLS)+ 列權限控制實現細粒度數據訪問

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/79184.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/79184.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/79184.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

VUE篇之樹形特殊篇

根節點是level:1, level3及其子節點有關聯&#xff0c;但是和level2和他下面的子節點沒有關聯 思路&#xff1a;采用守護風琴效果&#xff0c;遍歷出level1和level2級節點&#xff0c;后面level3的節點&#xff0c;采用樹形結構進行關聯 <template><div :class"…

洛圣電玩系列部署實錄:一次自己從頭跑通的搭建過程

寫這篇文章不是為了“教大家怎么一步步安裝”&#xff0c;而是想把我自己完整跑通洛圣電玩整個平臺的經歷復盤下來。因為哪怕你找到了所謂的全套源碼資源&#xff0c;如果沒人告訴你這些資源之間是怎么連起來的&#xff0c;你依舊是一臉懵逼。 我拿到的是什么版本&#xff1f; …

騰訊云web服務器配置步驟是什么?web服務器有什么用途?

騰訊云web服務器配置步驟是什么?web服務器有什么用途&#xff1f; Web服務器配置步驟&#xff08;以常見環境為例&#xff09; 1. 安裝Web服務器軟件 Linux系統&#xff08;如Ubuntu&#xff09; Apache: sudo apt update sudo apt install apache2 Nginx: sudo apt install…

第37課 繪制原理圖——放置離頁連接符

什么是離頁連接符&#xff1f; 前邊我們介紹了網絡標簽&#xff08;Net Lable&#xff09;&#xff0c;可以讓兩根導線“隔空相連”&#xff0c;使原理圖更加清爽簡潔。 但是網絡標簽的使用也具有一定的局限性&#xff0c;對于兩張不同Sheet上的導線&#xff0c;網絡標簽就不…

Win下的Kafka安裝配置

一、準備工作&#xff08;可以不做&#xff0c;畢竟最新版kafka也不需要zk&#xff09; 1、Windows下安裝Zookeeper &#xff08;1&#xff09;官網下載Zookeeper 官網下載地址 &#xff08;2&#xff09;解壓Zookeeper安裝包到指定目錄C:\DevelopApp\zookeeper\apache-zoo…

前端Vue3 + 后端Spring Boot,前端取消請求后端處理邏輯分析

在 Vue3 Spring Boot 的技術棧下&#xff0c;前端取消請求后&#xff0c;后端是否繼續執行業務邏輯的答案仍然是 取決于請求處理的階段 和 Spring Boot 的實現方式。以下是結合具體技術的詳細分析&#xff1a; 1. 請求未到達 Spring Boot 場景&#xff1a;前端通過 AbortContr…

【藍橋杯省賽真題58】Scratch畫臺扇 藍橋杯scratch圖形化編程 中小學生藍橋杯省賽真題講解

目錄 scratch畫臺扇 一、題目要求 編程實現 二、案例分析 1、角色分析 2、背景分析 3、前期準備 三、解題思路 四、程序編寫 五、考點分析 六、推薦資料 1、scratch資料 2、python資料 3、C++資料 scratch畫臺扇 第十五屆青少年藍橋杯scratch編程省賽真題解析 …

GPT-4o 圖像生成與八個示例指南

什么是GPT-4o圖像生成&#xff1f; 簡單來說&#xff0c;GPT-4o圖像生成是集成在ChatGPT內部的一項功能。用戶可以直接在對話中&#xff0c;通過文本描述&#xff08;Prompt&#xff09;來創建、編輯和調整圖像。這與之前的圖像生成工具相比&#xff0c;體驗更流暢、交互性更強…

TCP 連接的“三次握手”與“四次揮手”

目錄 什么是“三次握手” “四次揮手”&#xff1f; 三個標記位 三次握手 四次揮手 為什么握手三次&#xff0c;揮手需要四次&#xff1f; 為什么要等2MSL&#xff1f; 什么是“三次握手” “四次揮手”&#xff1f; 三次握手&#xff08;Three-way Handshake&#xf…

力扣刷題 -- 206.反轉鏈表

題目&#xff1a; 方法一&#xff1a;創建新鏈表&#xff0c;遍歷舊鏈表&#xff0c;進行頭插 代碼實現&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/typedef struct ListNode ListNode; struc…

Vue 中的過渡效果與響應式數據:transition、transitiongroup、reactive 和 ref 詳解

在 Vue 開發過程中&#xff0c;為應用添加過渡效果和處理響應式數據是提升用戶體驗和實現動態交互的關鍵。 一、transition&#xff1a;元素的單元素過渡效果 transition是 Vue 提供的內置組件&#xff0c;專門用于為單個元素或組件添加過渡動畫。它會在元素插入、更新或移除…

文章七《深度學習調優與超參數優化》

&#x1f680; 文章7&#xff1a;深度學習調優與超參數優化——你的AI模型需要一場"整容手術" 一、模型調優核心策略&#xff1a;像調整游戲裝備一樣優化模型 1. 學習率調整&#xff1a;掌控訓練的"油門踏板" 比喻&#xff1a;把模型訓練想象成賽車游戲&…

Python裝飾器執行時機詳解:模塊加載時的魔法

裝飾器執行的基本原理 Python裝飾器在程序運行過程中遵循獨特的執行邏輯&#xff0c;其核心特性體現在模塊加載階段的即時執行。通過示例7-2的registration.py 模塊&#xff0c;我們可以清晰觀察到裝飾器與函數執行的時序差異。 registry []def register(func):print(runnin…

基于隨機森林的糖尿病預測模型研究應用(python)

基于隨機森林的糖尿病預測模型研究應用 1、導入糖尿病數據集 In [14]: import pandas as pd import seaborn as sns import numpy as np import matplotlib.pyplot as plt datapd.read_csv(./糖尿病數據集.csv,encoding"gbk") data.head()#查看前五行數據Out[14]:…

【Web應用服務器_Tomcat】二、Tomcat 核心配置與集群搭建

在企業級 Java Web 應用的部署場景中&#xff0c;Tomcat 作為主流的 Servlet 容器和 Web 服務器&#xff0c;其核心配置的優化以及集群搭建對于保障應用的高性能、高可用性至關重要。 一、Tomcat 核心配置優化? 1.1 server.xml 配置文件解析? Tomcat 的核心配置文件server…

Linux(文件管理)

文件命名規則 除了字符“/”之外&#xff0c;所以的字符都可以使用&#xff0c;但要注意&#xff0c;在目錄名或文件名中&#xff0c;不建議使用某些特殊字符&#xff0c;如&#xff1a;<、>、?、*等 如果一個文件名中包含了特殊字符&#xff0c;例如空格&#xff0c;那…

Windows服務器部署全攻略:Flask+Vue+MySQL跨平臺項目實戰(pymysql版)

當你的后端(Flask+pymysql,Windows開發)與前端(Vue,Mac開發)需要統一部署到Windows服務器時,通過「IIS反向代理+原生組件適配」方案可實現穩定交互。以下是針對Windows環境的專屬部署指南,解決路徑適配、服務啟動等核心問題。 一、Windows服務器環境準備(必做!) 1…

wpf 輸入框 在輸入時去除水印

wpf ScrollViewer 在輸入數據時去除水印 在WPF&#xff08;Windows Presentation Foundation&#xff09;中&#xff0c;ScrollViewer控件通常用于顯示滾動內容。如果你想在ScrollViewer中使用數據輸入&#xff08;例如文本輸入&#xff09;&#xff0c;并且希望在輸入時去除水…

動態思維——AI與思維模型【91】

一、定義 動態思維思維模型是一種強調在思考問題和分析情況時&#xff0c;充分考慮到事物的變化性、發展性和相互關聯性&#xff0c;不局限于靜態的、孤立的視角&#xff0c;而是以發展變化的眼光看待事物&#xff0c;能夠根據不同時間、環境和條件的變化&#xff0c;靈活調整…

多模態大語言模型arxiv論文略讀(五十五)

MoMA: Multimodal LLM Adapter for Fast Personalized Image Generation ?? 論文標題&#xff1a;MoMA: Multimodal LLM Adapter for Fast Personalized Image Generation ?? 論文作者&#xff1a;Kunpeng Song, Yizhe Zhu, Bingchen Liu, Qing Yan, Ahmed Elgammal, Xiao…