Files
qihuaiflow/migrations/013_knowledge_graph_tables.sql
T
qyyfw 78ff261b5a 初始提交: Qihu-AIFlow v2.0.1 完整项目
- 前端 React+TypeScript (源码+构建产物)
- 后端 Python FastAPI
- 数据库迁移 001-015
- Docker部署配置
- 微信ClawBot API频道绑定
- 项目文档 README.md
2026-07-02 14:40:46 +08:00

72 lines
3.7 KiB
SQL

-- Qihu-AIFlow 013: 知识图谱AI驱动表
USE aiflow;
-- ============================================================
-- 存储过程:幂等创建知识图谱相关表
-- ============================================================
DROP PROCEDURE IF EXISTS create_kg_tables_013;
DELIMITER $$
CREATE PROCEDURE create_kg_tables_013()
BEGIN
-- knowledge_graph_nodes: 图谱实体节点
IF NOT EXISTS (SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'aiflow' AND TABLE_NAME = 'knowledge_graph_nodes') THEN
CREATE TABLE knowledge_graph_nodes (
id VARCHAR(36) NOT NULL,
knowledge_base_id VARCHAR(36) NOT NULL,
source_doc_id VARCHAR(36) DEFAULT NULL,
label VARCHAR(500) NOT NULL,
type VARCHAR(50) NOT NULL COMMENT 'entity/attribute/concept/event',
properties JSON DEFAULT NULL,
description TEXT DEFAULT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
INDEX idx_kgn_kb (knowledge_base_id),
INDEX idx_kgn_doc (source_doc_id),
CONSTRAINT fk_kgn_kb FOREIGN KEY (knowledge_base_id) REFERENCES knowledge_bases(id) ON DELETE CASCADE,
CONSTRAINT fk_kgn_doc FOREIGN KEY (source_doc_id) REFERENCES knowledge_documents(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
END IF;
-- knowledge_graph_edges: 图谱关系边
IF NOT EXISTS (SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'aiflow' AND TABLE_NAME = 'knowledge_graph_edges') THEN
CREATE TABLE knowledge_graph_edges (
id VARCHAR(36) NOT NULL,
knowledge_base_id VARCHAR(36) NOT NULL,
source_node_id VARCHAR(36) NOT NULL,
target_node_id VARCHAR(36) NOT NULL,
relation VARCHAR(200) NOT NULL,
weight FLOAT DEFAULT 1.0,
description TEXT DEFAULT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
INDEX idx_kge_kb (knowledge_base_id),
INDEX idx_kge_source (source_node_id),
INDEX idx_kge_target (target_node_id),
CONSTRAINT fk_kge_kb FOREIGN KEY (knowledge_base_id) REFERENCES knowledge_bases(id) ON DELETE CASCADE,
CONSTRAINT fk_kge_source FOREIGN KEY (source_node_id) REFERENCES knowledge_graph_nodes(id) ON DELETE CASCADE,
CONSTRAINT fk_kge_target FOREIGN KEY (target_node_id) REFERENCES knowledge_graph_nodes(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
END IF;
-- knowledge_graph_build_logs: 构建记录用于增量更新
IF NOT EXISTS (SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'aiflow' AND TABLE_NAME = 'knowledge_graph_build_logs') THEN
CREATE TABLE knowledge_graph_build_logs (
id VARCHAR(36) NOT NULL,
knowledge_base_id VARCHAR(36) NOT NULL,
document_id VARCHAR(36) NOT NULL,
node_count INT DEFAULT 0,
edge_count INT DEFAULT 0,
status VARCHAR(20) DEFAULT 'completed',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
INDEX idx_kgbl_kb (knowledge_base_id),
INDEX idx_kgbl_doc (document_id),
CONSTRAINT fk_kgbl_kb FOREIGN KEY (knowledge_base_id) REFERENCES knowledge_bases(id) ON DELETE CASCADE,
CONSTRAINT fk_kgbl_doc FOREIGN KEY (document_id) REFERENCES knowledge_documents(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
END IF;
END$$
DELIMITER ;
CALL create_kg_tables_013();
DROP PROCEDURE IF EXISTS create_kg_tables_013;