精华内容
下载资源
问答
  • 表与表之间的关系:hasOne 一对一( $fields, $referenceModel, $referencedFields : 当前表中的字段, 对应关系模型, 对应关系模型中表的字字段 ) hasMany 一对多 ( $fields, $referenceModel, $...

    Model:

    表与表之间的关系:hasOne 一对一( $fields, $referenceModel, $referencedFields : 当前表中的字段, 对应关系模型, 对应关系模型中表的字字段 )

    hasMany 一对多 ( $fields, $referenceModel, $referencedFields : 当前表中的字段, 对应关系模型, 对应关系模型中表的字字段 )

    hasManyToMany 多对多

    belongsTo 多对一( 属于 ) ( $fields, $referenceModel, $referencedFields : 当前表中的字段, 对应关系模型, 对应关系模型中表的字字段 )

    如项目中存在命名空间 则 要在对应的关系中添加alias参数 array( 'alias' => 'namespace' )

    例:多对一

    $this->belongsTo('company_id', 'App\Models\ErpCompanys', 'id', ['alias' => 'ErpCompanys']);
    取得关联表中name信息的phalcon代码:

    public function userCarAction(){
            if($this->request->isPost()){
                $this->view->disable();
                $info = ErpCompanyCar::findFirst();
                $name = $value->ErpCompanys->name;
            }
            
        }

    官方文档地址: https://docs.phalconphp.com/zh/latest/reference/model-relationships.html#relationships-between-models



    展开全文
  • 一对一、一对多、多对多模型关系的建立和增删改查要注意的问题 一对一: 1.在维护关系的一方使用:models.OneToOneField(另一个一方模型类名称,on_delete=models.CASCADE) eg: from django.db import models ...

    一对一、一对多、多对多模型关系的建立和增删改查要注意的问题

    一对一:

    1.在维护关系的一方使用:models.OneToOneField(另一个一方模型类名称,on_delete=models.CASCADE)

    eg:

    from django.db import models
    
    class Wife(models.Model):
        name = models.CharField(max_length=10)
        age = models.IntegerField()
        
        #重写
        def __str__(self):
            return self.name
    
        #表的重命名
        class Meta:
            db_table = 'a_wife'
    
    class Husband(models.Model):
        name = models.CharField(max_length=10)
        age = models.IntegerField()
    
        #一对一关联
        o2o = models.OneToOneField(Wife,on_delete=models.CASCADE)
    
        def __str__(self):
            return self.name
    
        class Meta:
            db_table = 'a_husband'

    2.非维护关系的一方模型对象创建:

       1)变量名 = 非维护关系的一方对象模型名.对象管理器(非自定义默认为objects).create(字段名=值,...)

       2)非维护关系的一方对象模型名.对象管理器(非自定义默认为objects).create(字段名=值,...)

       3)变量名 = 非维护关系的一方对象模型名(字段名=值,...)

          变量名.save()进行保存

    维护关系一方的模型的创建:

    1)通过非维护关系一方的实例化对象关联

    变量名 = 维护关系一方模型对象名.对象管理器(非自定义默认为objects).create(字段名=值,...关联变量名=非维护关系一方实例变量名)

    2)通过对应表的外键关联

    变量名 = 维护关系一方模型对象名.对象管理器(非自定义默认为objects).create(字段名=值,...关联变量名_非维护关系一方主键字段名=非维护关系一方主键字段值)

    eg:

    # 1)
    w1=Wife.objects.create(name='小妖',age=25);
    # 2)
    Wife.objects.create(name='小妖',age=25);
    # 3)
    w3=Wife(name='小妖',age=25);
    w3.save()
    

    3.非维护关系的一方模型对象的删除:

       变量名 = 非维护关系的一方对象模型名.对象管理器(非自定义默认为objects).git(字段名=值,...)

       变量名.delete()

    eg:

    #在不维护关系的一方进行删除时:因为在维护关系的一方与其进行了关联,即在维护关系的一方有其数据的存在,所以不维护关系一方的数据删除后,维护关系的一方的与其有关联的数据也会一并删除
    #在维护关系的一方进行删除时,则不会影响不维护关系一方的表的数据
    d2=Wife.objects.get(id=2);
    
    d2.delete();
    

    4.非维护关系的一方模型对象的修改:

       先进行查找:变量名 = 非维护关系的一方对象模型名.对象管理器(非自定义默认为objects).git(字段名=值,...)

       变量名.字段名 = 修改后的值

       变量名.save()

    eg:

    h=Husband.objects.get(id=2);
    
    h.name='颙颜';
    
    h.save()
    

     

               5.其实查找问题一直贯穿其它几个操作之中。

    一对多:

    1.模型建立需要注意:多方模型内创建外键类属性,关联一方:

    变量名 = models.ForeignKey(一方模型类名称,on_delete=models.CASCADE)

    2.模型创建:

    一方:参考一对一中的创建

    多方:

    1)通过“一”方的实例化对象关联

    2)通过对应表的外键关联

    3)通过“一”方添加对象:变量名 = 一方实例化对象.多方对象模型名_set.create(字段名=值,...)

    3.查询:

    从一方查询多方:使用“多”方模型类小写_set,作为“一”方容器。

    从“多”方查询“一”方: 使用“多”方外键属性直接获取对应的“一”方实例

    4.删除、修改就是基本的操作

    多对多:

    1.多方创建模型关系

    models.ManyToManyField(另一个多方模型类,through="中间关系模型类")

    eg:

    #在中间模型类中至少有两个外键类属性,分别关联两个多方模型。
         
         class Student(models.Model):
               pass
    
         class Course(models.Model):
             name = models.CharField(max_length=10)
             stu = models.ManyToManyField(Student,through="Student_Course") # 多对多关系
    
         class Student_Course(models.Model):   # 中间模型,负责维护两个“多方”模型
             student = models.ForeignKey(Student,on_delete=models.CASCADE)  # 关联Student模型的外键
             course = models.ForeignKey(Course,on_delete=models.CASCADE) # 关联Course模型的外键
             score = models.FloatField()

    2.维护关系的和不负责维护关系的创建都是通过基本的创建方式实现

    第三方关系表的创建则可以用实例化对象关联和外键值关联

        #使用实例化对象关联
           sc1 = Student_Course.objects.create(student=stu1,course=course1,score=85)
        #使用外键值关联
           sc3 = Student_Course.objects.create(student_id=3,course_id=1,score=69)

    3.查询:

    从不负责的多方查询另一个多方

        #例如:1号学生选的课程
            student1 = Student.objects.get(id=1)
            courses = student1.course_set.all()  # 对方模型类小写_set

    从负责关联的多方查询另一个多方
           

        #例如:查询选择2号课程的学生
           course2 = Course.objects.get(id=2)
           students = course2.stu.all()  # stu为关联类属性

    4.修改和删除就是基本的操作

    展开全文
  • 数据库中的数据表之间的关系包括一对一,一对多,多对多,它们分别使用关键字OneToOneField,ForeignKey,ManyToManyFiled进行定义,之前已经写了一对多,多对多介绍以及使用,准备再找一个时间写一下它们之间的一个...

       数据库中的数据表之间的关系包括一对一,一对多,多对多,它们分别使用关键字OneToOneField,ForeignKey,ManyToManyFiled进行定义,之前已经写了一对多,多对多介绍以及使用,准备再找一个时间写一下它们之间的一个区别,这三种关系中比较让你不好理解的可能就是一对一和一对多的区别了,暂时按下不表

         首先还是举一个比较常见的一对一的关系:银行账户(Account)和联系人(Contact),一个银行账户对应一个联系人,而一个联系人也只对应一个账户

         在models.py创建数据模型:

              这里创建了两个数据模型一个是Account(账户)里面包含三个属性username,password,register_date,另外一个是Contact(联系人)包含了四个属性,address(联系人地址),code(邮编),mobile(联系人手机)以及关联两张表的外键account

           OneToOneField的第一个参数是被关联的模型的名称,第二个参数表示级联删除,这个已经在之前的博客里面讲过了,当Account数据表里面的数据被删除后Contact里面的数据也随着被删除

             接下来执行数据迁移命令,并查看sql语句:

             

        那么一对一关系中如何进行对数据的操作,现在在python  shell中进行演示: 

         这里主要进行的数据的添加和在一对一关系中如何正向查询和反向查询

        数据添加操作:

         from blog.models import Account,Contact

         a1 = Account.objects.create(username='leeyongbard',password='123')

         a1.save()

        c1 = Contact.objects.create(address='zh',code='45000',mobile='15735896033',account=a1)

        c1.save()

        数据表如下:

        

       查询操作:

       正向查询:通过账户查询对应的联系人的信息

      a1.contact.address

      a1.contact.code


    反向查询通过联系人查询账户信息:

      

     删除操作:

    删除账户信息,则对应的联系人信息也会被删除:

    a1.contact.delete()


      

    展开全文
  • 一、概念模型  (1)对象模型:可以双向关联,而且引用的是对象,而不是一个主键!    (2)关系模型:只能多方引用一方,而且引用的只是主键,而不是一整行... (2)一对一关系 (3)多对多关系

    一、概念模型

     (1)对象模型:可以双向关联,而且引用的是对象,而不是一个主键!

      
     (2)关系模型:只能多方引用一方,而且引用的只是主键,而不是一整行记录。在数据库中表!

     

    二、概念模型在数据库表中的约束

     

    (1)多对一关系,只需要在多方使用一个独立的列来引用1方的主键即可   

     

     (2)一对一关系




    (3)多对多关系





    展开全文
  • 数据库中,一对一关系:从表的主键既是外键。 CREATE TABLE hasbend( -- 创建主表 hid INT PRIMARY KEY auto_increment, -- 指定字段 hname VARCHAR(50) ); ALTER TABLE hasbend -- 修改表名 REMOVE TO ...
  • 关系,关系模式,关系模型区别和联系

    万次阅读 多人点赞 2019-12-18 09:40:11
    关系模型:关系模型由关系数据结构,关系操作集合,关系完整性约束三部分组成. 关系和关系模式的区别 关系模式是型,关系是值,关系模式关系的描述 关系是关系模式在某个时刻的状态或者内容,关系模式是静态的,稳定...
  • 创建一个一对一关系图 如图: 三.创建一个一对多关系图 如图: 自此已经完成,有些人感觉这里有虚线看着很难受,我们可以这样:进入【视图】,取消勾选“分页符”就OK了,如图: 取消勾选后,如图: ...
  • 关系模型

    千次阅读 2018-07-11 18:31:41
    关系模型 关系模型组成的三要素 ...关系模型的完整性规则是关系的某种约束条件 实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动...
  • 分析他们之间的关系 1个订单只属于个用户 个用户可以拥有很多订单 2 个订单里面有多个订单项 个订单项只属于个订单 3 个订单项只属于个商品 个商品可以有很多个订单项 ...
  • 1. 一对一的表,两表的属性实际上完全可以合并成一个表,共用一个主键即可; 2. 一对多的表,可以设中间关联表,也可以将关联表并入“多”这头;若设独立关联表,则可引入“多”这头的主键作为其主键,也可另立主键...
  • 假设有 A,B 两个实体,首先判断一个 A 对应...如果两边都是 1:1,那么 A 与 B 就是一对一关系; 如果两边只有一个 1:n,那么 A 与 B 就是一对多的关系; 如果两边都是 1:n,那么 A 与 B 就是多对多的关系 ...
  • 2.关系模式 回答以下问题,完成实验内容: 1.设某汽车运输公司数据库中有三个实体集。是“车队”实体集,属性有车队号、车队名等;二是“车辆”实体集,属性有车牌照号、厂家、出厂日期等;三是“司机”实体集...
  • 我们平时开发个互联网项目的流程是:需求设计、数据库设计、功能设计、项目架构、技术选型、项目开发。数据库设计是我们项目的基石,个中大型项目,要有个良好的数据库设计,才能走得更远。个项目如果数据库...
  • 一对一关系示例:一个学生对应一个学生档案材料,或者每个人都有唯一的身份证编号。 一对多关系示例:一个学生只属于一个班,但是一个学院有多名学生。 多对多关系示例:一个学生可以选择多门课,一门课也有多名...
  • 转自:https://blog.csdn.net/zhongshan_c/article/details/8210196数据库建表-- 一对多/多对一/一对一/多对多 关系 关联映射:一对多/多对一存在最普遍的映射关系,简单来讲就如球员与球队的关系;一对多:从...
  •  本来数据库一对一、一对多、多对多关系并不复杂,但是最近在理解的时候感觉又感觉...1、一对一关系实例  * 一个人对应一张身份证,一张身份证对应一个人 2、一对多关系实例  * 一个班级拥有多个学生,一个学生...
  • 如何求关系模式的候选码

    万次阅读 多人点赞 2017-06-20 10:39:07
    首先来看候选码的定义:若关系中的某属性组的值能唯一地标识个元组,则称该属性组为候选码。 若W是候选键,则必须满足两个条件:W的闭包是U;W没有冗余。 设关系模式R中U=ABC.......等N个属性,U中的属性在FD中...
  • 就数据库而言,实体往往指某类事物的集合。...一对一(如一个学生对应一个档案,一个档案对应一个学生); 一对多,多对一; 多对多; 数据库中一对一的实现方式: (1)唯一外键方式:在A和B任...
  • 浅析如何把ER模型转换为关系模式

    万次阅读 多人点赞 2020-05-12 10:52:22
    本篇文章讲解的内容是“浅析如何把ER模型转换为关系模式”。在做ER图题目时,有些同学还是经常会做错,最主要原因是没有理解他们之间转换的原理。本文通过理论分析和例题来浅析这块知识点,当理解后,可以趁热打铁,...
  • Flask04-模型一对一,一对多,多对多

    万次阅读 2018-06-23 23:22:29
    1. 一对一关系主要通过一个 uselist=False 来约束, 因为在一对多中通过 查询得到的是一个列表, 所以, uselist=False禁用列表, 使我们只能查找到一个, 就构成了一对一关系人和身份证的一对一一关系 ​ from flask_...
  • 通过对数据表进行主外键的设置,实现实体类之间一对一、一对多、多对多的等关系模型。以下是Main、Main_Ext、Children三个表, Main kid name value note         Main_Ext ...
  • powerdesigner物理模型怎么设置一对多、多对多、一对关系
  • 一、目的:测试再EntityFrameWorkCore中如何建立一对一、一对多和多对多模型 ...示例:学生和桌子的一对一关系:每个学生需要对应一个桌位信息,桌位信息不用包含学生信息 public class Desk { publ...
  • E-R图转化为关系模型

    万次阅读 多人点赞 2019-06-11 22:29:48
    个实体集转换为关系模型中的个关系,实体的属性就是关系的属性,实体的码就是关系的码,关系的结构是关系模式。 关系、关系模式等名词的解释 二、实体集间联系的转换规则 1、1:1联系的转换方法 方法...
  • 实体型转换为关系模式

    万次阅读 2017-03-30 11:38:15
    1.个实体型转换为关系模式。实体的属性就是关系的属性。实体的码就是关系的码。 2.个联系转化为关系模式,与该联系相连的各实体的码以及联系的属性转化为关系的属性,该关系的码则有三种情况: 若联系...
  • 原文指路:添加链接描述 数据:数据就是数据库中存储的基本数据,比如学生的学号、学生的班级 数据库:存放数据的仓库 数据库管理系统:数据库软件,如MySQL、Oracle ...比如学号是学生的码,个学号唯一标识名学...
  • 关系模式关系关系数据库

    千次阅读 2020-03-11 22:13:06
    关系模式是型、关系是值,关系模型关系的描述(元组集合的结构、完整性约束条件)是静态的、稳定的;关系是关系模式在吗某时刻的状态或内容,是动态的、随时间不断变化的;关系数据库是在给定应用领域中所有关系...
  • E-R图联系转换为关系模式

    千次阅读 多人点赞 2019-05-19 20:56:15
    将E-R图一对一联系,一对多联系,多对多联系转换为关系模式的联系

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,673,983
精华内容 669,593
关键字:

一对一关系模型