精华内容
下载资源
问答
  • 数据库一对一、一对多、多对多关系

    万次阅读 多人点赞 2018-01-10 15:54:10
    数据库一对一、一对多、多对多...1、一对一关系实例  * 一个人对应一张身份证,一张身份证对应一个人 2、一对多关系实例  * 一个班级拥有多个学生,一个学生只能够属于某个班级 3、多对多实例  * 一个学生可以
    数据库一对一、一对多、多对多关系

         本来数据库一对一、一对多、多对多关系并不复杂,但是最近在理解的时候感觉又感觉多了写新意,所以现在在来总结一下吧
    一、首先给出三种关系的实例
    1、一对一关系实例
       * 一个人对应一张身份证,一张身份证对应一个人
    2、一对多关系实例
       * 一个班级拥有多个学生,一个学生只能够属于某个班级
    3、多对多实例
       * 一个学生可以选修多门课程,一个课程可以被多个学生选修

    二、一对一关系

    一对一关系是最好理解的一种关系,在数据库建表的时候可以将人表的主键放置与身份证表里面,也可以将身份证表的主键放置于人表里面

    三、一对多关系


    • 班级是1端,学生是多端,结合面向对象的思想,1端是父亲,多端是儿子,所以多端具有1端的属性,也就是说多端里面应该放置1端的主键,那么学生表里面应该放置班级表里面的主键

    四、多对多关系

    对于多对多关系,需要转换成1对多关系,那么就需要一张中间表来转换,这张中间表里面需要存放学生表里面的主键和课程表里面的主键,此时学生与中间表示1对多关系,课程与中间表是1对多关系,学生与课程是多对多关系

    四、总结

    总而言之,最重要的关系就是1对多关系,根据面向对象思想在建表的时候将1端主键置于多端即可。


    展开全文
  • 等价关系举例 相容关系举例 偏序关系举例 等价类的定义 等价关系与等价类的例题 商集的定义 集合中的三种关系 等价关系:设R为定义在集合A上的关系,若R是自反的,对称的,传递的,则R称为等价关系 相容关系...

    目录

     

    集合中的三种关系

    等价关系举例

    相容关系举例

    偏序关系举例

    等价类的定义

    等价关系与等价类的例题

    商集的定义


    集合中的三种关系

    等价关系:设R为定义在集合A上的关系,若R是自反的对称的传递的,则R称为等价关系

    相容关系:设R为定义在集合A上的关系,若R是自反的和对称的,则R称为等价关系

    序关系(偏序关系):设A是一个集合,若A上的关系R是自反的反对称的传递的,则R是A上的偏序关系


    等价关系举例

    等价关系可以简单理解成我们实数集上的等于关系,等于关系应该算等价关系的子集。

    当然,离散数学中也对等价关系做了抽象,比如实数集上的同余模k关系。

    再抽象一点,比如通信基站之间的通信关系,通信基站A可以和自己通信(类似于我们在调试的时候在地址栏输入localhost回环地址)【自反性】,基站A可以和相邻的基站B通信,那么基站B也能和基站A通信(正常情况下)【对称性】,基站A可以和基站B通信,基站B可以和基站C通信,那么基站A通过B的中转也能和基站C通信(同样是正常情况下)【传递性】。


    相容关系举例

    集合A={cat, teacher, cold, desk, knife, by}

    定义关系r = {<x, y> | x, y∈A 且 x和y有相同的字母}

    那么r是一个相容关系。

    自己和自己有相同的字母【自反性】,如果A和B有相同的字母,那么B和A也有相同的字母【对称性】


    偏序关系举例

    设A是正整数m=12的因子集合,设≤为整除关系,求COVA

    A = {1, 2, 3, 4, 6, 12}

    “≤” = {<1, 2>, <1,3>, <1,4>, <1,6>, <1,12>, <2,4>, <2, 6>, <2, 12>, <3, 6>, <3, 12>, <4, 12>, <6, 12>, <1, 1>, <2,2>, <3, 3>,     <4, 4>, <6,6>, <12, 12>} 

    在求覆盖集之前我先说一下为什么求覆盖集,可以说求覆盖集是画哈斯图的准备工作。由于偏序关系具有反对称性,所以哈斯图可以用无向图来表示偏序关系,又由于偏序关系的传递性,所以我们在画哈斯图的时候可以不用画多余的传递边,这些传递边的消去就是覆盖集的工作内容

    COVA = {<1,2>, <1,3>, <2,4>, <2,6>, <3,6>, <4,12>, <6,12>}

    哈斯图如下


    等价类的定义

    设R为集合A上的等价关系,对任何a∈A,集合 [a]R={x | x∈A, aRx} 称为元素a形成的R的等价类

    由于等价关系满足对称性,所以也可以将定义写成 [a]R={x | x∈A, xRa}


    等价关系与等价类的例题

    例题一:设I为整数集,R={<x, y> | x mod y=k},证明R是等价关系

    证明: 对于任意 a,b,c∈I,有

    1)因为 a-a = k*0, 所以 <a, a>∈R,R满足自反性

    2)假设 a mod b = k,即有 a-b=kt , 那么 b-a=-kt , 所以<b, a>∈R, R满足对称性

    3)假设a mod b = k 且 b mod c = k,即 a-b=kt, b-c=ks,那么有 a-b+b-c=k(t+s) ,即 <a, c>∈R, R满足传递性

    综上所述,得证R是等价关系


    例题二:设关系R为整数集I上的模3同余关系,求R的等价类

    解:由例题一已经得证R是等价关系,对于模3同余关系,一共有三个等价类

    [0]R = {... , -6, -3, 0, 3, 6, ...}

    [1]R = {..., -5, -2, 1, 4, 7, ...}

    [2]R = {..., -4, -1, 2, 5, 8, ...}


    例题三:求证给定集合A上的等价关系R,对于a,b∈A,有aRb,当且仅当 [a]R=[b]R

    证明:假设 [a]R=[b]R,因为 a∈[a]R, 所以a∈[b]R, 即有aRb

    反之,若 aRb,则有 c∈[a]R => aRc => cRa => cRb => c∈[b]R

    所以有 [a]R 包含于 [b]R,

    同理可证 [b]R 包含于 [a]R

    所以有 [a]R=[b]R

    得证


    商集的定义

    对于集合A上的等价关系R,其等价类的集合称为商集,比如例题二中的商集 I/R={ [0]R, [1]R, [2]R }

    展开全文
  • 一对一Ø 一对一是将数据表“垂直切分”,其实是不常见,或不常用的。也就是 A 表的一条记录对应 B 表的一条记录,为什么要这样的设计呢,不是增加了程度的复杂性吗,然而并不一定,举例说明: 1) 一个系统...
    
    

     一对一

    Ø  一对一是将数据表“垂直切分”,其实是不常见,或不常用的。也就是 A 表的一条记录对应 B 表的一条记录,为什么要这样的设计呢,不是增加了程度的复杂性吗,然而并不一定,举例说明:

     

    1)   一个系统必然有 Employee(员工表)(包含字段:EmployeeId、姓名、性别、年龄、电话、地址等),每个员工都为一个用户,所以还有张User 表(包含字段:UserId(关联 EmployeeId)、用户名、密码、角色等),这样你会发现,整合为一张表是否不太妥当?因为,User 的记录只会在登录时用到,感觉有点违背三大范式中的“确保每列都和主键列直接关联,而不是间接关联”。

     

    2)   还有种情况,这就要根据具体的业务来决定了。如果,当一张表的字段过于太多,而很多字段可能只有在某些情况下,才会使用到,这时也可以考虑使用一对一设计。

     

    Ø  优点

    1.   便于管理、可提高一定的查询速度

    2.   减轻 CPU  IO 读写,提高存取效率。

    3.   符合数据库设计的三大范式。

    4.   符合关系性数据库的特性。

     

    Ø  缺点

    1.   增加一定的复杂程度,程序中的读写难度加大。

    一对多

    Ø  一对多,是最常见的一种设计。就是 A 表的一条记录,对应 B 表的多条记录,且 的主键作为 B 表的外键。这主要看以哪张表为中心,以上示例以表为中心,就是一对多,如果以 B 表为中心,则是多对一。举几个例子:

    1.   班级表 与 学生表,一个班级对应多个学生,或者多个学生对应一个班级。

    2.   角色表 与 用户表,一个角色对应多个用户,或者多个用户对应一个角色。

    3.   商品表 与 图片表,一个商品对应多张图片,或者多张图片对应一个商品。

    多对多关系,需要创建一个表,表中需要两个字段,分别是引用,两个多对多字段主键的外键。
         例如:
    学生表(学号,姓名,…………)主键:学号
    课程表(课程号,课程名,…………)主键:课程号
    一个学生能选多门课,一个课可以由多个学生选,即是多对多关系,
    那么成绩表就是它们之间关系的体,
    即引用成绩表(学号,课程号,成绩)。这里学号和课程号,分别是学生表和课程表中学号和课程号的外键

    mysql表的一对一/一对多/多对多联系

    1.数据库中的多对多关联关系一般需采用中间表的方式处理,将多对多转化为两个一对多。

    2.通过表的关系,来帮助我们怎样建表,建几张表。

    一对一
    一张表的一条记录一定只能与另外一张表的一条记录进行对应,反之亦然。

    学生表:姓名,性别,年龄,身高,体重,籍贯,家庭住址,紧急联系人
    其中姓名、性别、年龄、身高,体重属于常用数据,但是籍贯、住址和联系人为不常用数据
    如果每次查询都是查询所有数据,不常用的数据就会影响效率,实际又不用
    常用信息表:ID(P),姓名,性别,年龄,身高,体重
    不常用信息表:ID(P),籍贯,家庭住址,紧急联系人

    解决方案:将常用的和不常用的信息分享存储,分成两张表
    不常用信息表和常用信息表,保证不常用信息表与常用信息表能够对应上:找一个具有唯一性的字段来共同连接两张表。
    一个常用表中的一条记录永远只能在一张不常用表中匹配一条记录,反之亦然。
    一对多
    一张表中有一条记录可以对应另外一张表中的多条记录;但是反过来,另外一张表的一条记录只能对应第一张表的一条记录,这种关系就是一对多或多对一。

    母亲与孩子的关系:母亲,孩子两个实体
    母亲表:M_ID(P),名字,年龄,性别
    孩子表:C_ID(P),名字,年龄,性别
    以上关系:一个妈妈可以在孩子表中找到多条记录(也可能是一条),但是一个孩子只能找到一个妈妈,是一种典型的一对多的关系。
    但是以上设计:解决了实体的设计表问题,但是没有解决关系问题,孩子找不到母亲,母亲也找不到孩子

    解决方案:在某一张表中增加一个字段,能够找到另外一张表中的记录:在孩子表中增加一个字段指向母亲表,因为孩子表的记录只能匹配到一条母亲表的记录。
    母亲表:M_ID(P),名字,年龄,性别
    孩子表:C_ID(P),名字,年龄,性别,母亲表ID(母亲表主键,孩子表外键)
    多对多
    一对表中(A)的一条记录能够对应另外一张表(B)中的多条记录;同时B表中的一条记录也能对应A表中的多条记录

    老师和学生
    老师表 T_ID(P),姓名,性别
    学生表 S_ID(P),姓名,性别
    以上设计方案:实现了实体的设计,但是没有维护实体的关系
    一个老师教过多个学生,一个学生也被多个老师教过

    解决方案:增加一张中间关系表
    老师与学生的关系表:ID(P),T_ID,S_ID 
    老师表与中间表形成一对多的关系,而中间表是多表;维护了能够唯一找到一表的关系;
    同样的学生表与中间表也是一个一对多的关系; 
    学生找老师:找出学生ID--->中间表寻找匹配记录(多条)--->老师表匹配(一条)
    老师找学生:找出老师ID--->中间表寻找匹配记录(多条)--->学生表匹配(一条)


    展开全文
  • 一对一关系,一对多关系,多对多关系的简单理解

    专业术语的讲解太难懂,直接举例子。

    一对一关系:一个人只有一个身份证号,一个身份证号只对应一个人。  人:身份证号=1:1

    一对多关系:一个工厂里有许多员工,一个员工只能在一个工厂上班。 工厂:员工=1:N  (注意工厂才是1)

    多对多关系:一个学生可以选多门课程,一个课程下有多名学生。 学生:课程=M:N

    A和B的关系要两个方向的看,只有一个方向,不能确定是什么关系。

    展开全文
  • 表与表之间的关系:hasOne 一对一( $fields, $referenceModel, $referencedFields : 当前表中的字段, 对应关系模型, 对应关系模型中表的字字段 ) hasMany 一对多 ( $fields, $referenceModel, $...
  • Spring Data JPA 之 一对一,一对多,多对多 关系映射

    万次阅读 多人点赞 2018-06-10 17:01:10
    &amp;amp;amp;amp;amp;amp;nbsp; 一、@OneToOne关系映射 JPA使用@OneToOne来标注一对一... 这里用两种方式描述JPA的一对一关系。 一种是通过外键的方式(一个实体通过外键关联到另一个实体的主键); 另外一种...
  • 1.关系型数据库通过外键关联来建立表与表之间的关系, 2.非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定  比如 有个学生的数据:  姓名:张三,性别:男...
  • 一对一关系实例 一个人对应一张身份证,一张身份证对应一个人 一对多关系实例 一个班级拥有多个学生,一个学生只能够属于某个班级 多对多实例 一个学生可以选修多门课程,一个课程可以被多个学生选修 一对一...
  • UML类图符号 各种关系说明以及举例

    万次阅读 2016-08-11 15:00:34
    UML中描述对象和类之间相互关系的方式包括:依赖(Dependency),关联(Association),聚合(Aggregation),组合(Composition),泛化(Generalization),实现(Realization)等。 依赖(Depe
  • 一对一关系示例:一个学生对应一个学生档案材料,或者每个人都有唯一的身份证编号。 一对多关系示例:一个学生只属于一个班,但是一个学院有多名学生。 多对多关系示例:一个学生可以选择多门课,一门课也有多名...
  •  本来数据库一对一、一对多、多对多关系并不复杂,但是最近在理解的时候感觉又感觉...1、一对一关系实例  * 一个人对应一张身份证,一张身份证对应一个人 2、一对多关系实例  * 一个班级拥有多个学生,一个学生...
  • 关联映射:一对多/多对一 存在最普遍的映射关系,简单来讲就如球员与球队的关系; 一对多:从球队角度来说一个球队拥有多个球员 即为一对多 多对一:从球员角度来说多个球员属于一个球队 即...数据表间一对一关系的表现
  • 一、概念模型  (1)对象模型:可以双向关联,而且引用的是对象,而不是一个主键!    (2)关系模型:只能多方引用一方,而且引用的只是主键,而不是一整行... (2)一对一关系 (3)多对多关系
  • 一对一关系示例:一个学生对应一个学生档案材料,或者每个人都有唯一的身份证编号。 一对多关系示例:一个学生只属于一个班,但是一个学院有多名学生。 多对多关系示例:一个学生可以选择多门课,一门课也有多名...
  • 数据库中,一对一关系:从表的主键既是外键。 CREATE TABLE hasbend( -- 创建主表 hid INT PRIMARY KEY auto_increment, -- 指定字段 hname VARCHAR(50) ); ALTER TABLE hasbend -- 修改表名 REMOVE TO ...
  • 文章目录内容介绍应用示例model.py 模型定义StringRelatedFieldPrimaryKeyRelatedFieldHyperlinkedRelatedFieldSlugRelatedFieldHyperlinkedIdentityField嵌套关系(Nested relationships)可写的嵌套 serializer...
  • 耦合度举例说明 (1) 内容耦合。当个模块直接修改或操作另个模块的数据时,或个模块不通过正常入口而转入另个模块时,这样的耦合被称为内容耦合。内容耦合是最高程度的耦合,应该避免使用之。 ![内容...
  • 进程和程序之间可以形成一对一,一对多,多对一,多对多的关系,分别举例说明在什么情况下会形成这样的关系? 进程的定义 从不同的角度进程可以有不同的定义,比较典型的定义有: (1)进程是程序的一次执行过程。 ...
  • 一对一关系示例:一个学生对应一个学生档案材料,或者每个人都有唯一的身份证编号。 一对多关系示例:一个学生只属于一个班,但是一个学院有多名学生。 多对多关系示例:一个学生可以选择多门课,一门课也有多名...
  • UML中各种关系说明以及举例

    千次阅读 2007-12-26 12:31:00
    UML中描述对象和类之间相互关系的方式包括:依赖(Dependency),关联(Association),聚合(Aggregation),组合(Composition),泛化(Generalization),实现(Realization)等。依赖 (Dependency):元素A的...
  • Sql表间关系和连接查询应用举例

    千次阅读 2013-07-31 12:19:05
    最近在学Hibernate,重温sql时想到个特别好的案例(体会:不学数据库方面的编程,很难学好SQL语句,因为数据库中的数据多数是为程序调用而设计的,不明白从数据库到应用中间这个转换过程,学起来体会的不深)。...
  • Django数据库一对多数据关系

    千次阅读 2017-10-10 19:24:08
    本文主要描述Django数据中一对一的数据关系,创建app等配置不再赘述。 Django操作数据库,使用ORM ORM:关系映射对象,把传统的SQL语句封装成了类和对象的形式,在操作表中的记录时,就像在操作类和对象一样。 ...
  • json序列化的对象中存在...使用@JsonBackReference标记在有多对一或者多对多关系的属性上即可解决这个问题,举例: @JsonBackReference @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "market_id") privat
  • 举例说明数据库、二、三及BCNF范式

    万次阅读 多人点赞 2012-07-14 21:27:44
     假定选课关系表为SelectCourse(学号, 姓名, 年龄, 课程名称, 成绩, 学分),关键字为组合关键字(学号, 课程名称),因为存在如下决定关系: (学号, 课程名称) → (姓名, 年龄, 成绩, 学分) 这个数据库表不...
  • 当对象之间存在一对多关系的时候,在物理设计的时候应该选择一对多关系还是多对一关系举例来说,假设有一个订单对象,每个订单对象对应多个订单条目。这个时候我们在设计的时候有两中选择,一种是在订单对象中加入...
  • XML简介及举例

    千次阅读 2014-09-01 12:17:59
    XML简介及举例
  • 存在非主属性码的部分依赖关系 R(A,B,C) AB是码 C是非主属性 B-->C B决定C C部分依赖于B 第范式 定义:如果关系R 中所有属性的值域都是单纯域,那么关系模式R是第范式的 那么符合第模式的特点就有 1)有...
  • 学生表和课程表可以多对多 一个学生可以学多门课程 ...一门课对应一个老师: 一对一 一对多(foreign key): 学生表要关联班级表,多个学生属于一个班级. 班级是被关联的表 创建班级表 create table class...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 277,293
精华内容 110,917
关键字:

一对一的关系举例