zoukankan      html  css  js  c++  java
  • MySQL中的关系

    关系

    将实体与实体的关系,反应到最终数据库表的设计中来。将关系分为三种:一对一,一对多(多对一)和多对多。
    所有的关系都是指的是表与表之间的关系。

    一对一

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

    学生表:姓名,性别,年龄,身高,体重,婚姻状况,籍贯,家庭住址,紧急联系人

    id姓名性别年龄身高体重婚姻体重籍贯家庭住址紧急联系人

    表设计成以上这种形式,符合要求,其中姓名,性别,年龄,身高,体重属于


    解决方案:将常用的和不常用的信息分离存储,分成两张表。常用数据,但是婚姻,籍贯,住址和联系人属于不常用数据,如果每次查询都是查询所有数据,不常用数据就会影响效率,实际又不用。

    常用信息表

    id姓名性别年龄身高体重

    不常用信息表:保证不常用信息与常用信息一定能够对应上:找一个具有唯一性的字段来共同连接两张表。

    id婚姻体重籍贯家庭住址紧急联系人

    一个常用表中的一条记录,只能在一张不常用表中匹配一条记录。反之亦然。

    一对多

    一张表中有一条记录可以对应另一张表中的多条记录,但是反之,另外一张表的一条记录只能对应另一张表的一条记录。这种关系就是一对多或者多对一

    母亲与孩子的关系
    妈妈表:

    id名字年龄

    孩子表:

    id名字年龄

    以上关系:一个妈妈可以在孩子表中找到多条记录,但是一个孩子表只能找到一个妈妈。是一种典型的一对多的关系

    以上设计:解决了实体的实际表问题,但是没有解决关系问题:孩子找不到妈妈,妈妈也找不到孩子。

    解决方案:在一张表中增加一个字段,能够找到另一张表的记录。应该在孩子表中增加一个字段指向妈妈表:因为孩子表的记录只能匹配到一条妈妈表的记录。

    id名字年龄

    孩子表:

    id名字年龄妈妈 id

    多对多

    一张表中一个记录能够对应另外一张表中的多条记录,反之亦然。

    老师教学:老师和学生
    老师表:

    T_id姓名性别

    学生表:

    S_id姓名性别

    以上设计方案L实现了实体的设计,但是没有维护实体的关系。

    解决方案:不管在哪张表中增加字段,都会出现一个问题:该字段要保存多个数据,而且是与其它表有关系的字段,不符合表设计规范。增加一张新表,专门维护两张表之间的关系
    老师表:

    T_id姓名性别

    学生表:

    S_id姓名性别

    中间关系表

    idT_IDS_ID

    学生找老师:找出学生id –> 中间表寻找匹配记录 –> 老师表匹配
    老师找学生:找出老师id –> 重甲表寻找匹配记录 –> 学生表匹配

  • 相关阅读:
    Bootstrap开发框架视频整理
    在Bootstrap开发中解决Tab标签页切换图表显示问题
    在小程序中使用腾讯视频插件播放教程视频
    在小程序后端中转获取接口数据,绕过前端调用限制
    浅析Android恶意应用及其检测技术
    Android恶意软件特征及分类
    半监督学习分类——???
    强化学习的算法分类
    brew update 过慢的解决方法
    并查集模板——核心就是路径压缩
  • 原文地址:https://www.cnblogs.com/hum0ro/p/8877347.html
Copyright © 2011-2022 走看看