使用pd设计表的 多对多的中间表的设计方式, 有图有真相

设计多对多表时解决重复问题

目前流行两种设计方式: 方式一 是在中间表中建一个单独的id主键, 与业务表关联的键设置为unique唯一; 干事二: 联合主键的方式, 该方式中间表不会有与业务表无关的主键,即把与业务表关联的键 进行联合 作为主键

下面是使用pd来设计表的两种详细方式

方式一: 中间表采用一个单独的id主键与业务表无关

双击表模型选择keys添加你想要设置的唯一主键名

双击红色方框前面的箭头计入该键内部选择Mysql勾上 Unique key

然后选择columns添加要设置唯一的列

点击确定完成, 下面是设计好的表

方式二: 传统的联合主键方式, 也是我最喜欢的方式, 这种方式简单, 只需要在设计表是将字段的主键都勾上即可, 不许要含有与业务无关的主键, 即主键都是由业务表的键联合组成唯一

就是这么简单, 点击确定完成

总结: 两种方式各有好处目的都是保证数据的唯一性, 方式一便于维护, 缺点步骤稍复杂需要多余的与业务无关的字段; 方式二操作简单不需要含有与业务无关的字段, 缺点不好维护

时间: 2024-10-23 09:02:06

使用pd设计表的 多对多的中间表的设计方式, 有图有真相的相关文章

数据库设计中,多对多关系使用使用逗号分割关联讨论

进公司一个月,发现公司很多人喜欢用逗号分割,去存储其它表的主键,做多对多关联,但存在很多乱用现象.这里对这种方式做了下总结. 在传统数据库设计中,多对多关系存储通常都是用一张中间表来简历两张表的关系.例如用户和角色,一个用户有多个角色,而一个角色下又会有多个用户.这样,理所当然的我们会想着用张中间表去存储两者的关系.这样角色就能很容易的查出自己对应的多个用户.用户也同样能容易查出自己有哪些角色.这种设计是通用而合理的,两个对象都可以维护之前的关系. 有种情况:例如对象A与对象B,两者之间是多对多

基于Extjs的web表单设计器 第五节——数据库设计

这里列出表单设计器系列的内容,6.7.8节的内容应该在春节后才有时间出了.因为这周末就请假回老家了,准备我的结婚大事.在此提前祝大家春节快乐! 基于Extjs的web表单设计器 基于Extjs的web表单设计器 第一节 基于Extjs的web表单设计器 第二节——表单控件设计 基于Extjs的web表单设计器 第三节——控件拖放 基于Extjs的web表单设计器 第四节——控件拖放 基于Extjs的web表单设计器 第五节——数据库设计 基于Extjs的web表单设计器 第六节——界面框架设计

MySql连表之多对多

背景 每个男生和女生都可以选择自己最喜欢的几个人,可以是多个也可以使一个. 但是,在创建男生表的时候,女生表并没存在,所以不能在创表初期就在男生表中加入其喜爱的女生名单,而且名字冗余,存储浪费空间. 设计表 1.表一:man 2.表二:woman 3.表三:man_to_woman 小赵<-->小花 小赵<-->小朵 小赵<-->小楠 小孙<-->小雨 小钱<-->小楠 小李<-->小花 创建外键 找到小赵喜欢的人 1 SELECT

设计和发布无代码的 InfoPath 表单 (篇二)

1. 新建 InfoPath 表单 常用表单模板有很多, 这边主要介绍从 "空白表单" 创建表单. ( InfoPath Filler 表单是指通过客户端打开的表单, 一般我们设计的表单都是通过 web 打开的表单) 由于跟 Office 操作界面一样, 可以自己插入表格, 修改样式等 当我们插入一个 "文本框" 控件的时候, 右侧域会自动增加对应的字段来存储该控件的值 可以右键 "域1" 将其名称设置成一个通俗易懂的名字 经过一些操作我们可以设

Mybatis的多表(多对多)查询

Mybatis的多表(多对多)查询 示例:用户和角色 一个用户可以有多个角色 一个角色可以赋予多个用户 解决办法 建立两张表:用户表,角色表 让用户表和角色表具有多对多的关系.需要使用中间表,中间表包含各自的主键,在中间表中是外键. 建立两个实体类:用户实体类和角色实体类 让用户和角色的实体类能体现出来多对多的关系 各自包含对方一个集合引用 建立两个配置文件 用户的配置文件 角色的配置文件 实现配置 当我们查询用户时,可以同时得到用户所包含的角色信息. 当我们查询角色时,可以同时得到角色所赋予的

约束条件 ,表与表之间的关系 和多表联合查询***

一.约束条件    为了确保数据的完整性 可以给列加上约束条件    完整性的分类:        1.实体完整性        2.域完整性        3.引用完整性    1.实体完整性        实体:即表中的一行(一条)记录 代表一个实体 entity        实体完整性的作用:标识每一行数据不重复        约束类型:            1.1 主键约束(primary key)            1.2 唯一约束(unique)            1.3

Mysql多表查询(两张独立表,一张关系表)

一.数据库设计 1.三个数据表长这样 其中user表记录用户信息,cat主要记录男女性别,mete表是用户id和性别id的对应关系 2.具体数据如下 二.查询目标 查询出所有性别为“男”的用户的“姓名”,如下记录两种不同形式的查询 1.单纯的条件查询 SQL:select user.value from user where user.uid in (select mete.uid from mete where mete.cid=1) 结果: 语句解释: 先使用select mete.uid 

2017.2.28 activiti实战--第六章--任务表单(一)动态表单(待)

学习资料:<Activiti实战> 第六章 任务表单(一)动态表单 内容概览:本章要完成一个OA(协同办公系统)的请假流程的设计,从实用的角度,讲解如何将activiti与业务紧密相连. 第四章中讲解了两种表单:动态表单和外置表单的区别.这里将使用不同的表单来完成相同的功能. 1 动态表单:<activiti:formProperty> 2 外置表单:<activiti:formKey>

activiti工作流数据库表详细介绍(23张表)

Activiti的后台是有数据库的支持,所有的表都以ACT_开头. 第二部分是表示表的用途的两个字母标识. 用途也和服务的API对应. ACT_RE_*: 'RE'表示repository. 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等). ACT_RU_*: 'RU'表示runtime. 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据. Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录. 这样运行时表可以一直很小速度很快.