在navicat中怎么外键与主键关联

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在navicat中怎么外键与主键关联相关的知识,希望对你有一定的参考价值。

1、打开navicat连接上我们的数据库,并展开到表格。
2、创建两个有外链关系的表格,这里我以"会员表"为实例,分别取名为c_user,c_focus
3、c_focus中的c_userid与c_usname两个字段与c_user中的c_id与c_name是关键对应的,所以这两个就是我们要创建的外键。
4、右击“C_focus”选择“设计表”
5、打开表格设计界面,选择“外键”选项卡。
6、点击“栏位名”下的文本框,右边出现一个小按钮,点击显示选择字段列表,这里选择我们要作外键的字段“c_name”
7、在参考数据与引用表中选择自己的数据库与关联的别一个表“c_user”
8、“外栏位名”与“栏位名”一样,只是这里选择的是"c_user"表的字段。
9、“在删除时”选择SET NULL,这样当c_user表中其中一条记录被删除时,c_focus对的记录的字段的值就会变成null
10、"刷新时"选择CASCADE,这样当c_user表中其中一条记录数据变动更新以后,c_focus对就的记录字段的值也会自动随着更新。
11、点击“保存”按钮,保存我们的操作,这样navicat外键怎么设置的方法已经介绍完了,快去试一下吧。
参考技术A Don't be afraid to ask for a meeting because you may be separated.

一次主从表集成流程开发过程

主从表即从表数据依赖于主表,一般最后查询数据时把主表与从表进行关联查询。主表:在数据库中建立的数据表,其中存在主键用于与其它表相关联,并且作为在主表中的唯一性标识。从表:以主表的主键值为外键的表,可以通过外键与主表进行关联查询。从表与主表通过外键进行关联查询。主表可用于存储主要信息,从表用来存储扩展信息。

使用主从表可以很大程度地节约系统资源,一条主表数据对应多条从表数据,如不采用主从表形式,主表数据就会有大量的重复,通常有多少从表数据就会有多少条主表数据,很大程度地浪费系统资源,且这种浪费是可以避免的。通过主键及外键生成主从表,以外键做约束,实现一对多的数据形式。本篇文档记录的就是以主从表作为源头及目标进行数据同步的集成流程开发过程。 

1整体介绍 

主从表的数据同步与其他数据同步不同之处在于,主从表的数据在数据查询时需要将主表数据以及与之关联的从表数据一并获取,并不是单独获取某一条数据;数据接收方亦是如此,接收数据时一并将主从数据进行存储。 

1.1整体说明 

在正式开始介绍本次工作前,先对本次工作环境进行介绍,本次工作是在ESB基础样例中进行,ESB基础组件样例工程的默认生成主要针对项目实施人员以及企业服务总线初学者,便于上述人员对ESB基本功能进行了解,主要功能包括常规数据的映射及转换、数据适配器的相关操作、协议适配器的相关操作并结合SMC管理控制进行应用集成及服务流程的监控统计等等,同时也便于项目实施人员进行默认样例生成并进行常规功能使用方法的反查。本次工作就是基础样例中的数据映射及转换部分。 

1.2集成架构 

本次功能的数据来源表为账户分组表及账户实体表(HR);用户分组表及用户实体表(OA),这两部分互为数据的源头,为对方提供需同步的数据,并作为接收方接收对方同步来的数据,集成架构图如下: 

各类数据源头及目标系统如下: 

1.3功能需求 

本次工作是在原有ESB基础样例应用集成部分的流程基础上进行调整与优化,将原有的数据获取服务及数据接收服务调整为主从表服务,同时将服务接口对应的出参或入参调整为动/静态模型的格式;在此基础上,调整原有的集成流程,对通过Rest/Web服务查询得到数据进行相应的格式转换、字段映射等处理,将经过转换后的数据传输到目标服务的对应接口中,将数据写入至目标数据库中;同时在数据同步过程中,无论是数据获取或是数据接收,处理的数据皆为主从格式数据。 

