zoukankan      html  css  js  c++  java
  • mysql多对多

    中间表跟两张表都分别是一对多关系,中间表是多,两张表分别是1.原因是一个教师在中间表中可以有多个t_id(教师t_id),而一个t_id只能对应一个教师。


    2.外键可以是一对一的,一个表的记录只能与另一个表的一条记录连接,或者是一对多的,一个表的记录与另一个表的多条记录连接。

    1.一对多,在多的一方建立外键(外键指向一的主键)

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

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

    2.多对多的关系,是通过中间表。中间表是多的一方,所以多的一方要包含指向一的一方的外键。所以中间表,作为两边多的一方,中间表要包含两边的外键,两个外键分别指向两张表的主键。
    多对多
    一对表中(A)的一条记录能够对应另外一张表(B)中的多条记录;同时B表中的一条记录
    也能对应A表中的多条记录

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

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

  • 相关阅读:
    Android 主题theme说明 摘记
    Android开发 去掉标题栏方法 摘记
    安卓项目五子棋代码详解(二)
    关于 ake sure class name exists, is public, and has an empty constructor that is public
    百度地图3.0实现图文并茂的覆盖物
    android onSaveInstanceState()及其配对方法。
    关于集成科大讯飞语音识别的 一个问题总结
    android 关于 webview 控制其它view的显示 以及更改view数据失败的问题总结
    C# 解析 json Newtonsoft果然强大,代码写的真好
    c#数据类型 与sql的对应关系 以及 取值范围
  • 原文地址:https://www.cnblogs.com/diumyself/p/12902947.html
Copyright © 2011-2022 走看看