精华内容
下载资源
问答
  • 例如用户表与老师表之间:假设一...具体操作:第一种情况:建立好这两个表的前提下,一.学生表中添加一个字段tid(用来指向teacher表的主键)二.特定数据库打开命令列界面,修改student表添加外键通用建立外键m...

    例如用户表与老师表之间:

    假设一个老师有多个学生,而每个学生只有这一个老师,老师与学生关系就是标准的一对多(1:n)。

    添加外键就是在多的地方添加外键,简单来说,就是在student学生表中添加引用老师主键的外键。

    具体操作:

    第一种情况:

    在已建立好这两个表的前提下,

    一.在学生表中添加一个字段tid(用来指向teacher表的主键)

    二.在特定数据库打开命令列界面,修改student表添加外键

    通用建立外键mysql语句如下:

    alter table student add foreign key(tid) references teacher(id);

    alter table 子表的数据表名 add foreign key(子表的外键名称) references 父表的数据表名称(父表的主键名称);

    第二种情况,还未创建表时

    一.创建一个父表(teacher),主键作为子表(student)的外键:

    create table `teacher`(

    id int primary key auto_increment,

    name varchar(20)

    )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

    2:创建子表,外键是父表的主键:

    create table `student`(

    id int primary key auto_increment,

    name varchar(20),

    tid int,

    foreign key(tid) references teacher(id)

    )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

    ps:说明一个报错,第一种情况的,必须要先在student表中建立一个tid字段,否则立刻执行alter table ...语句会报如下错:

    Cannot add or update a child row: a foreign key constraint fails (mybatis.#sql-13f0_2, CONSTRAINT #sql-13f0_2_ibfk_1 FOREIGN KEY (id) REFERENCES teacher (id))

    from lj 2020-06-23

    展开全文
  • Hibernate组件映射

    2019-06-13 13:51:24
    建立关系数据模型的一重要原则是不会导致数据冗余的前提下,尽可能减少数据库表中的数目及表之间的外键参照关系。以员工信息为例,员工信息中有员工的家庭地址信息,如果把地址信息单独放在一张表中,然后建立...

    建立关系数据模型的一个重要原则是在不会导致数据冗余的前提下,尽可能减少数据库表中的数目及表之间的外键参照关系。以员工信息为例,员工信息中有员工的家庭地址信息,如果把地址信息单独放在一张表中,然后建立员工信息表和地址信息表之间的外键关系,当每次查询员工信息时,都需要建立这两个表的连接。建立表的连接是很耗时的操作,为了提高数据库运行性能,可以把这两张表的信息整合在一张员工信息表Empinfo中。
    EmpInfo实体类:
    EmpHomeAddress实体类:

    public class EmpInfo {
        private Integer eid;
        private String ename;
        private EmpHomeAddress ehome;
        public Integer getEid() {
            return eid;
        }
        public void setEid(Integer eid) {
            this.eid = eid;
        }
        public String getEname() {
            return ename;
        }
        public void setEname(String ename) {
            this.ename = ename;
        }
        public EmpHomeAddress getEhome() {
            return ehome;
        }
        public void setEhome(EmpHomeAddress ehome) {
            this.ehome = ehome;
        }
    
    
    }
    
    public class EmpHomeAddress {
        private String ehomestreet;
        private String ehomecity;
        private String ehomeprovince;
        private String ehomezipcode;
        private EmpInfo empinfo;
        public String getEhomestreet() {
            return ehomestreet;
        }
        public void setEhomestreet(String ehomestreet) {
            this.ehomestreet = ehomestreet;
        }
        public String getEhomecity() {
            return ehomecity;
        }
        public void setEhomecity(String ehomecity) {
            this.ehomecity = ehomecity;
        }
        public String getEhomeprovince() {
            return ehomeprovince;
        }
        public void setEhomeprovince(String ehomeprovince) {
            this.ehomeprovince = ehomeprovince;
        }
        public String getEhomezipcode() {
            return ehomezipcode;
        }
        public void setEhomezipcode(String ehomezipcode) {
            this.ehomezipcode = ehomezipcode;
        }
        public EmpInfo getEmpinfo() {
            return empinfo;
        }
        public void setEmpinfo(EmpInfo empinfo) {
            this.empinfo = empinfo;
        }
    
    }
    

    EmpInfo.hbm.xml映射文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="cn.entity">
    <class name="EmpInfo" table="empinfo">
    <id name="eid" column="eid">
    <generator class="native"></generator>
    </id>
     <property name="ename" column="ENAME" type="string"></property>
    <component name="ehome" class="EmpHomeAddress">
    <parent name="empinfo"/>
    <property name="ehomestreet" column="EHOMESTREET" type="string"></property>
    <property name="ehomecity" column="EHOMECITY" type="string"></property>
    <property name="ehomeprovince" column="EHOMEPROVINCE" type="string"></property>
    <property name="ehomezipcode" column="EHOMEZIPCODE" type="string"></property>
    </component>
    </class>
    </hibernate-mapping>
    
    

    hibernate.cfg.xml大配置文件:

    <hibernate-configuration>
    
        <session-factory>
    
            <!-- Database connection settings 数据库连接设置-->
            <!-- 驱动类 -->
            <property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
            <!-- url地址 -->
            <property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
            <property name="connection.username">system</property>
            <property name="connection.password">1</property>
    
            <!-- SQL dialect  (SQL 方言) -->
            <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
    
    
            <!-- Echo all executed SQL to stdout 在控制台打印后台的SQL语句 -->
            <property name="show_sql">true</property>
            
            
            <!-- 格式化显示SQL -->
            <property name="format_sql">true</property>
            
    
            <!-- Drop and re-create the database schema on startup -->
              <property name="hbm2ddl.auto">update</property>  
              
             <!-- 支持getCurrentSession方法 -->
             <!--  <property name="current_session_context_class">thread</property> -->
            
                  <!-- 关联小配置 -->
             <mapping resource="cn/entity/EmpInfo.hbm.xml" />
             
        
        </session-factory>
    </hibernate-configuration>
    

    测试类:

    public class Tests {
        Session session;
        Transaction tx;
        
    
        @Before
        public void initDate(){
            session = HibernateUtil.getSession();
             tx= session.beginTransaction();
        }
        
        
        @After
         public void afterTest(){
             tx.commit();
             HibernateUtil.closeSession();
         }
        
        
        /**
         * 组件的映射测试
         */
    
        @Test
        public void getTest(){
            //创建一个员工对象
            EmpInfo emp=new EmpInfo();
            emp.setEname("火狐1");
            
            //创建一个员工地址对象
            EmpHomeAddress address=new EmpHomeAddress();
            address.setEhomecity("北京");
            address.setEhomeprovince("北京");
            address.setEhomestreet("五道口");
            address.setEhomezipcode("100000");
            address.setEmpinfo(emp);
            emp.setEhome(address);
            session.save(emp);
            System.out.println("ok");
        }
        
        /**
         * 查询
         */
        @Test
        public void selectTest(){
            EmpInfo emp=(EmpInfo)session.load(EmpInfo.class, 1);
            System.out.println(emp.getEname());
            
        }
    
    }
    

    在这里插入图片描述

    展开全文
  • 组件映射

    2016-09-05 16:11:00
    建立关系数据模型的一重要原则是不会导致数据冗余的前提下,尽可能减少数据库表的数目及表之间的外键参照关系。 以员工信息为例,员工信息中有员工的家庭地址信息,如果把地址信息单独放在一张表中, 然后建立...

    建立关系数据模型的一个重要原则是在不会导致数据冗余的前提下,尽可能减少数据库表的数目及表之间的外键参照关系。

    以员工信息为例,员工信息中有员工的家庭地址信息,如果把地址信息单独放在一张表中,

    然后建立员工信息表和地址信息表之间的外键参照关系,当每次查询员工信息时,都需建立者两个表的连接。

    建立表的连接是很耗时的操作,为了提高数据库运行性能,可以把这两张表的信息整合在一张员工信息表EMPINFO中。

    图为:EMPLNFO表结构

             Empinfo类和EmpHomeAddress类的整体和部分的关系

    步骤一:创建EmpHomeAddressEmpInfo

    public class EmpHomeAddress {

    private String ehomestreet;

    private String ehomecity;

    private String ehomeprovince;

    private String ehomezipcode;

    private EmpInfo empinfo;

    }

    EmpInfo创建如下:

    public class EmpInfo {

    private Integer eid;

    private String ename;

    private EmpHomeAddress ehome;

    }

    步骤二:创建配置文件EmpInfo.hbm.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="cn.happy.component">
       <class name="EmpInfo" table="EMPINFO">
           <id name="eid" column="EID">
            <generator class="native"></generator>
           </id>
           <property name="ename" column="ENAME" type="string"></property>
           <component name="ehome" class="EmpHomeAddress">
              <parent name="empinfo"/>
              <property name="ehomestreet" column="EHOMESTREET" type="string"></property>
              <property name="ehomecity" column="EHOMECITY" type="string"></property>
              <property name="ehomeprovince" column="EHOMEPROVINCE" type="string"></property>
              <property name="ehomezipcode" column="EHOMEZIPCODE" type="string"></property>
           </component>
       </class> 
    </hibernate-mapping>

    步骤三:书写测试类

    @Test
    	  public void testAdd(){
    		   Session session = HibernateUtil.getSession();
    		   Transaction tx=session.beginTransaction();
    		   //创建一个员工对象
    		   EmpInfo emp=new EmpInfo();
    		   emp.setEname("元芳");
    		   
    		   //创建一个员工地址对象
    		   EmpHomeAddress address=new EmpHomeAddress();
    		   address.setEhomecity("上海");
    		   address.setEhomeprovince("上海");
    		   address.setEhomestreet("浦东区");
    		   address.setEhomezipcode("100000");
    		   address.setEmpinfo(emp);
    		   emp.setEhome(address);
    		   session.save(emp);
    		   tx.commit();
    		   System.out.println("ok!!!");
    	  }
    

      

     

    转载于:https://www.cnblogs.com/yangronglin/p/5842662.html

    展开全文
  • 关于hibernate组件配置

    2017-02-06 22:38:00
    建立关系数据模型的一重要原则是不会导致数据冗余的前提下,尽可能减少数据库表的数目及表之间的外键参照关系。以员工信息为例,员工信息中有员工的家庭地址信息,如果把地址信息单独放在一张表中,然后建立员工...

    建立关系数据模型的一个重要原则是在不会导致数据冗余的前提下,尽可能减少数据库表的数目及表之间的外键参照关系。以员工信息为例,员工信息中有员工的家庭地址信息,如果把地址信息单独放在一张表中,然后建立员工信息表和地址信息表之间的外键参照关系,当每次查询员工信息时,都需建立者两个表的连接。建立表的连接是很耗时的操作,为了提高数据库运行性能,可以把这两张表的信息整合在一张员工信息表EMPINFO中。

    创建EmpHomeAddressEmpInfo

    public class EmpHomeAddress {

    private String ehomestreet;

    private String ehomecity;

    private String ehomeprovince;

    private String ehomezipcode;

    private EmpInfo empinfo;

    }

    EmpInfo创建如下:

    public class EmpInfo {

    private Integer eid;

    private String ename;

    private EmpHomeAddress ehome;

    }

    创建配置文件EmpInfo.hbm.xml

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE hibernate-mapping PUBLIC 

        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

    <hibernate-mapping package="cn.happy.component">

       <class name="EmpInfo" table="EMPINFO">

           <id name="eid" column="EID">

            <generator class="native"></generator>

           </id>

           <property name="ename" column="ENAME" type="string"></property>

           <component name="ehome" class="EmpHomeAddress">

              <parent name="empinfo"/>

              <property name="ehomestreet" column="EHOMESTREET" type="string"></property>

              <property name="ehomecity" column="EHOMECITY" type="string"></property>

              <property name="ehomeprovince" column="EHOMEPROVINCE" type="string"></property>

              <property name="ehomezipcode" column="EHOMEZIPCODE" type="string"></property>

           </component>

       </class> 

    </hibernate-mapping>

    最后便是测试

    转载于:https://www.cnblogs.com/wyd12138/p/6372052.html

    展开全文
  • Hibernate之组件映射

    2016-09-05 23:22:00
    答:建立关系数据模型的一重要原则是不会导致数据冗余的前提下,尽可能减少数据库表的数目及表之间的外键参照关系。以员工信息为例,员工信息中有员工的家庭地址信息,如果把地址信息单独放在一张表中,然后建立...
  • 外键 1、MySQL中,表有种引擎,一种是...2、外键是相对于主键说的,是建立表之间的联系的必须的前提 3、外键是指引用另外一个表中的一列或多列数据,被引用的列应该具有主键约束或者唯一性约束。外键用来建立...
  •  近年来,国外GIS与数据库开发商加紧了联合的步伐,共同开发全关系的GIS软件,使GIS软件能充分利用商用数据库中已经成熟的众多特性,如内存缓冲、快速索引、数据完整性和一致性保证、并发控制、安全和恢复机制及...
  • 只要准确理解一系统的业务逻辑之后才可能开发出适应其应用的应用系统来,并且系统之间模块的科学划分与结构组织都是正确理解实际应用中的业务逻辑需求的前提下完成的。 此外、利用SQL 2000建立关系数据库...
  •  JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符字符数据。这个String类提供了数值不可改变字符串。而这个StringBuffer类提供字符串进行修改。当你知道字符数据要...
  • 二叉排序树与平衡二叉树实现

    热门讨论 2010-12-26 15:25:31
    每当插入一新结点时,首先检查是否因插入新结点而破坏了二叉排序树的平衡性,若是,则找出其中的最小不平衡子树,保持二叉排序树特性的前提下,调整最小不平衡子树中各结点之间的链接关系,进行相应的旋转,使之...
  • 单片机起振电路是有晶振和两个小电容组成。 晶振作用:它结合单片机内部电路,产生单片机所必须时钟频率,单 片机一切指令执行都是建立在这个基础上,晶振提供时钟频率越 高,那单片机运行...
  • 迭代方法将车辆与桥梁分别作为两个独立子系统,通过他们之间的相互作用关系,经过多次迭代从而得到整个系统动力响应。迭代方法突出优点是将车辆和桥梁子系统作为常规结构动力学问题进行分析,可以避免时变方法...
  • 并确保同一事务处理种对相同数据的两次查询看到是相同值。 值范围: TRUE | FALSE 默认值: FALSE row_locking: 说明: 指定在表已更新或正在更新时是否获取行锁。如果设置为 ALWAYS, 只有在表被更新后才获取...
  • 千里马酒店前台管理系统V7使用手册

    热门讨论 2011-06-16 14:09:38
    同时也借鉴了国内外先进软件功能特性,吸取了几百家酒店客户反馈意见,保持千里马传统“以财务为核心、前后台一体化”基础上,进一步吸收了收益管理、客户关系管理、营销分析、决策支持等先进管理思想,...
  • java面试题典 java 面试题 经典

    热门讨论 2010-06-18 13:42:36
    12. 如何不影响子表的前提下,重建一 31 13. 解释归档和非归档模式之间的不同和它们各自的优缺点 31 14. 如何建立备份控制文件? 32 15. 给出数据库正常启动所经历的几种状态 ? 32 16. 哪个column可以...
  • 9.5.1 两个数据表的关联 178 9.5.2 3个或更多个数据表的关联 179 9.6 合并查询结果(UNION) 181 9.7 分组查询,统计函数(GROUP BY) 181 9.7.1 统计函数 182 9.7.2 统计函数GROUP_CONCAT() 183 9.7.3 对多...
  • 这样的前提下设计一教学计划编制程序。 基本要求: (1) 输入参数包括:学期总数,课程总数,一学期的学分上限,每门课的课程号(固定占3位的字母数字串)、学分和直接先修课的课程号。 (2) 允许用户指定...
  • (20) 数据库设计包括两个方面设计内容,它们是(A) A. 概念设计和逻辑设计 B. 模式设计和内模式设计 C. 内模式设计和物理设计 D. 结构特性设计和行为特性设计 (21) 下列叙述中正确是(A) A. 线性表是线性结构 B. ...
  •  EXP_FULL_DATABASE, IMP_FULL_DATABASE这两个角色用于数据导入导出工具使用。  自定义角色 Oracle建议我们自定义自己角色,使我们更加灵活方便去管理用户  创建角色 SQL> create role admin;  授权给...
  • GSP5.exe

    2020-04-01 09:16:40
    制作两个圆,一个运动圆,一个静止圆,静止外部和内部各画一个,让运动圆心分别向这两个点移动,达到两圆相切和相交效果(当然两圆内含、内切也可同样作出。只是要特别注意:选择顺序,先选...
  • 只要准确理解一系统的业务逻辑之后才可能开发出适应其应用的应用系统来,并且系统之间模块的科学划分与结构组织都是正确理解实际应用中的业务逻辑需求的前提下完成。 此外,利用MySQL建立关系数据库又是...
  • 1.3.6 DBA与开发人员的关系 44 1.4 小结 45 第2章 体系结构概述 46 2.1 定义数据库和实例 47 2.2 SGA和后台进程 52 2.3 连接Oracle 54 2.3.1 专用服务器 54 2.3.2 共享服务器 56 2.3.3 TCP/IP连接基本原理...
  • 正因为如此,业务逻辑层设计对于一个支持可扩展架构尤为关键,因为它扮演了两个不同角色。对于数据访问层而言,它是调用者;对于表示层而言,它却是被调用者。依赖与被依赖的关系都纠结业务逻辑层上,如何...
  • java 面试题 总结

    2009-09-16 08:45:34
    JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符字符数据。这个String类提供了数值不可改变字符串。而这个StringBuffer类提供字符串进行修改。当你知道字符数据要改变...
  • 这一讲中,我们主要是了解一下 Linux 概况,以及对 Linux 有一初步感性认识。 一.什么是Linux? Linux 是一以 Intel 系列 CPU(CYRIX,AMD CPU也可以)为硬件平台,完全免费 UNIX 兼容系统,完全...
  • 10g数据库体系结构权威图书,涵盖了所有最重要Oracle体系结构特性,包括文件、内存结构和进程,锁和闩,事务、并发和多版本,和索引,数据类型,以及分区和并行,并利用具体例子来充分介绍每特性,不仅...
  • 数据交换需求规格说明书

    热门讨论 2011-03-01 14:57:51
    建议使用品牌服务器,建议配置两个双核2GHZ以上处理器,2G以上内存,硬盘100G以上。 3.1.2 客户端设备 用户对设备基本无特殊要求。 3.2 支持软件 3.2.1 服务端支持软件 操作系统:Windows、Linux等主流操作系统 中 ...
  • iPhone开发秘籍(第2版)--源代码

    热门讨论 2012-12-11 13:51:22
    5.5 秘诀:视图控制器之间导航 150 5.6 秘诀:使用创意弹出选项 152 5.6.1 加载一视图控制器数组 152 5.6.2 推入临时视图 152 5.7 秘诀:演示一自定义模态信息视图 153 5.8 秘诀:选项卡栏 155 5.9 ...

空空如也

空空如也

1 2 3
收藏数 44
精华内容 17
关键字:

在两个表之间建立关系的前提