精华内容
下载资源
问答
  • 业务需要,oracle亿条数据的表导入几十万条数据到中间表中间表查询时候不执行表分析的话不走索引,走了表分析走索引,但是表分析一般夜里执行。而且这个中间表的数据业务走完了立马数据就清空了。 请问这个中间...
  • 需求:因为中间表使用两个外键作为联合主键 ,如果需要对中间表的属性进行修改, 1、一般做法 从实体类获取中间表的集合,然后遍历中间表的集合,然后修改。 WorkDateTime.getWorkDateTimeProducts()     2...

    因为中间表带有属性,采用的多对多映射方式 两个实体类都使用   @OneToMany( mappedBy="workDateTime")

     

    需求:因为中间表使用两个外键作为联合主键 ,如果需要对中间表的属性进行修改,

    1、一般做法

    从实体类获取中间表的集合,然后遍历中间表的集合,然后修改。

    WorkDateTime.getWorkDateTimeProducts()

     

     

    2、一般做法很麻烦,如果条件还需要判断ProductId,则更麻烦

    直接采用中间表仓库的做法

    1)、建立联合主键

     

    联合主键 

    public class WorkDateTimeProductKey  implements Serializable{

           private static final long serialVersionUID = 3586335994284551414L;

           private Product product;

           private WorkDateTime workDateTime;

    }

     

    2)、中间表的仓库 

    public interface  WorkDateTimeProductRepository extends JpaRepository<WorkDateTimeProduct, Long> {

          WorkDateTimeProduct findByWorkDateTime_IdAndProduct_Id(long workDateTimeId ,long productId);

    }

     

    3)由于业务上,经常会知道两个实体类的主键,就可以通过此方法:findByWorkDateTime_IdAndProduct_Id ()查询到WorkDateTimeProduct,然后直接修改

     

    WorkDateTime_Id 其中 _的意思是  查询WorkDateTimeProduct 的 WorkDateTime 的 id属性

     

    4)测试代码

     

    @SpringBootTest

    @RunWith(SpringRunner.class)

    public class WorkDateTimeProductRepositoryTest {

     

           @Autowired

           WorkDateTimeProductRepository WorkDateTimeProductRepository;

           

           @Test

           public void findByWorkDateTimeIdAndProductIdTest(){

                   WorkDateTimeProduct  workDateTimeProduct =WorkDateTimeProductRepository.findByWorkDateTime_IdAndProduct_Id(12l, 13l);

                   workDateTimeProduct.getAmount();

                  System.out.println(workDateTimeProduct.getAmount());

           }

    }

     

    实体类1

    @Entity

    //@JsonIgnoreProperties(value={"workDateTimeProducts"})

    public class WorkDateTime implements Serializable {

           

           private static final long serialVersionUID = 6788933059497808914L;

           @Id

           @GeneratedValue(strategy=GenerationType.IDENTITY)

           private long id ;

           

           @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")

           @DateTimeFormat(pattern = "yyyy-MM-dd")

           private Date dinnerDay;

           

           private byte dinnerTime; //  1noon 中餐,2 evening 晚餐,3 morning

           private byte state//订餐时间段是否有效 

           @OneToMany( mappedBy="workDateTime")

           private List<WorkDateTimeProduct> workDateTimeProducts = new ArrayList<WorkDateTimeProduct>();

           private byte printAllow;   //1为不可以打  2为可以打,

    }

     

     

    实现类2

    @Entity

    //@JsonIgnoreProperties(value = { "hibernateLazyInitializer", "handler" })

    public class Product  implements Serializable{

           private static final long serialVersionUID = -3700731687896498304L;

           

           @Id

           @GeneratedValue(strategy=GenerationType.IDENTITY)

           private long id ;

           private String name;

           private String description;

           private short amount  ;

           private short price ;

           private String productImg;

           @OneToMany(mappedBy="product")

           List<WorkDateTimeProduct> workDateTimeProducts =new ArrayList<WorkDateTimeProduct> ();

    }

     

     

    中间表

    @Entity

    @IdClass(WorkDateTimeProductKey.class)

    public class WorkDateTimeProduct implements Serializable{

           private static final long serialVersionUID = 1207408560047174539L;

     

           @Id

           @ManyToOne()

           @JoinColumn(name="product_id")

           private Product product;

           @Id

           @JsonIgnore

           @ManyToOne()

           @JoinColumn(name="workdatetime_id")

           private WorkDateTime workDateTime;

           private byte state;

           

           private short amount ;

       

    }

     

     

    展开全文
  • 中间表 临时表

    千次阅读 2015-06-16 17:16:17
    今天碰到个需求,需要查询所有级别的医院,看了下库表,分别是 机构类型类(t_OrgType) 机构类(t_Organ) 多对多的关系, 以及中间表 机构类型关系类(t_OrgTypeRelation) ,在此对中间表的概念做一个总结,下面...

        今天碰到个需求,需要查询所有级别的医院,看了下库表,分别是  机构类型类(t_OrgType) 机构类(t_Organ) 多对多的关系,  以及中间表 机构类型关系类(t_OrgTypeRelation) ,在此对中间表的概念做一个总结,下面是表结构

    机构类型类(t_OrgType)

    属性名称

    数据元名称

    数据元标识符

    约束

    类型

    表示格式

    允许值

    Org_Type_ID

    机构类型ID

     

     

    S1

    AN32

     

    Org_Type_Code

    机构类型代码

     

     

    S1

    AN..10

     

    Org_Type_Name

    机构类型名称

     

     

    S1

    AN..50

     

    Card_Org_Flag

    制卡机构标志

     

     

    S2

    AN..2

    0:否 1:是

    Create_Time

    数据创建时间

     

     

    DT

    DT15

     

    Create_User_DR

    数据创建用户ID

     

     

    S1

    AN32

     

    Update_Time

    数据最后一次更新时间

     

     

    DT

    DT15

     

    Update_User_DR

    数据最后一次更新用户ID

     

     

    S1

    AN32

     

     

     

     

     

     

     

     

     


    机构类(t_Organ)

    属性名称

    数据元名称

    数据元标识符

    约束

    类型

    表示格式

    允许值

    Org_ID

    机构ID

     

     

    S1

    AN32

     

    Org_Code

    机构代码

     

     

    S1

    AN..10

     

    Org_Name

    机构名称

     

     

    S1

    AN..50

     

    Org_Short

    机构简称

     

     

    S1

    AN..50

     

    Bank_Short

    金融机构英文简写

     

     

    S1

    AN..20

    Eg:ICBC

    Bank_Status

    金融机构状态

     

     

    S2

    N1

    0:未发卡、1:发卡

    Manag_Leval

    管理机构级别

     

     

    S2

    N1

    见6.1

    Med_Leval

    医疗卫生机构等级

     

     

    S3

    N2

    见6.26

    Med_Tel

    医疗卫生机构联系电话

     

     

    S1

    AN..20

     

    Med_Cate_Code

    医疗卫生机构类别代码

     

     

    S1

    AN..20

    见6.27

    MED_NATURE_CODE

    医疗卫生机构性质代码

     

     

    S3

    N2

    见6.28

    Org_Introduct

    机构简介

     

     

    S1

    AN..3000

     

    Province_Code

    所在省份编码

     

     

    S3

    N6

    见6.38

    City_Code

    所在城市编码

     

     

    S3

    N6

    见6.38

    District_Code

    所在区/县编码

     

     

    S3

    N6

    见6.38

    Law_Person_Name

    机构负责人

     

     

    S1

    A..30

     

    Law_Person_Tel

    机构负责人电话

     

     

    S1

    AN..20

     

    Contact_Name

    机构联系人

     

     

    S1

    A..30

     

    Contact_Tel

    机构联系人电话

     

     

    S1

    AN..20

     

    Org_Addr

    机构联系地址

     

     

    S1

    AN..100

     

    Super_Org_Code

    上级机构编码

     

     

    S1

    AN..10

     

    Super_Org_Name

    上级机构名称

     

     

    S1

    AN..50

     

    Fax_No

    传真号

     

     

    S1

    AN..20

     

    Email

    邮箱

     

     

    S1

    AN..50

     

    Web_Url

    网址

     

     

    S1

    AN..200

     

    Postal_Code

    邮政编码

     

     

    N

    N6

     

    Available_Flag

    是否有效标志

     

     

    S2

    AN..2

    0:无效

    1:有效

    Start_Date

    有效开始时间

     

     

    D

    D8

     

    End_Date

    有效结束时间

     

     

    D

    D8

     

    Issuer_Org_Code

    发卡机构代码

     

     

    N

    N22

     

    Notes

    备注

     

     

    S1

    AN..500

     

    Create_Time

    数据创建时间

     

     

    DT

    DT15

     

    Create_User_DR

    数据创建用户ID

     

     

    S1

    AN32

     

    Update_Time

    数据最后一次更新时间

     

     

    DT

    DT15

     

    Update_User_DR

    数据最后一次更新用户ID

     

     

    S1

    AN32

     

    机构类型关系类(t_OrgTypeRelation)

    属性名称

    数据元名称

    数据元标识符

    约束

    类型

    表示格式

    允许值

    Org_Rel_ID

    机构类型关系ID

     

     

    S1

    AN32

     

    Org_Type_Code

    机构类型代码

     

     

    S1

    AN..10

     

    Org_Code

    机构代码

     

     

    S1

    AN..10

     

    Available_Flag

    是否有效标志

     

     

    S2

    AN..2

    {0,1}

    Start_Date

    有效开始时间

     

     

    D

    D8

     

    End_Date

    有效结束时间

     

     

    D

    D8

     

    Create_Time

    数据创建时间

     

     

    DT

    DT15

     

    Create_User_DR

    数据创建用户ID

     

     

    S1

    AN32

     

    Update_Time

    数据最后一次更新时间

     

     

    DT

    DT15

     

    Update_User_DR

    数据最后一次更新用户ID

     

     

    S1

    AN32

     



    解决方案为三表联查,以中间表 Org_Type_Code为形参 查出t_Organ的一些必要属性

    总结下中间表的作用 

    中间表是一个逻辑上的叫法,实质上它就是一个普通的库表( 为区分“临时表”),分析了经常的业务操作,发现大量的“赠删改查” 实际是以中间表为桥梁,

    那么可不可以不用中间表,单纯的在两个表之间建立多对多的关系(通过主外键关联),事实可以,但是库表会存在大量的冗余数据,每个表会有nXn条记录,

    明显不采用中间表会有2nXn(两个表加起来)条记录,有中间表的话为2n+nXn(三表加起来)条记录,更不论每个表的字段数会变成两个单表字段数相加

    之和,并且没有中间表的话,两表直接关联,对于“增删改查”非常繁琐,特别是“删改”操作,多么痛的领悟!有中间表的话还是非常便利的,低耦合在哪里

    都受欢迎。

    展开全文
  • 简单介绍 首先我们先了解一下什么叫虚拟表虚拟表,顾名思义就是就是实际上并不存在(物理上不存在),但是逻辑上存在的表。...一般是在实体之间存在多对多的关系时,我们会创建一个中间表实体来给它们两个实体建立...

    简单介绍

    首先我们先了解一下什么叫虚拟表虚拟表,顾名思义就是就是实际上并不存在(物理上不存在),但是逻辑上存在的表。
    在MYSQL中存在三种虚拟表:临时表、内存表、视图

    1、基本表

    基本表是本身独立存在的表,在SQL中一个关系就对应一个表。

    2、中间表

    中间表它主要是用来兼容数据,建立映射关系,来兼容新老数据表的数据。一般是在实体之间存在多对多的关系时,我们会创建一个中间表实体来给它们两个实体建立起联系,时这个中间表实体与其他两个实体形成一对多的关系,这样可以有效的降低数据的冗余。
    比如:我们现在有一个学生表和课程表,这两个实体显然是一种多对多的关系,这时候我们就可以引入一个学生课程表来将他们联系起来,这个表我们可以将学生表和课程表的主键作为它的外键,这要学生表和课程表与学生课程表就是一个一对多的关系,简化了表关系否复杂度。

    3、临时表

    临时表是建立在系统临时文件夹中的表,如果使用得当,完全可以像普通表一样进行各种操作。 临时表的数据和表结构都储存在内存之中,退出时,其所占的空间会自动被释放。
    临时表又分为外部临时表和内部临时表。

    1、外部临时表

    通过CREATE TEMPORARY TABLE 创建的临时表,这种临时表称为外部临时表。这种临时表只对当前用户可见,当前会话结束的时候,该临时表会自动关闭。这种临时表的命名与非临时表可以同名(同名后非临时表将对当前会话不可见,直到临时表被删除)

    创建临时表的两种方式:

    CREATE TEMPORARY TABLE tmp_table (name VARCHAR(10) NOT NULL,    value INTEGER NOT NULL)    
    
    CREATE TEMPORARY TABLE tmp_table SELECT * FROM table_name
    

    2、内部临时表

    内部临时表是一种特殊轻量级的临时表,用来进行性能优化。内部临时表有两种类型:一种是HEAP临时表,这种临时表的所有数据都会存在内存中,对于这种表的操作不需要IO操作。另一种是OnDisk临时表,顾名思义,这种临时表会将数据存储在磁盘上。OnDisk临时表用来处理中间结果比较大的操作。如果HEAP临时表存储的数据大于MAX_HEAP_TABLE_SIZE(详情请参考MySQL手册中系统变量部分),HEAP临时表将会被自动转换成OnDisk临时表。OnDisk临时表在5.7中可以通过INTERNAL_TMP_DISK_STORAGE_ENGINE系统变量选择使用MyISAM引擎或者InnoDB引擎。

    创建内部临时表

    CREATE TEMPORARY TABLE tmp_table (name VARCHAR(10) NOT NULL,    value INTEGER NOT NULL)  TYPE=HEAP
    

    4、派生表

    派生表是从SELECT语句返回的虚拟表。派生表类似于临时表,但是在SELECT语句中使用派生表比临时表简单得多,因为它不需要创建临时表的步骤。
    当SELECT语句的FROM子句中使用独立子查询时,我们将其称为派生表。
    与子查询不同,派生表必须具有别名,以便稍后在查询中引用其名称。 如果派生表没有别名,MySQL将发出错误
    示例
    orders表和orderdetails表中获得2013年销售收入最高的前5名产品。
    在这里插入图片描述
    在这里插入图片描述

    5、视图

    视图是从一个或几个基本表导出的表。视图本身不存在独立存储在数据库中,是一个虚表。即数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍然存放在导出视图的基本表中。视图在概念上基本与表等同。视图在概念上与基本表等同,用户可以在基本表那样使用视图,可以在视图上再定义视图。
    如何创建视图

    create view view_name as
    # 这里写SQL语句
    
    展开全文
  • 今天详细介绍一下数据仓库中的维度表,事实表与中间表: 什么是数据仓库? 数据仓库是决策支持系统(dss)和联机分析应用数据源的结构化数据环境。提数据仓库不得不提一下关系型数据库,关系型数据库主要是用来...

    今天详细介绍一下数据仓库中的关于表的一些知识点:


    什么是数据仓库?

    数据仓库是决策支持系统(dss)联机分析应用数据源的结构化数据环境。提数据仓库不得不提一下关系型数据库,关系型数据库主要是用来支撑即时操作,对数据库的性能和质量要求都比较高,通常设计操作型数据库的都要遵循3F范式的约束,具有ACID特性;而数据仓库的数据是来源于即时操作产生的数据,数据仓库的特征在于面向主题、集成性、稳定性和时变性,遵循CAP理论,但是只能满足其中两个,即CA或者CP或者AP。

    注释:
    ACID:
    1. 原子性(Atomicity) :整个事务(就是Transaction)中的所有操作,要么全部完成,要么全部不完成;
    2. 一致性(Consistency):事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务有多少。
    3. 隔离性(Isolation): 隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。
    4. 持久性(Durability):在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

    CAP:

    1. 一致性(Consistency):任何一个读操作总是能读取到之前完成的写操作结果,也就是在分布式环境中,多点的数据是一致的;
    2. 可用性(Availability):每一个操作总是能够在确定的时间内返回,也就是系统随时都是可用的。
    3. 分区容忍性(Partition Tolerance): 在出现网络分区(比如断网)的情况下,分离的系统也能正常运行

    什么是维度表?

    维度表指的是分析角度,类似于业务系统的主数据表,比如“产品”、“用户”、“时间”等。

    什么是事实表?

    实事表类似于业务系统的交易数据表,比如“用户购买明细”、“用户开票明细”等。

    那么什么是中间表呢?

    简单来说,中间表是数据库中专门存放中间计算结果的数据表。

    鉴于网上关于中间表的信息不算具体,中间表就多说一点。
    中间表是如何出现的?

    第一种情况,计算sql计算无法一步到位,需要经过复杂的设计,要经过几个过度才能得到想要的结果。
    第二种情况,实时计算所需要时间过长。或者因为数据量大或者因为计算太复杂,比如某一时间点前一段时间计算好结果,当到达改时间点使用中间表顶上。
    第三种情况,当数据源比较多(通常情况),需要多表混合计算整合,这时导入数据库形成中间表是必要的。

    展开全文
  • kettle中间表值映射

    千次阅读 2019-03-26 15:38:03
    kettle源表经过中间表进行值映射迁移至目标表 下面举一个列子说明流程: 这是源表、中间表和迁移后表的数据对比。 这是数据迁移整体结构。 下面开始步骤: 两个表输入分别读取源表与中间表,这里因为两张...
  • ORACLE 多表查询中间表的创建

    千次阅读 2021-02-26 15:34:08
    ORACLE 多表查询中间表的创建 表与表之间关系的分类: 1. 一对一(了解): * 如:人和身份证 * 分析:一个人只有一个身份证,一个身份证只能对应一个人 2. 一对多(多对一): * 如:部门和员工 * 分析...
  • 关于中间表

    千次阅读 2014-08-28 00:15:48
    中间表起一种如关联的作用。 比如课件和课件包,
  • Yii 两表如何通过中间表关联查询

    千次阅读 2017-08-17 11:23:48
    由于Yii文档写的确实解释不够,例子有但是参数对应什么没有进行说明举例说明: - lesson表:主键lesson_id - video表:主键video_id - 中间表lesson_video:lid,vid
  • 中间表-多对多关系的转化: 在表的使用中,经常存在多对多的关系,以订单和商品为例,一个订单对应多个商品,一个商品也对应多个订单,此时把E-R图(E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示...
  • Yii2.0 中间表查询

    千次阅读 2016-01-06 19:22:16
    yii2 中,中间表查询实现,是通过via 与 viaTable实现的。个人认为实现原理是一样的。 前提: user表 id course-enrollment表 course_id, user_id course表 id 要求:在course模型中实现查询:代码如下:via()...
  • yii2 查询时使用中间表

    千次阅读 2016-09-27 10:30:28
    其中,中间表的字段user_id和service_id一一对应,想要查询每个用户对应的服务,这里使用到的是vaitable方法,代码如下:class xx { public function getService() { return $this->hasM
  • SpringDataJpa创建中间表

    2020-05-27 21:27:39
    //joinColumns 配置中间表的主列 //inverseJoinColumns=@JoinColumn(name="t_roleId") 创建中间表的副列 @ManyToMany(fetch=FetchType.EAGER) @JoinTable(name="t1_user_permission",joinColumns=@JoinColumn...
  • 一、中间表-多对多关系的转化实际中,经常存在多对多关系。以订单和商品为例,一个订单对应多个商品,一个商品也对应多个订单。此时在将E-R图转化为关系模型时,需要引入中间表(也叫做连接表)。中间表包含两个实体...
  • SpringData Manytomany 中间表添加额外字段Course跟user是两张多对多关联表添加中间表实体类,表名跟多对多插入的中间表一致说明参数说明 Course跟user是两张多对多关联表 //省略部分不相关代码以及getter跟setter /...
  • 这两张表是 ABP 框架内的表,因为AbpUsers 用户主键现在是 long,新增了一个 Guid 类型的PrimaryId 字段后,对外就不再传递 long 类型的主键,所以就出现了修改这两张中间表的需求。下面是扩展 UserRole 的实现过程...
  • 大概是这样子的,我想对中间表一个操作。有三张表,一张用户表和部门表和中间表是他们ID对应关系,然后我就想对中间表添加ID关系。类似增删改查,来是实现部门下的用户,和用户属于哪个部门。
  • [图片说明](https://img-ask.csdn.net/upload/201806/03/1528023942_245734.png)如图,有张中间表,怎么通过article表的id查询article表中所有的值已经tag表中的name字段的值,name可能是多个,小弟刚入行没多久,...
  • 为什么会有这么多中间表

    万次阅读 2018-01-04 14:47:36
    中间表的由来  中间表是数据库中专门存放中间计算结果的数据表。报表系统中的中间表是普遍存在的。那么,这些中间表是如何出现的?为什么中间表会越来越多?中间表会给项目组带来什么样的困扰,如何解决这些困扰?...
  • mybatis通过中间表关联查询

    千次阅读 2018-07-05 10:50:59
    Mybatis有中间表时,多表关联查询现在有三个表: user,role,user_role根据三个表创建映射实体类:class User {private int id;private String username;private String password;//get set}class Role {private ...
  • Springboot-多表关联的建立(中间表

    千次阅读 2018-07-12 16:49:28
    场景:用户表、项目表、用户和项目中间表   多对多表的实体创建,记得在配置文件中加: spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect MyISAM和InnoDB详解:...
  • 我现在在实习,以前没则么用过中间表,有哪位大侠能教教我中间表是怎样使用的,最好有一些实例讲解。
  • Mybatis-Plus 实现有中间表的多表关联查询带分页*需求,根据文章分类id查询文章列表*一、已有表文章表文章分类表关系映射表二、Mybatis-plus分页配置三、代码实现Mapper.javaservice.javaserviceimpl.javacontroller...
  • 使用中间表配置jpa多对多

    千次阅读 2019-02-27 10:42:44
    实例如下:  要配置的表menu_editable_... 中间表menu_item_param   中间表的 item_id =&gt; menu_item.id   param =&gt; menu_editable_param.param 表结构如下 相关配置   @Enti...
  • laravel根据取中间表数据进行查询

    千次阅读 2018-11-28 15:29:19
    存在限制条件不在显示表中,在关联的中间表中,提取中间表数据进行搜索查询: public function index(Request $request) { $where = function ($query) use ($request) { if ($request-&gt;has('name') and ...
  • laravel在更新中间表和创建中间表上有没有什么好的方法啊?我是去遍历然后插入,先删除再插入更新,有没有更好的办法呢
  • select a.id,a.name, sum(case when d.STATUS=0 then 1 else 0 end) as 待处理, ...where a.id = b.Aid and c.id = b.Cid (B表是中间表,只存放a表的ID和c表的ID) 就是把这两个sql语句写在一个里面
  • 本人新手,刚学mybatis 如图 三个表中 中间表有两个外表的id 我想要查询一个购物车的系统,要查出中间表中每个uid 对应的sid的表, 还要在后面加个字段.就是库存是多少,也就是购物车单个商品的数量,语言表达不太好,勿喷...
  • Django ManyToManyField 跨越中间表查询

    千次阅读 2016-12-04 01:11:09
    1、在 django 表中用到了 manytomany 生成了中间表 pyclub_article_columnfrom django.db import models# Create your models here.class Column(models.Model): id = models.AutoField(u'序号',primary_key=True,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 719,939
精华内容 287,975
关键字:

中间表