——请问数据库表关联用主键ID好还是CODE好

看需求了,不知道你们的code有什么含义,如果仅仅是数据的唯一标志,用id就行了,为什么还要另外code,如果code是可变的,那只能关联到code吧,如果是不可变的,关联code和id都可以。 | 园豆:6408 (大侠五级) | 2020-02-14 11:34
我现在是在一张表里有三个其它表CODE,这个code是要展示的,我如果用ID关联,就要每次去Join其它表是关联查CODE,如果直接放CODE,这个CODE又是能偶尔被改的。我期望每次查询不关联那三张表,又想改CODE的时候动作小一些
支持(0)反对(0)筱恕 | 园豆:196 (初学一级) | 2020-02-14 11:53
@筱恕: 哦,我觉得外键里放Id还是更靠谱。那我觉得没办法,只能是关联查询出Code,当然可以在子表里把id和code同时加上,数据冗余一点,这样就不用关联查询,但是增加了另外一个难度,父表修改code时,子表也得跟着改。

原文地址:https://www.cnblogs.com/yitda/p/12708203.html

时间: 04-14

——请问数据库表关联用主键ID好还是CODE好的相关文章

外键关联非主键id时-hbm.xml配置,及其分页查询DaoImpl

表关联时,外键关联非主键id时-hbm.xml配置: (由于hibernate默认为关联主键查询,故需要配置相关hql语句的属性) <many-to-one name="areas" class="com.hnqy.entity.Areas" fetch="select" property-ref="areaid" foreign-key="areaid"> <column name=&q

spring jdbcTemplate insert插入Oracle数据库后返回当前主键id

最近做一个spring版本3.0.4的老项目功能,应用场景要用到jdbctemplate插入oracle表后返回主键ID拿来和其他表关联. 用oralce的可以一直用这种处理方式,高兼容低. public long insertOraGetId(final QuetInvtHeadVO headVO) { KeyHolder keyHolder = new GeneratedKeyHolder(); jdbcTemplate.update(new PreparedStatementCreator

Mybatis+Mysql插入数据库返回自增主键id值的三种方法

一.场景: 插入数据库的值需要立即得到返回的主键id进行下一步程序操作 二.解决方法: 第一种:使用通用mapper的插入方法 Mapper.insertSelective(record): 此方法:插入一条数据,只插入不为null的字段,不会影响有默认值的字段支持Oracle序列,UUID,类似Mysql的INDENTITY自动增长(自动回写)优先使用传入的参数值,参数值空时,才会使用序列.UUID,自动增长 controller的实际应用:使用方法id会直接将映射到参数的实体上使用时直接使用

mysql旧表去重数据导入新表且赋予主键id新值

业务需求: A表有id,n1,n2,n3字段,为新建空表, B表有id,n1,n2,n3,n4,n5等字段,为含有数据的旧表, 现将B表中的n1,n2,n3组合的记录去重后导入A表中,并且A表主键也要录入值 方案:将B表的记录查询后去重,同时对查记录结果编排序号,将序号作为待插入A表的id值,sql语句如下: INSERT INTO A表(id,n1,n2,n3) select @row :[email protected]row+1 AS id,t1.* from ( SELECT DISTI

sql新建数据库表,及主键外键

create table tb_Modules(module_Id int identity(1,1) primary key,  (自增)model_Name varchar(50) not null,page_Id int foreign key(page_Id) references tb_Page(page_Id)(设置外键))go

【Mysql】利用内连接与嵌套查询实现多表查询,主键、外键的基本概念

虽然多表查询,在计算机的必须课,数据库,里面已经大讲特讲,但是这个难点很多老师都没有讲深讲透.跟你净扯一大堆,左连接右连接的东西,让人一头雾水.老师把所有多表查询的方法告诉你,但是到头来一种方法都没有掌握.其实只要记住一种就够了,学会多表查询,除了在你考数据库能够拿到很高分之外,到了实际应用,很多地方都用到多表查询.比如论坛工程中分析回帖发帖的关系,提供该用户发了什么帖子的功能.比如信息管理系统中,分析班级与学生.老师之间的关系,提供该班级中存在多少学生的查询功能.就需要用到多表查询,你总不能把

MyBatis-plus 新增实例,主键ID从很大的数字开始

mybatis-plus是mybatis增强版,用mybatis-plus可以省去很多DAO层代码和数据库操作语句的编写.但是需要我们配置好条件. 情景: 向数据库新增一条实例,我们要调用 insert(T t)方法:向数据库批量新增实例,我们调用inserBatch(List<T> list)方法. 当然,这些都是mybatis-plus已经封装好的,我们直接用,DAO层代码和xml文件不用自己编写.但是,我们数据库新增实例,主键ID一般都是自增长的,不用人工给它赋值. 那么mybatis-

mysql数据库单表只有一个主键自增id字段,ibatis实现id自增

mysql数据库单表只有一个主键自增id字段,ibatis实现id自增 <insert id="autoid">        insert into user_id values(null)        <selectKey resultClass="int">SELECT @@IDENTITY As id</selectKey>    </insert>

通过 jdbc 分析数据库中的表结构和主键外键

文章转自:http://ivan4126.blog.163.com/blog/static/20949109220137753214811/ 在某项目中用到了 hibernate ,大家都知道 hibernate 是 ORM 框架,他是有能力根据实体生成数据库表的.我们在单元测试的时候用到了 dbUnit ,dbUnit 可以帮助我们在测试前把数据库的测试数据准备好,然后我们就利用现成的数据库环境测试,测试完成后需将数据库中的所有数据清除(为了不影响其他的单元测试),然后接着下一个测试.虽然已经

逻辑数据库设计 - 需要ID(谈主键Id)

本文的目标就是要确认那些使用了主键,却混淆了主键的本质而造成的一种反模式. 一.确立主键规范 每个了解数据库设计的人都知道,主键对于一张表来说是一个很重要,甚至必需的部分.这确实是事实,主键是好的数据库设计的一部分.主键是数据库确保数据行在整张表唯一性的保障.它是定位到一条记录并且确保不会重复存储的逻辑机制.主键也同时可以被外键引用来建立表与表之间的关系. 难点是选择那一列作为主键.大多数表中的每个属性值都有可能被很多行使用.例如姓名,电子邮件地址等等都不能保证不会重复. 在这样的表中,需要引入