精华内容
下载资源
问答
  • 多对多关系
    万次阅读
    2018-06-30 17:24:28

    在关系型数据库中,通过外键将表跟表之间联系在了一起。

    一对多关系

    一个班级有很多学生,外键维护在学生的一方,也就是多的一方。(在做页面设计的时候,需要把两个表连接到一块查询信息)

    建立一个student和clazz表

    clazz                                                      

    id    name

    1       一班

    2       二班

    3        三班

    student           

    id     name      clazz_id

    1       小明            2

    2       小红            3

    3        小张           1

    select s.name,c.name from student as s,clazz as cwhere c.id=s.clazz_id;


            一对一关系。一对一是一对多的特例,外键唯一。在上面的student和clazz表中,假设一个班级只能有一名学生,clazz_id(外键)不能重复。

             多对多关系。

    外键维护在桥表中,不在两个多的任意一方。下面举一个例子更好地说明。

    student           

    id     name      

    1       小明            

    2       小红         

    3        小张   

    课程表  course

    id      name

    101     java

    102      php

    103       c

    学生选课表 sc

    id       course_id      student_id         grade

    1           101                   1                         60

    2            102                 1                        80 

    3             103                 2                       80

    查询id=1的学生的选的课程,名字,分数。

    select s.*,c.name,sc.grade from student as s,clazz as c,sc

    where sc.course_id=c.id

    and   sc.student_id=s.id

    and s.id=1;




    更多相关内容
  • 多对多关系的多表关联查询

    万次阅读 多人点赞 2017-11-23 19:14:20
    笔者根据实际的业务和参考网上多对多的处理方法,现在做如下处理,由于笔者技术水平有限,错误之所,在所难免,敬请各位技术大佬批评和指正

    1.什么是多对多关系

           多对多关系(百度):多对多关系是关系数据库中两个表之间的一种关系, 该关系中第一个表中的一个行可以与第二个表中的一个或多个行相关。第二个表中的一个行也可以与第一个表中的一个或多个行相关。

           下面我就举个比较好理解的例子来说明这个概念。学生和学生所选的选修课之间的关系,就符合多对多的关系,怎么理解呢?一个学生可能会选择多门选修课,而,一门选修课则可能会对应多个学生,下面我以此为例子来说明这个问题。


    2.前期准备

    创建物理表,并且初始化测试数据(笔者创建在mysql)

    创建学生表(STUDENT)

    CREATE TABLE STUDENT(  
       ID   VARCHAR(20) primary key,  
       NAME VARCHAR(20),  
       AGE INT  
    ); 

    创建选修课程表(SUBJECT)

    CREATE TABLE SUBJECT(  
       ID   VARCHAR(20) primary key,  
       NAME VARCHAR(40)  
    );

    创建学生和选修课程的关联表(STU_REF_SUB)

    CREATE TABLE STU_REF_SUB(  
       STUDENT_ID VARCHAR(20),  
       SUBJECT_ID VARCHAR(20)  
    );

    添加外键

    ALTER TABLE STU_REF_SUB ADD CONSTRAINT FK_STUDENT FOREIGN KEY(STUDENT_ID) REFERENCES STUDENT(ID);
    ALTER TABLE STU_REF_SUB ADD CONSTRAINT FK_SUBJECT FOREIGN KEY(SUBJECT_ID) REFERENCES SUBJECT(ID);

    添加联合主键

    ALTER TABLE STU_REF_SUB ADD CONSTRAINT PK_STU_REF_SUB PRIMARY KEY(STUDENT_ID,SUBJECT_ID); 

    诸表数据初始化

    STUDENT表数据初始化

    INSERT INTO STUDENT VALUES('STU001','李白',25);  
    INSERT INTO STUDENT VALUES('STU002','杜甫',26);  
    INSERT INTO STUDENT VALUES('STU003','欧阳修',27);  
    INSERT INTO STUDENT VALUES('STU004','岳飞',26);  
    INSERT INTO STUDENT VALUES('STU005','柳永',28); 

    SUBJECT表数据初始化

    INSERT INTO SUBJECT VALUES('SUB001','网球课');  
    INSERT INTO SUBJECT VALUES('SUB002','诗词课');  
    INSERT INTO SUBJECT VALUES('SUB003','计算机');  
    INSERT INTO SUBJECT VALUES('SUB004','乒乓球');  
    INSERT INTO SUBJECT VALUES('SUB005','篮球课');

    STU_REF_SUB表数据初始化

    INSERT INTO STU_REF_SUB VALUES('STU001','SUB001');  
    INSERT INTO STU_REF_SUB VALUES('STU001','SUB003');  
    INSERT INTO STU_REF_SUB VALUES('STU001','SUB004');  
    INSERT INTO STU_REF_SUB VALUES('STU002','SUB002');  
    INSERT INTO STU_REF_SUB VALUES('STU002','SUB004');  
    INSERT INTO STU_REF_SUB VALUES('STU004','SUB001');  
    INSERT INTO STU_REF_SUB VALUES('STU004','SUB005');  
    INSERT INTO STU_REF_SUB VALUES('STU005','SUB003'); 

    3.场景查询

    查询哪些学生选了课程

    sql语句(方式一)

    select 
        student.name '学生名称',  
        subject.name '课程名称'   
    from  
        student,  
        subject,  
        stu_ref_sub    
    where   
        student.id = stu_ref_sub.student_id   
    and subject.id = stu_ref_sub.subject_id;

    (方式一)查询结果如下


    竖表转化为横表

    select 
        t1.student '学生姓名',
        max(case t1.course when '网球课' then '网球课' else '0' end) '课程一',
        max(case t1.course when '计算机' then '计算机' else '0' end) '课程二',
        max(case t1.course when '篮球课' then '篮球课' else '0' end) '课程三',
        max(case t1.course when '乒乓球' then '乒乓球' else '0' end) '课程四',
        max(case t1.course when '诗词课' then '诗词课' else '0' end) '课程五'
    from
      (
       select 
           student.name as student,  
           subject.name as course   
       from  
           student,  
           subject,  
           stu_ref_sub    
       where   
           student.id = stu_ref_sub.student_id   
       and subject.id = stu_ref_sub.subject_id
      ) t1
    group by t1.student

    竖转横查询结果如下


    (方式一)查询小结

           1.在将竖表转化为横表的时候,笔者在这里使用了聚合函数max(),需要注意的是,聚合函数max()不仅可以作用于数值类型的数据,还可以作用于字符串类型数据和日期时间类型的数据。而sum(),只是作用于数值类型数据,用于返回指定数据的和,空值会被默认忽略。

    展开全文
  • Mysql多对多关系利用中间表查询

    万次阅读 多人点赞 2019-05-25 17:24:17
    1、多对多关系,我们举个简单的例子,一个顾客可以买多件商品,同时一类商品(指多件相同的商品)也可以也可以让多个用户购买 下面是对应的表,用户表,商品表以及关系表,其中关系表中userId、metId的外键分别是...

    1、多对多关系,我们举个简单的例子,一个顾客可以买多件商品,同时一类商品(指多件相同的商品)也可以也可以让多个用户购买

    下面是对应的表,用户表,商品表以及关系表,其中关系表中userId、metId的外键分别是userTable 的userId 、materialTable 的matId

            userTable                                                      materialTable                                       

     

                                   

       materil_user 

     

    如果我们要查询用户a1买了哪些商品我们可以这样

    SELECT user.userName,user.userId,mat.matName,mat.matId FROM materil_user mu LEFT JOIN userTable user on 
    user.userId=mu.userId LEFT JOIN materialTable mat on mat.matId=mu.matId WHERE mu.userId=1

     查询结果:

    展开全文
  • 数据库一对一、一对多、多对多关系

    万次阅读 多人点赞 2018-01-10 15:54:10
    数据库一对一、一对多、多对多关系  本来数据库一对一、一对多、多对多关系并不复杂,但是最近在理解的时候感觉又感觉多了写新意,所以现在在来总结一下吧 一、首先给出三种关系的实例 1、一对一关系实例 ...
    数据库一对一、一对多、多对多关系

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

    二、一对一关系

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

    三、一对多关系


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

    四、多对多关系

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

    四、总结

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


    展开全文
  • Power BI(二十三)power pivot之使用多对多关系 我们想统计图书分类对应的销售数量 原始数据:两张表(销售记录和图书分类) 为了解决多对多关系,我们创建一个辅助表,使之变为多对一、一对多关系 辅助...
  • Flask 数据库多对多关系

    万次阅读 2016-05-06 17:05:58
    其中,一对多关系是最常用的关系类型,它把一个记录和一组相关的记录联系在一起。实现这种关系时,要在“多”这一侧加入一个外键,指向“一”这一侧联接的记录。大部分的其他关系类型都可以从一对多类型中衍生。 多...
  • 原文:http://blog.csdn.net/lm709409753/article/details/48440401数据库实体间有三种对应关系:一对一,一对多,...多对多关系示例:一个学生可以选择多门课,一门课也有多名学生。这三种关系在数据库中逻辑结构处...
  • 对多关系实例 一个班级拥有多个学生,一个学生只能够属于某个班级 多对多实例 一个学生可以选修多门课程,一个课程可以被多个学生选修 一对一关系 主键的设计方式 一对一关系是最好理解的一种关系,在数据库...
  • 数据库多对多关系建表

    千次阅读 2019-08-26 00:45:59
    对于多对多关系,建表的方式是有两种的,最常见的做法就是建立一张中间关系表b,关联另外两张表a和c的主键,不要其他多余信息,这种做法通常的情况就是a表和c表中的数据不能有重复的,所以我们只能建立单独的关联...
  •  本来数据库一对一、一对多、多对多关系并不复杂,但是最近在理解的时候感觉又感觉多了写新意,所以现在在来总结一下吧 一、首先给出三种关系的实例 1、一对一关系实例  * 一个人对应一张身份证,一张身份证对应一...
  • MySQL数据库通过navicat建立多对多关系

    万次阅读 多人点赞 2017-05-12 01:35:32
    构建两张表的多对多关系:清洗数据表(clean_data表)与用户表(user表)建立多对多的关系。如下图图0所示 图0 多对多之间关系1 创建表.打开navicat,创建三张表,clean_data表与user表,以及两个表之间的关系表...
  •   在数据库中建表时,很容易遇到一种情况:一个学生选修了多门课,而每门课有多名学生选修,“学生”和“课程”之间就是典型的多对多关系。 (二)如何建表   遇到这种多对多关系,我们一般是创建三张表:...
  • 一、中间表-多对多关系的转化实际中,经常存在多对多关系。以订单和商品为例,一个订单对应多个商品,一个商品也对应多个订单。此时在将E-R图转化为关系模型时,需要引入中间表(也叫做连接表)。中间表包含两个实体...
  • 转自:...一对多:从球队角度来说一个球队拥有多个球员 即为一对多多对一:从球员角度来说多个球员属于一个球队 即为多对一数据表间一对多关系如下图:注:一对多...
  • Spring Data JPA 之 一对一,一对多,多对多 关系映射

    万次阅读 多人点赞 2018-06-10 17:01:10
    JPA使用@OneToOne来标注一一的关系。 实体 People :用户。 实体 Address:家庭住址。 People 和 Address 是一一的关系。 这里用两种方式描述JPA的一关系。 一种是通过外键的方式(一个实体通过外键...
  • 多对多关系示例:一个学生可以选择多门课,一门课也有多名学生。 这三种关系在数据库中逻辑结构处理分析: 1.一对多关系处理: 我们以学生和班级之间的关系来说明一对多的关系处理方法。 假设现有基本表学生...
  • 关系(一对一,一对多,多对多)

    千次阅读 2018-03-03 21:04:31
    可以在数据库图表中的表之间创建关系,以显示一个表中的列与另一个表中的列是如何相链接的。在一个关系型数据库中,利用关系可以避免多余的数据。例如,如果设计一个可以跟踪图书信息的数据库,您需要创建一个名为 ...
  • 一、中间表-多对多关系的转化 实际中,经常存在多对多关系。以订单和商品为例,一个订单对应多个商品,一个商品也对应多个订单。此时在将E-R图转化为关系模型时,需要引入中间表(也叫做连接表)。 中间表包含两个...
  • 一对多 采用外键即可 ,外键关联另一张表的主键即可 如:一个教室对应多个学生 在信息多的那个表中,建立一个字段,此字段一般是另一张表的...多对多 新建关系表,新表是两张表的主键关联。 如:有多个学...
  • 一对一的关系最简单,一个实体创建一张表就行了; 一对多和多对一的关系建表原则是一样的,在多的一方用外键列引用‘一’的一方的主键,来保证两者之间...多对多关系,就是新创建一张中间表,以保证二者之间的联系。
  • 关系型数据库 多对多关系 三表还是两表 ?多对多一般都是三张表,两张各自的单个信息表,一张表明关系的连接表。student//学生基本信息表 id name ... course//课程基本信息表 id name teacher... sc//选课表,每一...
  • 一、概念模型  (1)对象模型:可以双向关联,而且引用的是对象,而不是一个主键!    (2)关系模型:只能多方引用一方,而且引用的只是主键,而不是一整行记录。在数据库中表!...(3)多对多关系
  • 为了搞清楚表之间的关系,可以用ER图方便方便的描述。
  • 5 多表设计之间的关系 一对多的关系:例如 一个部门对多个员工,一个员工只能属于一个部门 多对多的关系:例如 学生选课,一个学生可以选多门课程,一门可能可以被...7 多对多关系介绍: 多对对建表原则:创建第三张表
  • 数据表间一对多关系如下图: 关联映射:一对一 一对一关系就如球队与球队所在地址之间的关系,一支球队仅有一个地址,而一个地址区也仅有一支球队。 数据表间一对一关系的表现
  • photo_favour(图片收藏关系表):photo_id user_id 假设这几个表都相当大,需要进行分表。我的分表规则是: user表按照id取模,这样user相关的表都可以按照这个取模后的结果来分表; photo表按照id取模,...
  • 二、多对多关系 例:商品与订单的关系,一个商品可以属于多个订单,一个订单可以有多种商品。  用户和角色的关系,一个角色可以包括多个用户,一个用户可以是多个角色。 创建一张用户表和一张角色表,还需创建...
  • 分析他们之间的关系 1一个订单只属于一个用户 一个用户可以拥有很订单 2 一个订单里面有个订单项 一个订单项只属于一个订单 3 一个订单项只属于一个商品 一个商品可以有很个订单项 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,510,652
精华内容 1,404,260
关键字:

多对多关系

友情链接: 良乡足球场.zip