2需求分析 

本次需要完成的工作分为两部分,一是模拟业务系统的数据表相关服务的开发;二是对应的数据同步流程的调整开发。在本章节中,将对本次工作的需求进行分析,明确工作目标、理清工作思路。 

2.1前期准备 

在获取本次需求之后,从需求中提取出本次工作的具体实现目标:主从数据的同步、传输过程中使用动静态模型对数据传输的格式进行约束。针对上述关键点,首先根据需求撰写开发前的设计文档,并与领导确认思路是否正确,保证工作开展方向正确,其次完成模拟业务系统的数据表的设计及创建,完成后续服务的创建的前期准备工作,最后根据设计的数据表,创建约束数据格式的动静态模型;这些准备工作的完成可以保障后续的工作顺利开展。 

2.2工作目标 

根据前文中的需求进行分析,得出本次开发工作需要达成的目标为:主从数据的同步,即在同步主表数据的同时会将其对应的从表数据一并完成同步操作,同时对主表以及从表进行写入操作。同时在达成此目标的过程中,还有其他的一些需求,如在数据传输过程中需要使用动静态模型对数据格式进行控制,同时由于源头及目标系统的服务不同,需要考虑JSON及XML格式数据间的相互转换操作。 

2.3实现思路 

本次工作开展需要模拟业务系统数据表的相关服务的创建、约束数据格式的动静态模型的创建以及主从格式数据同步的集成流程的创建,实现思路如下: 

1.根据主从格式的数据创建动静态模型,动静态模型需创建主从形式,主模型需以list形式保存从模型; 

2.用户数据表的服务为REST服务,使用的数据模型为动态模型,在服务的更新接口中获取传来的JSON格式数据直接转为动态模型并完成后续的数据存储操作,在查询接口中将根据条件获取到的数据转换为动态模型并输出; 

3.账户数据表的服务为WEB服务,使用的数据模型为静态模型,在服务中配置接口对应的入参、出参为静态模型,在接口中进行对应的映射转换操作完成数据的处理; 

4.根据创建完成的服务,在管理控制台中完成场景的创建并生成集成流程,在集成流程中根据数据的格式进行格式转换、字段映射等处理,实现主从数据的同步操作。 

3实现步骤 

明确具体工作目标,同时根据工作目标完成对实现思路的梳理,可以开始着手开展开发工作,在本章节中,将对本次开发工作的实现步骤进行阐述,具体分成模型、服务及流程三部分进行描述。 

3.1模型创建 

本次开发工作中使用到的模型分为动态模型以及静态模型,动态模型的创建步骤如下: 

在SMC管理控制台服务工程中的服务模型中,点击新建,如图: 

在模型详情中填入模型的基本信息,同时在模型样例中填入希望创建的模型格式的JSON数据,如图: 

静态模型的创建步骤如下: 

在ESB设计器中右击SM模型,点击新建服务模型,如图: 

在服务模型向导中填入模型的基础信息,完成模型的创建,如图: 

在主模型中点击选择模型,选择从属模型,完成主从模型的创建,如图: 

3.2服务创建 

在ESB设计器中,基于数据表创建服务,模式选择主从表模式,如图: 

填写服务的基本信息,如图: 

在WEB服务中,将相关接口的入参出参设置为对应的静态模型,如图: 

在接口中完成数据的转换操作即可完成服务的创建。 

3.3集成流程 

在管理控制台API服务中,导入创建完成的服务,如图: 

在对应的接口中完成入参、出参的配置,如图: 

在场景配置中创建场景并完成基本信息的录入,如图: 

在映射参数中点击解析,完成参数的映射,如图: 

在设计器中创建对应的集成流程,并完成相关调整,如图: 

4功能测试 

在完成开发之后,需要对开发成果进行功能上的测试,验证开发成果是否满足最初需求,开发过程中是否有考虑不全面之处,在本章节中将对本次开发成果进行整体验证,查看是否有缺漏之处。 

