韩国风格网站模板下载,黄冈网站排名最高,千图网免费素材图库官网,莱芜市文章目录 前言三大范式#xff1a;几种实体间的关系#xff1a;一对一关系#xff1a;一对多关系#xff1a;多对多关系#xff1a; 前言
之前的博客中我们讲解的是关于数据库的增删改查与约束的基本操作#xff0c; 是在已经创建数据库#xff0c;表之上的操作。 在实… 文章目录 前言三大范式几种实体间的关系一对一关系一对多关系多对多关系 前言
之前的博客中我们讲解的是关于数据库的增删改查与约束的基本操作 是在已经创建数据库表之上的操作。 在实际的项目开发过程中表的设计是需要我们根据需求来分析设计的 表设计的过程 OOA面向对象分析–OOD面向对象设计–OOP面向对象编程。
首先我们是从需求中获得类与java中的对象类的概念相同 然后类对应数据库中的实体实体对应数据库中一张一张的表 而类中的每一个属性对应表中的每一个字段列。
其次获取类与类之间的关系类与类之间的关系或者说实体与实体之间的关系有 一对一一对多多对多三种关系。
最后进行SQL语句进行创建表。
三大范式
在创建关系型数据库时遵循着一些规则称为三大范式。 第一范式即表中的每一列属性不可以再划分即实体不可以作为属性。 例设计一个学生表 如果这样设计即是错误的因为“学校”是一个实体它还可以再划分
如果“学校”换成下面三个属性则该表的创建满足第一范式。
第二范式 第二范式即在满足第一范式的基础上避免非关键字段对任一候选键主键外键唯一键产生部分函数依赖下面给出解释。第二范式的本质上依然是一个表非关联表只能表示一个实体一个实体只能对应一个类。 举例说明 反例 在此表中学分不依赖于学号而依赖于课程名字段姓名年龄不依赖于课程名而是依赖于学号字段这样在两个及以上的关键字段决定一条记录的表中存在部分非关键字段对其中一个关键字段依赖的情况称为部分函数依赖。
正例 在上图中每张表的非主键字段都强依赖于主键字段满足第二范式。
不满足第二范式的坏处
在查询数据时会产生大量的数据冗余。 例如只想要查询学生的学号姓名信息却会展示出课程名学分等无用的信息。更新异常比如要更新课程所对应的学分这种实体混合在一张表中的模式会导致不能够整体地更新某一个实体记录中的数据下次插入数据时课程对应的学分还是原来的数据会导致数据不一致的情况出现。插入异常 对于课程实体我们没有单独地设置一张表那么假如我们设置了一门新的课程则除非插入一条学生信息否则不能查询到此课程的信息如学分但是插入学生信息时必须插入此课程的考试成绩成绩为空又没有意义。删除异常 如将全部的毕业学生信息都删除后则课程的信息也全部会被删除无法查询到课程的信息了。
第三范式 在满足了第二范式的基础上不存在非关键字段对任一候选键的传递依赖。本质上依然是一个表中只能实现一个类实体。
反例
正例 还是创建两个表然后在学生表中用外键联系学院表。
几种实体间的关系
在表的设计中关于实体之间有一对一一对多多对多之间的关系。
一对一关系
举例 在此过程中账号与用户是两个实体一个账号对应一个用户一个用户对应一个账号 我们在设计表时可以有两种方式 第一种将两个实体的信息放入一张表中设计 第二种设计成两张表一张表一个实体。 然后将这两张表做关联。 有两种关联方式
一对多关系
举例 学生与班级的关系一个学生只能在一个班级之中而一个班级可以有多个学生。 设计思想不能将学生与班级两个实体设计在一张表中不满足三大范式 而列的数据类型不存在集合的情况所以将关联关系的实现在学生表中。 站在班级的角度与学生是一对多的关系站在学生的角度与班级是多对一的关系。
多对多关系
举例学生与课程的关系一个学生可以选择多门课程一门课程可以被多个学生选择。 在这种情况下应该将学生与课程的关联关系实现单独设计一张表。 这样设计在删除关联表中的数据时不会影响实体本身的信息。