资讯动态

基于知识图谱的电影问答系统设计与实现(Python + Neo4j)毕设源码

发布时间:2026/9/10 23:15:13 来源:尧图企业网站定制
博主介绍✌ 专注于Java,python,✌关注✌私信我✌具体的问题我会尽力帮助你。一、研究目的本研究旨在通过构建基于知识图谱的电影问答系统解决传统文本检索方法在电影信息检索中的局限性并提升用户对电影内容的交互体验。为实现此目标本文首先对现有电影知识库与问答系统进行综述指出其在实体识别、关系抽取以及语义匹配方面存在的不足。基于此研究团队提出利用Python语言结合Neo4j图数据库构建动态知识图谱的技术框架该框架能够高效存储并查询电影实体、演员、导演、类型等多维度信息。通过对电影剧情、角色关系以及用户评价等文本数据进行结构化抽取与语义标注系统实现了从自然语言问题到知识图谱查询的闭环转换从而大幅提升答案的准确性与可解释性。除此之外本研究还针对问答过程中的多轮对话进行了优化采用上下文记忆机制与动态查询重写技术以实现更自然、更连贯的交互体验。最终通过实验验证与用户调研系统在检索速度、答案覆盖率以及用户满意度等指标上均优于传统检索模型为电影信息服务提供了可复制、可扩展的技术路径。二、研究意义本研究所提出的基于知识图谱的电影问答系统具有重要的学术与实践意义。首先在知识表示层面传统文本检索方法往往将电影信息视为非结构化文本缺乏对实体与关系的精准建模而本系统通过将导演、演员、剧情节点等多维度信息映射为图谱中的节点与边显著提升了数据的可查询性与语义连贯性从而为自然语言问题提供了更稳健的语义匹配基础。其次在检索效率层面Neo4j图数据库的索引机制与路径查询优化使得系统能够在毫秒级完成复杂多跳查询相较于基于倒排索引的传统搜索引擎显著降低了响应时间与计算资源消耗。再次在用户交互体验层面本系统通过多轮对话管理与上下文记忆技术实现了更自然、更连贯的问答流程满足了用户在电影信息探索中的即时性与深度需求。最后从技术创新角度看本研究将Python生态下的自然语言处理工具与图数据库技术深度融合为后续跨领域知识图谱构建提供了可复制、可扩展的技术范式。从更广阔的视角审视本研究对人工智能与大数据领域具有深远影响。首先基于知识图谱的问答机制为复杂实体关系推理提供了实验平台可进一步推广至医学、法律、金融等专业知识检索场景。其次系统所采用的多模态知识融合方法为电影推荐算法提供了更丰富的语义特征能够在精准推荐与冷启动问题上实现突破从而提升内容平台的用户黏性与商业价值。再次随着图数据库技术的成熟本研究所构建的知识图谱架构具有良好的可维护性与可扩展性为行业级知识管理系统奠定了技术基础。综上所述本研究不仅在理论层面丰富了知识图谱在问答系统中的应用范式也在实践层面推动了电影信息服务的智能化升级具有显著的学术价值与社会经济效益。三、国内外研究现状近年来随着大数据与人工智能技术的快速发展基于知识图谱的问答系统已成为学术界与工业界关注的热点之一。国内外研究者普遍认为传统文本检索方法在处理电影信息时难以充分挖掘实体之间的语义关联从而导致检索结果缺乏深度与准确性。为此学术界围绕知识图谱构建、实体识别、关系抽取、问句理解与答案生成等关键技术展开了广泛研究。国外研究以维基数据Wikidata、DBpedia、YAGO 等公共知识库为基础结合深度学习模型如BERT、RoBERTa实现了多领域问答系统的原型并在SQuAD、TriviaQA 等公开数据集上取得了显著性能提升。与此同时Google 的Bard、OpenAI 的ChatGPT等大规模语言模型在自然语言理解与生成方面表现出色但其对结构化知识的利用仍有限导致在电影领域的实体推理与多跳查询中存在瓶颈。国内研究则以豆瓣、百度百科、TMDb 等中文电影资源为主要数据源构建了多维度电影知识图谱并通过HanLP、LTP等中文自然语言处理工具实现了高质量的实体链接与关系抽取。近年一些高校与企业联合开展的“电影知识图谱与问答系统”项目采用Neo4j、JanusGraph 等图数据库技术实现了对电影角色、剧情节点、导演作品等多层次信息的高效存储与查询。该类系统在对电影相关问题进行多跳推理时能够显著提升答案覆盖率与准确率并通过引入图神经网络GNN进一步优化实体表示从而在复杂问句下保持较高的回答质量。国内研究者还探索了基于Transformer的问句编码与知识检索匹配机制利用多模态信息如电影海报、剧照增强语义理解并通过强化学习实现答案生成的自适应优化。总体来看国外研究在模型规模与通用性方面具有优势而国内研究则在中文语义处理与本土化知识图谱构建方面取得了突破。两者相互补充为构建高效、准确的电影问答系统奠定了坚实基础。四、预期达到目标及解决的关键问题本研究的预期目标在于构建一套完整、可扩展的基于知识图谱的电影问答系统系统应能够实现从海量电影文本与元数据中自动抽取实体与关系构建高质量的知识图谱并通过Python与Neo4j实现高效查询与答案生成同时系统需支持多轮对话交互能够在用户提出模糊或复杂问题时通过上下文记忆与动态查询重写机制提供准确、可解释的答案此外系统应在检索速度、答案覆盖率以及用户满意度等指标上优于传统文本检索方法为电影信息服务提供可复制、可推广的技术方案。为实现上述目标研究将重点关注知识图谱构建中的实体识别与关系抽取精度、知识库的更新与维护机制、Neo4j查询优化策略以及多轮对话管理模型的设计与训练。关键问题包括如何在中文语境下高效完成实体消歧和关系抽取尤其是处理同名演员或角色的情况如何在图数据库中实现低延迟的多跳查询满足实时问答需求如何构建鲁棒的对话状态跟踪与查询重写模块以应对用户提问中的歧义与缺失信息以及如何在系统规模扩大后保持可维护性和性能稳定性。通过解决上述问题本研究将为电影领域知识图谱问答技术提供理论与实践上的重要突破。五、研究内容本研究围绕基于知识图谱的电影问答系统展开整体研究内容可划分为数据采集与预处理、知识图谱构建与存储、问句理解与查询匹配、答案生成与多轮对话管理以及系统评估与优化四大模块。首先在数据采集与预处理阶段将从豆瓣电影、TMDb、IMDb 等公开平台获取电影基本信息、剧情简介、演员表、导演信息及用户评论等文本数据并通过爬虫框架进行结构化抓取随后利用分词工具HanLP进行中文分词结合命名实体识别模型对文本中的人物、机构、地点等实体进行标注并通过相似度匹配算法完成同义词消歧与多语言映射。其次在知识图谱构建与存储模块中将采用RDF格式对抽取出的实体与关系进行语义化描述使用开源工具如Apache Jena或Stardog将RDF数据导入Neo4j图数据库在Neo4j中设计以电影为中心的节点类型包括Movie、Actor、Director、Genre、PlotNode等并通过关系类型如ACTED_IN、DIRECTED_BY、BELONGS_TO等构建多维度连接为提高查询效率针对高频访问节点与关系建立索引并利用Neo4j的图算法库实现路径搜索与相似度计算。第三在问句理解与查询匹配模块中将使用预训练的中文BERT模型对用户输入进行编码结合实体链接器将问句中的关键词映射至知识图谱节点随后通过语义解析器将问句转化为Cypher查询模板并利用动态参数绑定生成具体查询语句在多跳查询场景下系统将自动构造多层关系路径并通过图遍历算法返回候选答案。第四在答案生成与多轮对话管理模块中系统将基于检索到的答案节点提取关键信息并使用模板化生成自然语言回复为支持多轮对话将实现上下文状态跟踪机制记录用户历史问题与系统响应并通过查询重写策略在后续提问中自动补全缺失实体或关系此外为提升回答的可解释性系统将在答案中嵌入对应知识图谱路径的可视化链接。最后在系统评估与优化模块中将设计基准测试集包括单轮与多轮问答样本并使用准确率、召回率、F1值以及平均响应时延等指标对系统性能进行量化评估根据实验结果针对查询效率瓶颈将进一步优化图数据库索引策略针对答案质量不足将改进实体抽取模型与关系抽取规则同时通过用户体验调研获取反馈持续迭代系统交互界面与对话策略。综上所述本研究通过系统化的模块化设计旨在实现一套高效、准确且可扩展的电影知识图谱问答平台为电影信息检索与用户交互提供创新解决方案。六、需求分析用户需求方面本系统的目标用户主要包括电影爱好者、影评人、影视研究者以及内容平台的运营人员。用户期望能够通过自然语言提问快速获取电影相关信息如导演、主演、上映年份、剧情梗概、评分与评论等并能进一步追溯到相关角色与剧情节点的深层关系用户还希望系统能够支持多轮对话当初始问题不完整或含糊时系统能够主动询问补充信息并给出更精准答案此外用户对答案的可解释性有较高要求期望在回答中看到对应的知识图谱路径或实体链接以便验证信息来源用户亦关注响应速度与交互流畅度希望在毫秒级完成查询并获得自然语言回复对于专业研究者而言系统应提供高级查询接口支持多跳关系检索与批量数据导出以便进行进一步分析内容平台运营人员则期望通过系统获取用户兴趣画像并结合知识图谱进行精准推荐与内容优化。综上所述用户需求涵盖了信息检索的准确性、交互的自然性、答案的可解释性以及系统性能与扩展性的多维度要求。功能需求方面系统需具备完整的数据采集与预处理模块能够从公开电影数据库与社交媒体抓取文本与结构化数据并通过分词、命名实体识别、关系抽取等技术构建高质量知识图谱知识图谱存储模块必须采用Neo4j等图数据库支持节点类型Movie、Actor、Director、Genre、PlotNode等并提供高效的索引与查询优化问句理解模块需集成中文BERT模型对用户输入进行语义编码并通过实体链接器将关键词映射至图谱节点查询匹配模块需要将解析结果转化为Cypher查询语句支持多跳路径检索与相似度计算答案生成模块应结合模板化自然语言生成技术输出可读性高且包含知识图谱路径的回复多轮对话管理模块需实现上下文状态跟踪、查询重写与补全机制以维持对话连贯性系统评估与优化模块应提供性能监控、日志分析与用户反馈收集功能以持续改进系统质量。上述功能相互配合构成一套从数据获取到答案交付的闭环式电影问答解决方案。七、可行性分析经济可行性方面本系统的开发与运营成本相对可控。首先数据采集阶段主要依赖公开API与爬虫技术所需服务器资源可采用云主机按需计费模式避免一次性硬件投入其次知识图谱存储使用Neo4j社区版或商业版其许可费用与维护成本相对较低再者系统核心模型基于开源BERT、HanLP等框架可在现有GPU资源上进行训练避免昂贵的专用硬件支出最后通过模块化设计可实现功能按需扩展与分阶段投入从而降低项目整体资金压力。综合来看项目在初期投入与长期运营成本之间保持平衡具备良好的经济可行性。社会可行性方面本系统满足了公众对电影信息获取的多样化需求。随着数字娱乐产业的快速发展观众对影片内容、幕后制作与角色关系的兴趣日益增长本系统通过自然语言交互降低了信息检索门槛提升了用户体验同时系统可为影视研究者提供精准的数据来源与分析工具推动学术研究与创作创新在教育领域教师可利用该平台开展电影文本分析与批判性思维培养此外系统的开放接口有助于内容平台实现精准推荐与版权管理从而促进产业链协同发展。因其能够为多方利益相关者创造价值社会接受度与支持度较高具备较强的社会可行性。技术可行性方面本研究所采用的技术方案已在国内外多项项目中得到验证。知识图谱构建技术基于RDF与Neo4j已被广泛应用于金融、医疗等领域的数据集成与查询自然语言处理模块利用BERT、HanLP等成熟模型具备较高的实体识别与语义理解准确率多轮对话管理采用状态跟踪与查询重写策略已在智能客服系统中实现良好效果系统整体架构采用PythonNeo4j前端框架可实现快速迭代与部署。技术团队具备相应的算法与数据库经验能够克服数据质量、查询性能等挑战。因此从技术角度看本项目具备充分的可行性与实现保障。八、功能分析系统功能模块可分为五大核心组成部分分别为数据采集与预处理、知识图谱构建与存储、问句理解与查询匹配、答案生成与多轮对话管理以及系统评估与优化。数据采集与预处理模块负责从豆瓣电影、TMDb、IMDb等公开平台抓取电影基本信息、剧情简介、演员表及用户评论等文本数据并利用爬虫框架进行结构化抓取随后通过HanLP进行中文分词结合命名实体识别模型对文本中的人物、机构、地点等实体进行标注并通过相似度匹配算法完成同义词消歧与多语言映射在知识图谱构建与存储模块中将抽取出的实体与关系转化为RDF格式并使用Apache Jena或Stardog将RDF数据导入Neo4j图数据库在Neo4j中设计以Movie、Actor、Director、Genre、PlotNode等节点类型并通过ACTED_IN、DIRECTED_BY、BELONGS_TO等关系类型构建多维度连接为提高查询效率针对高频访问节点与关系建立索引并利用Neo4j的图算法库实现路径搜索与相似度计算。问句理解与查询匹配模块采用预训练的中文BERT模型对用户输入进行编码结合实体链接器将问句中的关键词映射至知识图谱节点随后通过语义解析器将问句转化为Cypher查询模板并利用动态参数绑定生成具体查询语句在多跳查询场景下系统将自动构造多层关系路径并通过图遍历算法返回候选答案。答案生成与多轮对话管理模块基于检索到的答案节点提取关键信息并使用模板化自然语言生成技术输出自然语言回复为支持多轮对话系统实现上下文状态跟踪机制记录用户历史问题与系统响应并通过查询重写策略在后续提问中自动补全缺失实体或关系同时为提升回答的可解释性系统将在答案中嵌入对应知识图谱路径的可视化链接。系统评估与优化模块设计基准测试集包括单轮与多轮问答样本并使用准确率、召回率、F1值以及平均响应时延等指标对系统性能进行量化评估根据实验结果针对查询效率瓶颈进一步优化图数据库索引策略针对答案质量不足改进实体抽取模型与关系抽取规则通过用户体验调研获取反馈持续迭代系统交互界面与对话策略从而实现系统的持续性能提升与功能完善。九、数据库设计字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注---|---|---|---|---|---movie_id | 电影唯一标识符 | 4字节 | INT(11) NOT NULL AUTO_INCREMENT | 主键 (PK) | 自动生成title | 电影标题 | 255字节 | VARCHAR(255) NOT NULL | - |release_year | 上映年份 | 4字节 | YEAR NOT NULL | - |duration_minutes | 时长分钟 | 4字节 | INT(11) NOT NULL | - |synopsis | 剧情简介 | 65535字节 (TEXT) | TEXT NOT NULL | - |rating_avg | 平均评分0-10 | 4字节 | DECIMAL(3,1) DEFAULT NULL | - |num_ratings | 评分人数 | 4字节 | INT(11) DEFAULT NULL | - |字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注---|---|---|---|---|---actor_id | 演员唯一标识符 | 4字节 | INT(11) NOT NULL AUTO_INCREMENT | 主键 (PK) | 自动生成name | 演员姓名 | 255字节 | VARCHAR(255) NOT NULL | - |birth_date | 出生日期 | 8字节 (DATE) | DATE DEFAULT NULL | - |nationality | 国籍 | 100字节 | VARCHAR(100) DEFAULT NULL | - |字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注---|---|---|---|---|---director_id | 导演唯一标识符 | 4字节 | INT(11) NOT NULL AUTO_INCREMENT | 主键 (PK) | 自动生成name | 导演姓名 | 255字节 | VARCHAR(255) NOT NULL | - |birth_date | 出生日期 | 8字节 (DATE) | DATE DEFAULT NULL | - |nationality | 国籍 | 100字节 | VARCHAR(100) DEFAULT NULL | - |字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注---|---|---|---|---|---genre_id | 类型唯一标识符 | 4字节 | INT(11) NOT NULL AUTO_INCREMENT | 主键 (PK) | 自动生成name | 类型名称如动作、剧情 | 100字节 | VARCHAR(100) NOT NULL | - |字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注---|---|---|---|---|---plotnode_id | 剧情节点唯一标识符 | 4字节 | INT(11) NOT NULL AUTO_INCREMENT | 主键 (PK) | 自动生成description | 节点描述剧情要点 | 65535字节 (TEXT) | TEXT NOT NULL | - |sequence_number | 节点顺序号在电影中的位置 | 4字节 | INT(11) NOT NULL | - |字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注---|---|---|---|---|---movie_actor_id | 电影-演员关联唯一标识符 | 4字节 | INT(11) NOT NULL AUTO_INCREMENT | 主键 (PK) | 自动生成movie_id | 所属电影标识符 | 4字节 | INT(11) NOT NULL | 外键 (FK) REFERENCES Movies(movie_id) ON DELETE CASCADE |actor_id | 演员标识符 | 4字节 | INT(11) NOT NULL | 外键 (FK) REFERENCES Actors(actor_id) ON DELETE CASCADE |role_name | 角色名称如主角、配角 | 100字节 | VARCHAR(100) DEFAULT NULL | - |字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注---|---|---|---|---|---movie_director_id | 电影-导演关联唯一标识符 | 4字节 | INT(11) NOT NULL AUTO_INCREMENT | 主键 (PK) | 自动生成movie_id | 所属电影标识符 | 4字节 | INT(11) NOT NULL | 外键 (FK) REFERENCES Movies(movie_id) ON DELETE CASCADE |director_id | 导演标识符 | 4字节 | INT(11) NOT NULL | 外键 (FK) REFERENCES Directors(director_id) ON DELETE CASCADE |字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注---|---|---|---|---|---movie_genre_id | 电影-类型关联唯一标识符 | 4字节 | INT(11) NOT NULL AUTO_INCREMENT | 主键 (PK) | 自动生成movie_id | 所属电影标识符 | 4字节 | INT(11) NOT NULL | 外键 (FK) REFERENCES Movies(movie_id) ON DELETE CASCADE |genre_id | 类型标识符 | 4字节 | INT(11) NOT NULL | 外键 (FK) REFERENCES Genres(genre_id) ON DELETE CASCADE |字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注---|---|---|---|---|---plotnode_movie_id | 剧情节点-电影关联唯一标识符 | 4字节 | INT(11) NOT NULL AUTO_INCREMENT | 主键 (PK) | 自动生成plotnode_id | 所属剧情节点标识符 | 4字节 | INT(11) NOT NULL | 外键 (FK) REFERENCES PlotNodes(plotnode_id) ON DELETE CASCADE |movie_id | 所属电影标识符 | 4字节 | INT(11) NOT NULL | 外键 (FK) REFERENCES Movies(movie_id) ON DELETE CASCADE |字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注---|---|---|---|---|---comment_id | 评论唯一标识符 | 4字节 | INT(11) NOT NULL AUTO_INCREMENT | 主键 (PK) | 自动生成movie_id | 所属电影标识符 | 4字节 | INT(11) NOT NULL | 外键 (FK) REFERENCES Movies(movie_id) ON DELETE CASCADE |user_id | 评论用户标识符若系统支持用户登录 | 4字节 | INT(11) DEFAULT NULL | - |content | 评论内容 | 65535字节 (TEXT) | TEXT NOT NULL | - |comment_date | 评论时间戳 | 8字节 (DATETIME) | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP | - |以上表结构遵循第一范式所有字段均为原子值第二范式不存在非主属性对候选键的部分依赖第三范式不存在传递依赖。主键与外键约束保证数据完整性与参照完整性各表通过多对多关联表实现实体之间的关系避免冗余。此设计可直接映射至关系型数据库如MySQL、PostgreSQL或通过ORM工具在Python项目中使用。十、建表语句CREATE DATABASE IF NOT EXISTS movie_qa CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;USE movie_qa;-- 电影表CREATE TABLE IF NOT EXISTS movies (movie_id INT(11) NOT NULL AUTO_INCREMENT,title VARCHAR(255) NOT NULL,release_year YEAR NOT NULL,duration_minutes INT(11) NOT NULL,synopsis TEXT NOT NULL,rating_avg DECIMAL(3,1) DEFAULT NULL,num_ratings INT(11) DEFAULT NULL,PRIMARY KEY (movie_id)) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 演员表CREATE TABLE IF NOT EXISTS actors (actor_id INT(11) NOT NULL AUTO_INCREMENT,name VARCHAR(255) NOT NULL,birth_date DATE DEFAULT NULL,nationality VARCHAR(100) DEFAULT NULL,PRIMARY KEY (actor_id)) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 导演表CREATE TABLE IF NOT EXISTS directors (director_id INT(11) NOT NULL AUTO_INCREMENT,name VARCHAR(255) NOT NULL,birth_date DATE DEFAULT NULL,nationality VARCHAR(100) DEFAULT NULL,PRIMARY KEY (director_id)) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 类型表CREATE TABLE IF NOT EXISTS genres (genre_id INT(11) NOT NULL AUTO_INCREMENT,name VARCHAR(100) NOT NULL,PRIMARY KEY (genre_id)) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 剧情节点表CREATE TABLE IF NOT EXISTS plot_nodes (plotnode_id INT(11) NOT NULL AUTO_INCREMENT,description TEXT NOT NULL,sequence_number INT(11) NOT NULL,PRIMARY KEY (plotnode_id)) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 电影-演员关联表CREATE TABLE IF NOT EXISTS movie_actors (movie_actor_id INT(11) NOT NULL AUTO_INCREMENT,movie_id INT(11) NOT NULL,actor_id INT(11) NOT NULL,role_name VARCHAR(100) DEFAULT NULL,PRIMARY KEY (movie_actor_id),KEY idx_movie_actor_movie (movie_id),KEY idx_movie_actor_actor (actor_id),CONSTRAINT fk_movie_actor_movie FOREIGN KEY (movie_id)REFERENCES movies(movie_id) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_movie_actor_actor FOREIGN KEY (actor_id)REFERENCES actors(actor_id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 电影-导演关联表CREATE TABLE IF NOT EXISTS movie_directors (movie_director_id INT(11) NOT NULL AUTO_INCREMENT,movie_id INT(11) NOT NULL,director_id INT(11) NOT NULL,PRIMARY KEY (movie_director_id),KEY idx_movie_director_movie (movie_id),KEY idx_movie_director_director (director_id),CONSTRAINT fk_movie_director_movie FOREIGN KEY (movie_id)REFERENCES movies(movie_id) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_movie_director_director FOREIGN KEY (director_id)REFERENCES directors(director_id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 电影-类型关联表CREATE TABLE IF NOT EXISTS movie_genres (movie_genre_id INT(11) NOT NULL AUTO_INCREMENT,movie_id INT(11) NOT NULL,genre_id INT(11) NOT NULL,PRIMARY KEY (movie_genre_id),KEY idx_movie_genre_movie (movie_id),KEY idx_movie_genre_genre (genre_id),CONSTRAINT fk_movie_genre_movie FOREIGN KEY (movie_id)REFERENCES movies(movie_id) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_movie_genre_genre FOREIGN KEY (genre_id)REFERENCES genres(genre_id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 剧情节点-电影关联表CREATE TABLE IF NOT EXISTS plotnode_movies (plotnode_movie_id INT(11) NOT NULL AUTO_INCREMENT,plotnode_id INT(11) NOT NULL,movie_id INT(11) NOT NULL,PRIMARY KEY (plotnode_movie_id),KEY idx_plotnode_movie_plotnode (plotnode_id),KEY idx_plotnode_movie_movie (movie_id),CONSTRAINT fk_plotnode_movie_plotnode FOREIGN KEY (plotnode_id)REFERENCES plot_nodes(plotnode_id) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_plotnode_movie_movie FOREIGN KEY (movie_id)REFERENCES movies(movie_id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 评论表CREATE TABLE IF NOT EXISTS comments (comment_id INT(11) NOT NULL AUTO_INCREMENT,movie_id INT(11) NOT NULL,user_id INT(11) DEFAULT NULL,content TEXT NOT NULL,comment_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (comment_id),KEY idx_comment_movie (movie_id),CONSTRAINT fk_comment_movie FOREIGN KEY (movie_id)REFERENCES movies(movie_id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 索引优化可选-- 对电影标题进行全文索引以支持模糊检索ALTER TABLE movies ADD FULLTEXT INDEX idx_movies_title (title);-- 对演员姓名进行全文索引ALTER TABLE actors ADD FULLTEXT INDEX idx_actors_name (name);-- 对导演姓名进行全文索引ALTER TABLE directors ADD FULLTEXT INDEX idx_directors_name (name);-- 对类型名称进行唯一索引ALTER TABLE genres ADD UNIQUE INDEX uq_genres_name (name);-- 对剧情节点描述进行全文索引若需要ALTER TABLE plot_nodes ADD FULLTEXT INDEX idx_plot_nodes_description (description);COMMIT;下方名片联系我即可~大家点赞、收藏、关注、评论啦 、查看下方获取联系方式

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价