• MySQL中表的设计


    在MySQL中表的设计,需要一定的经验才能理解,由于笔者目前在读中,理解不是很深刻,仅根据自己的想法+外界的一些参考资料做出下述文字描述,一些错误,请大佬及时指正~~

    在本篇文章中,介绍一点简单粗暴的方法,来带领大家走进MySQL中表的设计!

    所谓的设计:根据需求,把表应该是干啥的,啥样的写出来,有几个表,每个表又是干啥的,每个表里面有几个字段,都是干啥的,有啥类型,有啥约束~~~

    1. 设计表:一般需要分成两部:
    2. 一:梳理清楚需求中的“实体”
    3. 二:梳理清楚“实体”之间的关系----》按照关系带入到既定的公式中~

    根据上述说法:比如要实现一个教务管理系统,我们有着一下 的简单想法:

    1. 要能管理所有的学生信息
    2. 要能管理所有的教师信息
    3. 要能管理所有的作业信息
    4. 要能管理所有的课程信息

    在上述的这个列子中:学生,教师,作业,课程等,所代表的便是实体~

    其实在很多时候,每个实体需要对应一张表来进行表示~

    那么,问题来了:如何判断俩个实体之间的关系??其实在实体之间主要有三种(严格来说是四种)关系:

    1. 一对一
    2. 一对多
    3. 多对多
    4. 没关系(严格来说)

    如:一对一一个学生只能有一个账号,一个账号只能供一个学生使用~

    那么,该如何设计表呢??

    1. 如何设计一对一的表??
    2. 1)搞一个大表:包含学生信息+账号信息(不建议使用)
    3. account_student(accountId ,username, password, studentname, ………………);
    4. 2)搞两个表:相互关联
    5. account(accountId, username, password, studentId);
    6. student(studentId,name……………………);
    7. 3)搞两个表《-----后续可以搞一些教师表啥的,也可以和account进行关联(该方法比较好)
    8. account(accountId, username, password);
    9. student(studentId, studentname, accountId);

    一对多:一个班级可以包含多个学生,一个学生只能处于一个班级

    在一对多的这种情况下,有两种典型的表示方式:

    写法1(错误想法----》MySQL中没有数组类型~

    1. ~~~~~~~~~~~~~~~~MySQL中没有数组类型(下述为错误演示,仅供参考)~~~~~~~~~~~~~~~~
    2. student(studentId, name);
    3. class(classId,classname, studentIdList);
    4. 在上述中:studentIdList相当于搞了数组/链表来存储学生id
    5. 但是,很遗憾的是,MySQL中不支持这种写法(MySQL没有数组类型)
    6. 但是,有一些数据库redis,由数组类型,此时可以考虑这样设计~~

    想法2:搞两张表(这种方案是咱们最典型的一对多的设计方式~~(大力支持)!

    1. calss(classId, classname)
    2. 1 java19
    3. 2 java20
    4. 3 java21
    5. student(studentId, name, classId)
    6. 1 张三 1 (张三java19)
    7. 2 李四 2 (李四java20
    8. 3 王五 3 (王五java21)

    在上述的一对多的表中:我们可以简单理解为:

    多对多:一个学生可以选择多门课程,一个课程也可以提供给多个学生

    1. 学生表
    2. student(studentId, name);
    3. 1 张三
    4. 2 李四
    5. 课程表
    6. course(courseId, name);
    7. 1 语文
    8. 2 数学
    9. 为了把学生和课程关联起来,我们需要搞一个关联表~~
    10. student_couers(studentId, courseId);
    11. 1 1 (张三选择了语文)
    12. 1 2 (张三选择了数学)
    13. 2 1 (李四选择了语文)

    在多对多的关系中,我们通过一个student_course关联表,将两个无关的表建立了联系~~

    上述的一对一,一对多,多对多三种关系,在未来阶段是非常实用的~

    一般来说,只要实体和关系都明确了,此时表的设计就基本差不多了~

    当然,如果设计到的实体比较多,可以画一个实体关系图来表示这个关系~(实际开发中,很少会画,但是在学校MySQL考试中,一定会考,这种说明,学校学的不一定用到),对于实体关系图,大家可参考网络,本文不做过多的介绍~~

  • 相关阅读:
    网址打包微信小程序源码 wap转微信小程序 网站转小程序源码 网址转小程序开发
    html实现图片裁剪处理(附源码)
    Angular等了三年,那个她已经来了
    (41)Verilog实现递归功能
    半导体工厂将应用哪些制造创新技术?
    做酒类行业应该如何推广自身品牌?
    Instagram Shop如何开通?如何销售?最全面攻略
    PostgreSQL数据库
    DJYOS物联屏:工业HMI里的显控异构计算的超稳定解决方案
    Spring注解之@Configuration和@Bean功能简介说明
  • 原文地址:https://blog.csdn.net/weixin_64308540/article/details/132645176