-- 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;