精华内容
下载资源
问答
  • 2017-02-10 16:15:27

    一对一的关系最简单,一个实体创建一张表就行了;

    一对多和多对一的关系建表原则是一样的,在多的一方用外键列引用‘一’的一方的主键,来保证两者之间的联系;

    多对多的关系,就是新创建一张中间表,以保证二者之间的联系。

    更多相关内容
  • 也就是 A 的一条记录对应 B 的一条记录,什么要这样的设计呢,不是增加了程度的复杂性吗,然而并不一定,举例说明: 1) 一系统必然有 Employee(员工)(包含字段:EmployeeId、姓名、性别、年龄、...

     一对一

    Ø  一对一是将数据表“垂直切分”,其实是不常见,或不常用的。也就是 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--->中间表寻找匹配记录(多条)--->学生表匹配(一条)


    展开全文
  • E-R图转化为关系表

    千次阅读 2020-03-22 17:49:18
    这里只列出4个关系表。 t_project(project_id,project_name) t_order(project_id,order_id,data_type,creater,creat_time,end_time,state) t_workorder(order_id,workorder_id,operator,start_time,end_ti...

    一 E-R图

    二 关系表

    这里只列出4个关系表。

    t_project(project_id,project_name)

    t_order(project_id,order_id,data_type,creater,creat_time,end_time,state)

    t_workorder(order_id,workorder_id,operator,start_time,end_time,state)

    t_workerorder_check(order_id,check_table,business_key,problem_column,problem_column_value,business_rules)

    三 转化方法参考

    https://blog.csdn.net/chengqiuming/article/details/99168453

    展开全文
  • 3、多对多可以多加一张中间,将另外两个表的主键放到这个表中(如教师和学生就是多对多的关系) 关于外键的设置: 首先,外键引用的那个列在主中必须是主键列或者唯一列。 所以1:n的肯定把外键建立在n的...
    1、一对一可以两个实体设计在一个数据库中l例如设计一个夫妻表,里面放丈夫和妻子
    2、一对多可以建两张表,将一这一方的主键作为多那一方的外键,例如一个学生表可以加一个字段指向班级(班级与学生一对多的关系)
    
    3、多对多可以多加一张中间表,将另外两个表的主键放到这个表中(如教师和学生就是多对多的关系)

    关于外键的设置:
    首先,外键引用的那个列在主表中必须是主键列或者唯一列。
    所以1:n的肯定把外键建立在n的那张表上。
    1:1,一般要看谁是主表,谁是附属表,外键当然建立在附属表中。
    n:m的情况,需要建立一个关系表,两个原表和其关系分别是1:n,1:m

     

    关于主外键及多表联系的进一步理解:

    主外键的存在是依托两个实体之间的关系而存在的; 

    比如班级与学生的关系: 

    一个班级可以有多个学生,并且一个学生只能属于一个班级,这就是一对多的关系; 

    那么设计数据库的时候就应该在学生表内存放班级的ID作为外键,为什么不在班级表内放学生呢? 

    因为,你想一想班级表内如果放学生那么记录可能就是这样: 

    1班ID 1班 xx同学id 

    1班ID  1班 xx同学id 

    .. 

    这是不允许的,班级表内班级为主键,是唯一的不允许相同记录的; 

    下面简单讲下大概建成的表结构 

    --建班级表 

    create table class( 

    classid int primary key,--定义班级ID为主键 

    classname varchar(15) 

    --建学生表 

    create table students( 

    studentid int primary key,--定义学生ID为主键 

    classid int ,--外键值,跟班级表classid 属性类型相同 

    stuname varchar(20),--学生姓名 

    ---定义外键  

    foreign key(classid) references class(classid) --本表classid是基于class表classid的外键 

    --------- 

    如上定义了主外键后,两个表间的关系就是一对多的关系了,并且学生表内的classid必须依托班级表的classid存在,也就是说外键必须要主键存在的时候才能创建,例如: 

    --在班级表为空的情况往学生表插入一条记录是不允许的: 

    insert into students(studentid,classid,stuname)values(1,1,'小明') 

    系统会抛出异常提示主键表班级表内班级ID不存在这样是不允许插入的; 

    必须要先往班级表内插入一条记录: 

    insert into class(classid,classname)values(1,'一班') 

    后才能执行插入前面一条往学生表插入信息的语句.. 

    展开全文
  • 原文:http://blog.csdn.net/lm709409753/article/details/48440401数据库实体间有三种对应关系:一对一,一对多,...多对关系示例:一学生可以选择多门课,一门课也有多名学生。这三种关系在数据库中逻辑结构处...
  • 数据库多对关系建表

    千次阅读 2019-08-26 00:45:59
    对于多对多的关系,建表的方式是有两种的,最常见的做法就是建立一张中间关系表b,关联另外两张a和c的主键,不要其他多余信息,这种做法通常的情况就是a和c中的数据不能有重复的,所以我们只能建立单独的关联...
  • 一对一、一对多、多对多模型关系的建立和增删改查要注意的问题 一对一: 1.在维护关系的一方使用:models.OneToOneField(另一一方模型类名称,on_delete=models.CASCADE) eg: from django.db import models ...
  • 案例讲解如何将ER图转化为关系模型

    万次阅读 2021-03-29 15:31:38
    要将ER图转化为关系模型,就得先弄清楚ER图中的基本元素。 如果不清楚主体、属性、键等元素分别代表什么,那么下面谈转化准则的时候,大家可能会冒出很问号。 关于ER图的基本元素,此前在这篇文章中做过详细介绍...
  • 在前篇里我们说过,ER图是描述现实世界的概念模型。 但是关系模型好像讲过。 复习一下吧 复习一下三要素:数据结构、数据操作、数据约束 分类简单的分为第一类、第二类。 第一类是概念模型。 第二类就有逻辑模型和...
  • 如何将ER图转化为关系模型(超详细、含例题)

    万次阅读 多人点赞 2019-04-09 23:00:39
    fps=1 超级感谢博主分享 本篇博文中的例题只涉及到N:M和N:M:P的转换,大家看完后可以再去看下百度文库里面的这个例题,这个例题几个转换准则都用到了。 https://wenku.baidu.com/view/33849a73a...
  • 文章目录E-R 图示例多对多联系的转换一对多关系的转换自联系一对多的自联系转换示例最终结果(采取归并有先的原则,非唯一) E-R 图示例 以下联系类型的转换注意在独立/归并的时候主键,尤其是外键的变化 多对多联系的...
  • 数据库中转化为3NF的几个分解算法

    千次阅读 多人点赞 2019-03-03 17:11:35
    【例】关系模型R<U,F>,U={A,B,C,D,E},F={A→BC,ABD→...第二步:观察U中是否有属性不在F'中的出现,如果有,则这个个属性组成一对关系R,并在原来的U中删除这些属性。而例子中U中的属性都出现...
  • 并发操作之——JAVA线程常见种状态及解释并发操作前言一、JAVA线程有种常见状态,分别是什么意思?创建(NEW):就绪(Runnable):运行(Running)阻塞(Blocked)等待阻塞:同步阻塞:等待(WAITING):超时等待(TIMED_...
  • 转自:...一对多:从球队角度来说一球队拥有多球员 即为一对多多对一:从球员角度来说多球员属于一球队 即为多对一数据间一对多关系如下图:注:一对多...
  • ER图,以及转化关系模式

    万次阅读 多人点赞 2020-06-09 22:28:53
    软考复习get一知识点 .找出条件中的实体(矩形),属性(椭圆),关系(菱形)关系分为1:1,1:N,M:N,列出ER图 2. -1:1联系的转换方法 ... -两实体分别转化为个关系模式,属性即是...
  • ER图和关系模型到MySQL数据库

    千次阅读 2020-03-02 21:01:12
    本篇主要介绍了MySQL数据库从ER图到关系模型,再到数据库的创建过程及其结构的修改。通过本篇的学习,可以掌握以下内容: ● 应用ER图和关系模型创建数据库 ● 数据库结构的修改 1、mooc数据库的ER...
  • 多对关系示例:一学生可以选择多门课,一门课也有多名学生。 这三种关系在数据库中逻辑结构处理分析: 1.一对多关系处理: 我们以学生和班级之间的关系来说明一对多的关系处理方法。 假设现有基本学生...
  • 数据库设计(一对多,多对多)

    万次阅读 多人点赞 2018-09-26 09:21:05
    目录   一、总结 二、数据设计(一对多,多对多) 三、数据库怎么设计多对多的数据   ...1、项目中小组和主题之间是多对多的 ...3、多对多的话:比如老师和学生,建立一个关系表id,老师id,学生id即可...
  • 1:n联系到关系模型的转化

    千次阅读 2018-03-23 09:29:59
    1:n联系可以转换独立的关系模型,此时与该联系相连的各实体的码及联系本身的属性均转换该联系的关系模型的属性;1:n还可以与n端对应的关系模型合并,此时只需在n端关系模型的属性中加入单方关系模型的...
  • 数据库原理-ER模型转换为关系模型

    千次阅读 2021-08-24 11:29:46
    ①若实体间联系是1:1,可以在两实体类型转换成的两个关系模式中任意一个关系模式的属性中加入另一个关系模式的键和联系类型的属性。 若实体间联系是1:n,则在n端实体类型转换成的关系模式中加入1端实体类型的键和...
  • E-R图转换为关系模型

    千次阅读 2021-01-14 11:30:04
    E-R模型如何转换成关系模型,这里我们分成三种情况进行讲解,分别是一对一,一对多和多对多。1.一对一的情况:有两种方法解决这问题。第一方法:可以单独对应一个关系模式,由各实体的主码构成关系模式,而关系...
  • 将ER模型转换为关系模型的规则

    千次阅读 2020-12-23 23:13:10
    如果转换独立的关系模式,则与该联系相连的各实体的码及联系本身的属性均转换为关系的属性,每实体的码均是该关系的候选键.(3)一1:n联系可以转换独立的关系模式,也可以与任意n端...
  • 干货 | Elasticsearch多表关联设计指南

    万次阅读 多人点赞 2019-03-24 23:45:37
    关联通常指:1对多,或者多对多。 本文以星球问题会出发点,引申出ES多关联认知,分析了4种关联关系的适用场景、优点、缺点, 希望对你有所启发,你的多关联方案选型、实战提供帮助。 1、抛出问题 1.1...
  • 1:1联系到关系模型的转化

    千次阅读 2018-03-22 09:54:46
    1:1联系可以转换独立的关系模型,此时与该联系相连的各实体的码及联系本身的属性均转换该联系的关系模型的属性;1:1联系还可以与任意一端对应的关系模型合并,此时只需要在该关系模型的属性中加入另一...
  • 上图,总模型p值0.003,说明整个模型injisu的预测是有统计学意义的(变量之间相关的),分项来看,只有组别具有统计学意义; 秩变换分析: 当变量转换无法解决问题时,可以使用秩变换:转换----个案排序-----将...
  • 设某商业集团数据库中有三实体集。一是“商店”实体集,属性有商店编号、商店名、地址等;二是“商品”实体集,属性有商品号、商品名、规格、单价等;三是“职工”实体集,属性有职工编号、姓名、性别、业绩等。...
  • 数据库判断关系是第范式

    万次阅读 多人点赞 2020-05-30 16:08:38
    数据库范式1NF 2NF 3NF BCNF(实例) 设计范式(范式,数据库设计范式,数据库的设计范式)是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的...在第一范式的基础上进一步满足更要求的称为第二范式(2NF),
  • 设计模式奠基石——UML关系转化为代码

    千次阅读 多人点赞 2014-05-07 17:29:11
    设计模式就如同搭积木,这关系就如同积木,设计模式的作用无非就是为了将这关系组合,最大化降低程序耦合度,使代码结构达到最优,便于应对以后的需求变更。
  • 关系模型中设计时的约束条件

    千次阅读 2019-02-26 15:27:19
    关系模型中设计时的约束条件 一、介绍 关系模型是目前最重要的也是应用最广泛的数据模型。...约束分为级约束和字段级约束,级约束是对表中几个字段的约束,字段级约束是对表中一个字段的约...
  • 「数据库」E-R图转换为关系模式

    千次阅读 多人点赞 2020-05-27 21:59:58
    这位大佬讲的不要太好懂! 原文: E-R模型如何转换成关系模型,这里我们分成三种情况...关于E-R模型转化关系模型我们就学到这里,其实很简单,只要掌握了要领,做几个例子,就会很好的上手,就会达到掌握的目的了。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 271,291
精华内容 108,516
关键字:

多对多关系转化为几个表