精华内容
下载资源
问答
  • Laravel 关联关系

    千次阅读 2020-01-04 18:09:25
    学习且熟练使用laravel的关联关系, 帮助快速开发. 2. 学习/操作 2.1 介绍 https://xueyuanjun.com/post/19975 //laravel 关联关系, 建议认真阅读两遍, 然后实践至少一遍. ...

    1. 应用场景

    学习且熟练使用laravel的关联关系, 帮助快速开发.

    2. 学习/操作

    2.1 介绍

    https://xueyuanjun.com/post/19975  //laravel 关联关系, 建议认真阅读两遍, 然后实践至少一遍.

    https://xueyuanjun.com/post/8867.html#toc_5

    https://laravel.com/docs/6.x/eloquent-relationships  //官网文档  Eloquent: Relationships

     

    简单说:只有两种关系

    从属关系: 一对一 [One To One], 一对多[One To Many 也是多对一 One To Many (Inverse)]

    多对多关系: 多对多 [Many To Many]

     

     

    2.2 实践 [标注开发中推荐使用的方式]

    1. 查询

    TBD

     

    2. 新增

    TBD

     

    3. 更新

    TBD

     

    4. 删除

    TBD

     

     

    后续补充

    ...

    3. 问题/补充

    1. 什么是渴求式加载? 以及内部实现的原理, 执行的SQL是什么样子的?

    TBD

     

     

    2. 懒惰式加载与渴求式加载是什么关系?

    TBD

     

    3. 关联方法 Vs. 动态属性的区别?

    TBD

     

    ...

    4. 参考

    https://xueyuanjun.com/post/19975  //laravel 关联关系

    ttps://laravel.com/docs/6.x/eloquent-relationships  //官网文档 Eloquent: Relationships

    后续补充

    ...

    展开全文
  • MySQL关联关系

    千次阅读 2017-07-12 23:48:05
    关联关系 在开发中,需要根据实体的内容设计数据表,实体间会有各种关联关系,所以,根据实体设计的数据表之间,也存在着各种关联关系。 MySQL中,数据表的关联关系分为三种一对一一对一关系,在实际生活中比较...

    关联关系
    在开发中,需要根据实体的内容设计数据表,实体间会有各种关联关系,所以,根据实体设计的数据表之间,也存在着各种关联关系。
    MySQL中,数据表的关联关系分为三种

    一对一

    一对一关系,在实际生活中比较常见
    比如,人与身份证之间,就是一对一的关系,一个人对应一张身份证,一张身份证只能匹配一个人。

    建立外键,首先,要分清主从关系,从表需要主表的存在才有意义,身份证需要人的存在,才有意义,因此,人为主表,身份证为从表,要在身份证中建立外键。

    注意,这种方法关系在数据库中并不常见,因为,这种方式存储的信息通常会放在一个表中。
    在实际开发中,一对一关联关系,可以应用于以下几个方面
    1、分割具有很多列的表
    2、由于安全原因,而隔离表的一部分
    3、保存临时的数据,并且,可以毫不费力的通过删除该表,而删除这些数据

    多对一

    多对一是数据表中,最常见的一种关系
    比如,员工和部门之间的关系,一个部门可以有多个员工,但是,一个员工从属于一个部门,部门表中的一行在员工表中,可以有许多匹配行,但是,员工表中的一行,在部门表中只能有一个匹配行。

    建立外键,在多对一的表关系中,应该将外键建在多的一方,否则,会造成数据冗余。

    多对多

    多对多也是数据表中的一种关系
    比如,学生与课程之间的关系,一个学生可以选择多门课程,一门课程可以供多个学生选择,学生表中的一行,在课程表中可以有许多匹配行,课程表中的一行,在学生表中也有许多匹配行

    通常情况下,实现这种关系,需要定义一张中间表,称为连接表,该表会存在两个外键,分别参考课程表和学生表
    注意,连接表中的两个外键是可以重复的,但是,这两个外键之间的关系,是不能重复的,所以,这两个外键又是连接表的联合主键

    展开全文
  • 新建“架构设计器”编辑页,将要 查看表关系 的表,拖到 “架构设计器”编辑页。 如果关联关系已加上。拖动后,自动可见 可视化的 表之间 关联关系,图形界面。

    新建“架构设计器”编辑页,将要 查看表关系 的表,拖到 “架构设计器”编辑页。

    如果关联关系已加上。拖动后,自动可见 可视化的 表之间 关联关系,图形界面。


    快捷删除 表关联关系:



    展开全文
  • MySQL之关联关系

    千次阅读 2018-11-03 13:09:47
    所以根据实体设计的数据表之间也存在着各种关联关系,MySQL中数据表的关联关系有三种。 2 关联关系 2.1 多对一 多对一是数据表中最常见的一种关联关系。例如部门和员工之间的关系,一个部门可以有多个员工,而一...

    1 简介

    在实际开发中,需要根据实体的内容设计数据表,实体间会有各种关联关系。所以根据实体设计的数据表之间也存在着各种关联关系,MySQL中数据表的关联关系有三种。

    2 关联关系

    2.1 多对一

    多对一是数据表中最常见的一种关联关系。例如部门和员工之间的关系,一个部门可以有多个员工,而一个员工不能属于多个部门,也就是说部门表中的一行在员工表中可以有许多匹配行,但员工表中的一行在部门表中只能有一个匹配行。
    表之间的关系是由外键建立的。在多对一的表关系中,应该将外键建立在多的一方,否则会造成数据的冗余。

    注意:可以在多的一方设置外键保存另外一方的主键。

    2.2 多对多

    多对多也是数据表中一种关系,比如学生和课程的关系,一个学生可以选择多门课程,当然一门课程也可以供多个学生选择,即学生表中的一行在课程表中可以有许多匹配行,课程表中的一行在学生表中也有许多匹配行。
    通常情况下,为了实现这种关系,需要定义一张中间表,称为连接表,该表会存在两个外键,分别参照课程表和学生表。在多对多的关系中,需要注意:连接表的两个外键都是可以重复的,但是两个外键之间的关系是不能重复的,所以这两个外键又是连接表的联合主键。
    实际生活中,学生和老师的关系,也属于多对多。

    2.3 一对一

    一对一关系在实际生活中比较常见,例如人与身份证之间的关系就是一对一的关系,一个人对应一张身份证,一张身份证只能匹配一个人。如何在数据表中建立这种关联关系呢?
    首先,要分清主从关系,从表需要主表的存在才有意义,身份证需要人的存在才有意义,因此人为主表,身份证为从表。要在身份证表中建立外键。由实际经验克制,身份证中的外键必须是非空唯一的,因此通常会直接用从表(身份证表)中的主键作为外键。
    一对一的关系,主要可以运用于以下几个方面。
    1, 分割具有很多列的表
    2, 由于安全原因而隔离表的一部分
    3, 保存临时的数据,并且可以毫不费力的通过删除该表而删除这些数据。

    2.4 案例演示

    2.4.1 材料

    mysql> create table grade (
        -> id int(4) not null primary key,
        -> name varchar(36)
        -> );
    Query OK, 0 rows affected (0.56 sec)
    
    mysql> create table student (
        -> sid int(4) not null primary key,
        -> sname varchar(36),
        -> gid int(4) not null
        -> );
    Query OK, 0 rows affected (0.41 sec)
    

    首先在表student和表grade中添加外键约束来建立两个表的关联关系。关于外键的定义、作用、添加和删除可以参见博客

    https://blog.csdn.net/lk142500/article/details/83590862

    mysql> desc grade
        -> ;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id    | int(4)      | NO   | PRI | NULL    |       |
    | name  | varchar(36) | YES  |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
    2 rows in set (0.00 sec)
    
    mysql> desc student;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | sid   | int(4)      | NO   | PRI | NULL    |       |
    | sname | varchar(36) | YES  |     | NULL    |       |
    | gid   | int(4)      | NO   |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
    rows in set (0.00 sec)
    

    2.4.2 建立关联关系

    mysql> alter table student add constraint FK_ID foreign key(gid) references gra
    Query OK, 0 rows affected (1.31 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> desc grade;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id    | int(4)      | NO   | PRI | NULL    |       |
    | name  | varchar(36) | YES  |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
    2 rows in set (0.00 sec)
    
    mysql> desc student;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | sid   | int(4)      | NO   | PRI | NULL    |       |
    | sname | varchar(36) | YES  |     | NULL    |       |
    | gid   | int(4)      | NO   | MUL | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
    3 rows in set (0.00 sec)
    

    上述代码片段表名已经建立了student表和grade表的关联关系并且已经成功添加外键约束。

    mysql> show create table student;
    +---------+--------------------------------------------------------------
    | Table   | Create Table
    +---------+--------------------------------------------------------------
    | student | CREATE TABLE `student` (
      `sid` int(4) NOT NULL,
      `sname` varchar(36) DEFAULT NULL,
      `gid` int(4) NOT NULL,
      PRIMARY KEY (`sid`),
      KEY `FK_ID` (`gid`),
      CONSTRAINT `FK_ID` FOREIGN KEY (`gid`) REFERENCES `grade` (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    +---------+--------------------------------------------------------------
    row in set (0.00 sec)
    

    从查询结果看,student表的外键约束已经成功添加。此时表student和表grade之间是多对一的关系。

    2.4.3 添加数据

    因此外键列只能插入参考列存在的值,所以要外两个表添加数据,就需要先为主表grade添加数据,具体如下:

    mysql> insert into grade (id, name) values(1, "软件一班");
    Query OK, 1 row affected (0.16 sec)
    
    mysql> insert into grade (id, name) values(2, "软件二班");
    Query OK, 1 row affected (0.16 sec)
    mysql> select * from grade;
    +----+--------------+
    | id | name         |
    +----+--------------+
    |  1 | 软件一班     |
    |  2 | 软件二班     |
    +----+--------------+
    3 rows in set (0.00 sec)
    

    可以看到在grade班级表中已经插入了两条数据,添加的主键id为1和2,由于student表的外键与grade表的主键关联,因此在student表中添加数据时,gid的值只能是1或2,不能用其他的值。

    mysql> insert into student(sid, name, gid) values(1, "王红", 1);
    ERROR 1054 (42S22): Unknown column 'name' in 'field list'
    mysql> insert into student(sid, sname, gid) values(1, "李青", 1);
    Query OK, 1 row affected (0.12 sec)
    
    mysql> insert into student(sid, sname, gid) values(1, "李青", 1);
    ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
    mysql> insert into student(sid, sname, gid) values(2, "王红", 1);
    Query OK, 1 row affected (0.21 sec)
    mysql> insert into student(sid, sname, gid) values(3, "赵云", 2);
    Query OK, 1 row affected (0.09 sec)
    
    mysql> insert into student(sid, sname, gid) values(4, "马云", 2);
    Query OK, 1 row affected (0.12 sec)
    
    mysql>
    

    如果插入了grade表中不存在id值,报错如下

    mysql> insert into student(sid, sname, gid) values(3, "李云龙", 5);
    ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`test`.`student`, CONSTRAINT `FK_ID` FOREIGN KEY (`gid`) REFERENCES `grade` (`id`))
    mysql>
    

    上述的代码片段中两个表之间的数据已经有了关联性。例如要查询软件一班有哪些学生,需要先查找软件一班的id,然后根据这个id查询该班级中有哪些学生。具体步骤如下:

    mysql> select id from grade where name="软件一班";  //MySQL支持单引号和双引号中文
    +----+
    | id |
    +----+
    |  1 |
    +----+
    1 row in set (0.00 sec)
    

    然后再student表中查询gid=1的学生,即软件一班的学生。

    mysql> select sname from student where gid=1;
    +--------+
    | sname  |
    +--------+
    | 李青   |
    | 王红   |
    +--------+
    2 rows in set (0.05 sec)
    

    2.4.4 删除数据

    上一部分简单阐述了如何为关联表添加数据,在某些情况下还需要删除关联表中的数据。例如学校的软件一班取消了,就需要在数据库中将该班级以及该班级的学生一起删除。由于grade表和student表中存在关联关系,参照列被参照的的值不能被删除,因此在删除软件1班时,一定要先删除该班级的所有学生,然后再删除班级。如果直接删除grade表中仍存在参照关系的记录时报错如下:
    m

    ysql> delete from grade where id=1;
    ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`test`.`student`, CONSTRAINT `FK_ID` FOREIGN KEY (`gid`) REFERENCES `grade` (`id`))
    正确删除过程如下:
    mysql> select * from student;
    +-----+--------+-----+
    | sid | sname  | gid |
    +-----+--------+-----+
    |   1 | 李青   |   1 |
    |   2 | 王红   |   1 |
    |   3 | 赵云   |   2 |
    |   4 | 马云   |   2 |
    +-----+--------+-----+
    4 rows in set (0.00 sec)
    
    mysql> delete from student where gid = 1;
    Query OK, 2 rows affected (0.15 sec)
    mysql>  delete from grade where id=1;
    Query OK, 1 row affected (0.19 sec)
    

    上述过程为正确的删除关联表的过程。

    注意:在两个具有关联关系的表中删除数据时,一定要先删除从表中的数据,然后删除主表中的数据,否则会报错。

    另外,在实际情况中,想要删除”软件一班”,并不需要删除”软件一班”的学生,可以将表student中”李青”,”王红”的gid改为NULL,只要主表中该列没有被参照就可以删除。但是由于在建表时,gid字段有非空约束,所以就只能将”李青”,”王红”的记录删除。

    3 总结

    本文详细的讲述了在MySQL使用过程中的关联关系的定义,演示了关联表中数据的添加和删除的过程

    4 参考

    传智博客MySQL数据库入门

    5 文档下载

    https://download.csdn.net/download/lk142500/10762064

    展开全文
  • 关联关系和依赖关系

    千次阅读 多人点赞 2016-11-04 01:00:23
    1、 关联关系 类A关联类B的意思是,如果实例化一个A类的对象,同时,会有一个B类的对象被实例化。简言之,B作为A的属性存在。如下: [java] view plain copy   class A{   ...
  • laravel 关联关系之多态关联

    千次阅读 2018-04-17 02:07:36
    文章、作者与收藏的关联关系:收藏既可以是对文章的收藏,也可以是对作者的收藏 表:artist: 字段:id name 表:article: 字段:id title content 表:favorites: 字段:id favorite_type favorite_id class...
  • UML图关联关系

    千次阅读 2018-08-03 00:32:59
    UML图关联关系 关联关系共有四种,由弱至强依次是:依赖 <关联 < 聚合<组合 依赖 从代码层面上看,被依赖的类B作为参数被类A在某个方法中...
  • UML关联关系

    千次阅读 2012-07-06 10:49:53
    UML中的关联关系其内在意思就是has a 相对于依赖关系,关联关系在代码中有所体现.上图中的关联关系在代码中体现为 其中water 中将Climate作为其中的属性. 当然,关联关系中也有双相关联     关联又分为组合,...
  • 一、关联关系 关联关系是一种结构化的关系,指一种对象和另一种对象有联系。给定关联的两个类,可以从其中的一个类的对象访问到另一个类的相关对象。在UML图中,关联关系用一条实线表示。 另外,关联可以有方向,...
  • laravel 模型关联关系 一对一关联

    千次阅读 2019-09-29 14:24:45
    Model 模型关联关系 一对一 一对一 hasOne 反向一对一 belongsTo 一对一测试 user table public function up() { Schema::create('users', function (Blueprint $table) { $table->bigIncrements('id...
  • 关联关系和依赖关系的思考

    千次阅读 2015-04-21 18:34:06
    关联关系和依赖关系的思考 从宏观上看类与类之间的关系有关联,依赖,泛化和实现。 这其中泛化和实现很好理解,关联和依赖之间的关系不好理解。 下面详细说一下这几个的意思: 1.泛化  泛化:表示类与类之间...
  • 一对一关联关系

    千次阅读 2016-01-26 15:01:32
    一对一关联关系
  • 1.在判断到底是谁维护关联关系时,可以通过查看外键,哪个实体类定义了外键,哪个类就负责维护关联关系。 JoinColumn(name="pid") 2. 在保存数据时,总是先保存的是没有维护关联关系的那一方的数据,后保存...
  • 关联关系映射——一对一关联

    千次阅读 2016-12-18 12:44:23
     Hibernate映射实体的一对一关联关系有两种实现方式:共享主键方式和唯一外键方式。所谓共享主键方式就是限制两个数据表的主键使用相同的值,通过主键实现一对一映射关系,即主键相同。所谓唯一外键方式就是一个表...
  • Hibernate学习笔记之关联关系

    千次阅读 2017-04-15 00:17:42
      关联关系是面向对象分析、面向对象设计最重要的知识,Hibernate完全可以理解这种关联关系,如果映射得当,Hibernate的关联映射将可以大大简化持久层数据的访问。关联关系大致有如下两类: 单向关系:只需单向...
  • 正在学习uml,在网上找了这篇文章学习类之间的关系,虽然作者讲的已经很清楚,但...1.种类: Generalization(泛化),Dependency(依赖关系)、Association(关联关系)、Aggregation(聚合关系)、Composition(合成关系)。
  • 依赖关系和关联关系的区别

    千次阅读 2011-05-12 10:25:00
    依赖关系、关联关系
  • 一, 关联关系  当一个类可用到,并引用到另一个类的对象时,可以用关联association, 在uml图中用实线箭头表示.  如 class myson  {  private Cparent cparent;   } 二, 聚合关系  其实和关联关系是...
  • 我想问一下在实际的项目开发中,Hibernate的关联关系和数据库表的关联关系需要同时建立吗?就是既在持久化对象里写关联关系又在数据库里建外键
  • Hibernate表关联关系小结

    千次阅读 2016-03-06 11:24:00
    Hibernate表关联关系小结
  • laravel-admin模型表单的关联关系处理不支持小驼峰写法 用商品的规格举例 商品模型Goods.php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Goods extends Model { protected $table = ...
  • 关于Power BI 关联关系可用性说明

    千次阅读 2019-01-31 21:32:19
    Power BI表单关联关系说明以及USERELATIONSHIP函数简单介绍
  • 以前在做分析时,总是感觉依赖和关联关系没有什么大的区别,或者说对于他们之间的细节还是不够清楚。   (1)依赖关系  依赖关系表示的是类之间的调用关系,即用一个类去调用另外一个类,  被调用的...
  • 原文出自:http://blog.csdn.net/soonfly/article/details/63688288 本篇主要讲关联关系:一对一关系与一对多关系。 先建5个表: DROP TABLE IF EXISTS `category`; CREATE TABLE `category` ( `id` int(10) ...
  • sql如何查看数据库表的关联关系

    千次阅读 2020-08-13 09:34:11
    不管是Navicat还是MySQL ...执行之后,Create Table这一行结果就是表的创建sql,可以将结果拷贝出来,查看表的关联关系。 通过查看表的创建sql,可以查看这个表的主键,唯一键,以及它和其他表的关联关系等信息。 ...
  • Hibernate关联关系

    千次阅读 2006-09-05 17:55:00
    在域模型钟,类与类之间最普遍的关系就是关联关系。例如,客户(Customer)和订单(Order)的关系,一个客户能发出多个订单,耳一个订单只能属于一个客户。从Order到Customer的关系是多对一关系,意味着每个Order...
  • 单据关联关系记录

    千次阅读 2014-02-19 10:43:35
    单据转换后,通常需要记录两个单据之间的关联关系,以便能够实现上下查、反写、跨级反写。 单据转换关系的记录,分为两个大部分: 在下游单据上直接记录上游源单:  K/3 Wise产品中,直接在单据体上增加源...
  • Java类之间的关联关系

    千次阅读 2016-08-10 18:05:18
    关联关系又可以细化为聚合和组合。 一、泛化(Generalization) 泛化是父类和子类之间的关系,子类继承父类的所有结构和行为。在子类中可以增加新的结构和行为,也可以覆写父类的行为。 一般用一个带空心...
  • n-n(多对多)的关联关系必须通过连接表实现。下面以商品种类和商品之间的关系,即一个商品种类下面可以有多种商品,一种商品又可以属于多个商品种类,分别介绍单向的n-n关联关系和双向的n-n关联关系。单向的n-n关联...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,453
精华内容 20,581
关键字:

关联关系