陕西省建设厅便民服务网站,花都区建设工程造价管理网站,打电话沟通做网站话术,新手这样开办公司在MySQL中表的设计#xff0c;需要一定的经验才能理解#xff0c;由于笔者目前在读中#xff0c;理解不是很深刻#xff0c;仅根据自己的想法外界的一些参考资料做出下述文字描述#xff0c;一些错误#xff0c;请大佬及时指正~~
在本篇文章中#xff0c;介绍一点简单粗…在MySQL中表的设计需要一定的经验才能理解由于笔者目前在读中理解不是很深刻仅根据自己的想法外界的一些参考资料做出下述文字描述一些错误请大佬及时指正~~
在本篇文章中介绍一点简单粗暴的方法来带领大家走进MySQL中表的设计
所谓的设计根据需求把表应该是干啥的啥样的写出来有几个表每个表又是干啥的每个表里面有几个字段都是干啥的有啥类型有啥约束~~~
设计表一般需要分成两部
一梳理清楚需求中的“实体”
二梳理清楚“实体”之间的关系----》按照关系带入到既定的公式中~
根据上述说法比如要实现一个教务管理系统我们有着一下 的简单想法
要能管理所有的学生信息要能管理所有的教师信息要能管理所有的作业信息要能管理所有的课程信息
在上述的这个列子中学生教师作业课程等所代表的便是实体~
其实在很多时候每个实体需要对应一张表来进行表示~
那么问题来了如何判断俩个实体之间的关系其实在实体之间主要有三种严格来说是四种关系
一对一一对多多对多没关系严格来说
如一对一一个学生只能有一个账号一个账号只能供一个学生使用~
那么该如何设计表呢
如何设计一对一的表1搞一个大表包含学生信息账号信息不建议使用
account_student(accountId ,username, password, studentname ………………2搞两个表相互关联
account(accountId, username, password, studentId);
student(studentId,name……………………3搞两个表《-----后续可以搞一些教师表啥的也可以和account进行关联该方法比较好
account(accountId, username, password);
student(studentId, studentname, accountId);
一对多一个班级可以包含多个学生一个学生只能处于一个班级
在一对多的这种情况下有两种典型的表示方式
写法1错误想法----》MySQL中没有数组类型~
~~~~~~~~~~~~~~~~MySQL中没有数组类型下述为错误演示仅供参考~~~~~~~~~~~~~~~~
student(studentId, name);
class(classId,classname, studentIdList);在上述中studentIdList相当于搞了数组/链表来存储学生id
但是很遗憾的是MySQL中不支持这种写法MySQL没有数组类型但是有一些数据库redis由数组类型此时可以考虑这样设计~~
想法2搞两张表这种方案是咱们最典型的一对多的设计方式~~大力支持
calss(classId, classname)1 java192 java203 java21student(studentId, name, classId)1 张三 1 张三java19)2 李四 2 (李四java203 王五 3 王五java21)
在上述的一对多的表中我们可以简单理解为 多对多一个学生可以选择多门课程一个课程也可以提供给多个学生
学生表
student(studentId, name);1 张三2 李四课程表
course(courseId, name);1 语文2 数学为了把学生和课程关联起来我们需要搞一个关联表~~
student_couers(studentId, courseId);1 1 张三选择了语文1 2 张三选择了数学2 1 李四选择了语文
在多对多的关系中我们通过一个student_course关联表将两个无关的表建立了联系~~
上述的一对一一对多多对多三种关系在未来阶段是非常实用的~
一般来说只要实体和关系都明确了此时表的设计就基本差不多了~
当然如果设计到的实体比较多可以画一个实体关系图来表示这个关系~实际开发中很少会画但是在学校MySQL考试中一定会考这种说明学校学的不一定用到对于实体关系图大家可参考网络本文不做过多的介绍~~