4.1预期效果 

在本次功能开发的最终目标是实现主从数据的同步操作,当调用集成流程时能够将主从数据一并同步至目标数据表中;同时由于本次开发功能分为触发、推送以及定时三种类型,在调用触发流程时,输入分组CODE将分组及分组之下的所有实体进行同步;推送则是将需要同步的数据以JSON格式作为集成流程的入参进行同步;定时集成流程按照设定的定时策略批量同步数据。 

4.2触发流程 

以账户到用户为例,在管理控制台中输入分组code值,点击调用,如图: 

通过上图的相应输出可以看出,流程执行成功,也可在流程日志中进行查看,如图: 

在目标数据库中查看分组及分组对应的实体是否同步成功,如图: 

  

实体效果如图: 

4.3推送流程 

以账户到用户为例,在管理控制台中输入希望同步的JSON数据,点击调用,如图: 

通过上图的相应输出可以看出,流程执行成功,也可在流程日志中进行查看,如图: 

在目标数据库中查看分组及分组对应的实体是否同步成功,如图: 

  

实体效果如图: 

4.4定时流程 

在集成流程中配置定时流程的定时策略,由于本次是测试功能,所以将定时策略配置为间隔1分钟,如图: 

启动定时流程,等待一分钟,在流程监控中查看流程是否被调用,如图: 

在目标数据库中查看分组及分组对应的实体是否同步成功,如图: 

  

实体效果如图: 

5工作总结 

本次主从表数据同步的集成流程的开发工作,本人从得到最初的需求开始,到后续的动静态模型的创建、使用以及服务及流程的调整,从中收获颇多,在此将对本次工作中的收获及心得进行总结。 

5.1工作收获 

通过本次的开发工作,本人对于动态模型、静态模型的创建以及使用有了进一步的理解,明确在流程中如何通过动/静态模型对数据的格式进行控制,同时对于主从数据如何通过动静态模型进行格式控制也有了一定程度的掌握;除此之外,对于主从格式的数据在同步过程中,如何对主表以及从表数据一并操作也有了更深层次的掌握。在正式的项目开发工作中,可以通过动静态模型对数据进行规范化处理,将转换为驼峰命名的方式去进行后续的其他操作;如后续的工作中涉及主从数据的处理,也能够根据本次工作得到的经验去更快地完成工作。 

5.2能力提升 

通过本次工作,对于同步过程中的数据格式处理理解得更加深刻,对于ESB设计器中的JAVA转换组件、映射组件等数据格式转换组件的使用更为熟练;同时由于本次使用到的服务为REST/WEB两种服务,对于这两种服务相互间的数据同步需要对哪些位置进行调整也有了进一步的掌握,可以提高后续此类工作的完成效率。 

5.3总结归纳 

本次功能开发完成后,可以通过样例去反查动静态模型的使用、主从数据同步过程中数据的处理以及REST/WEB两种服务之间JSON/XML格式的数据如何进行转换,使不熟悉这些操作的使用者能够快速地了解并掌握;也可以让项目实施人员通过样例快速修改成需要的流程。 

本次开发的功能与以往开发的同步流程不同,在本次开发流程中,较以往的同步流程有了更多的数据格式转换,同时也应用了更多的模型使用,通过创建样例反查本次开发的功能,可以使企业服务总线的初学者更快地掌握各种数据格式的转换方式,也可以使项目实施人员快速地进行转换、映射组件以及动静态模型使用方法的反查。 

以上是关于在navicat中怎么外键与主键关联的主要内容,如果未能解决你的问题,请参考以下文章

Navicat for MySQL怎么将设置成外键的ID设置自动增长

Navicat for MySQL怎样设置外键

在PowerDesigner里面怎么创建主外键关系,要详细。谢谢!

mysql怎么设置外键?

Navicat for MySQL 中我设置了外键之后,外键却可以和主键不一样,两张图里面的产品型号和库房是又关联的

外键一定要和主键同名吗?