垂直门户网站怎么做,网站网页怎么设计,网站空间在那里买,遵义工作网招聘信息网横、纵表
定义
横表定义#xff1a;一个对象的所有属性在一行#xff0c;列的定义是对象的各个字段
举例#xff1a;学生成绩表 姓名 Java C语言
张三 100 88
纵表定义#xff1a;一个对象的所有属性被分配到多行#xff0c;列的定义是对象的字段和字段的值
举例…横、纵表
定义
横表定义一个对象的所有属性在一行列的定义是对象的各个字段
举例学生成绩表 姓名 Java C语言
张三 100 88
纵表定义一个对象的所有属性被分配到多行列的定义是对象的字段和字段的值
举例学生成绩表 姓名 科目 成绩
张三 Java 100
张三 C语言 88
若采用纵表为了规范我们还需保存一张科目表
科目表 名称 描述
Java Java
C语言 xx
优缺点
横表
优点 查询性能较好由于所需数据都在同一个表中查询时只需扫描较少的表减少了表连接的操作提高了查询性能。 理解难度低横表的设计更符合日常思维易于理解和维护。 所占存储空间小由于一个对象的所有属性都在一行因此没有冗余数据所占内存也小。 缺点 数据组织难度高如果表中的数据结构比较复杂或者需要经常修改表结构那么维护和管理起来就比较困难。 扩展性有限如果要增加新的数据类型或字段可能需要在现有表中增加新的列这可能会影响到现有的查询和数据结构。
纵表
优点
1.扩展性高如果要新增新的数据类型或字段不需要在加新的列而是当做值加进去不用改表结构。
缺点
1.所占存储空间大由于一个对象的属性被分到多个行中以及可能需要新表来记录某些属性因此容易产生数据冗余占更多的存储空间。
2.理解难度大
3.查询性能较差若将一个横表设计成纵表很可能需要新的表需要连表查询降低查询性能。
使用场景
一般情况下我们使用横表即可满足需求但如果出现一个表中字段后期需要添加新列需要扩展的情况并且内存和性能允许的情况下建议使用纵表。
应用实践
场景某教育机构有很多课程某学生加入了这个教育机构学习课程在后期学生学习过程中可能报新的课程并且该教育机构也可能新添新的课程现在教育机构需要你将原来的学生教育信息表从横表改为纵表以方便日后扩展。
原表student_info
idstudent_idnameapply_javaapply_capply_englishapply_mathis_valid11张三1110122李四1010133王五11011
改造后的表student_info student_apply course_info
student_info
idstudent_idnameis_valid11张三122李四133王五1
student_apply
idstudent_idcourse_idis_applyis_valid1111121211313114140152111622017231182401……………
course_info
idnamedesis_valid1JAVA…12C…13英语…14数学…1
如上所示将原来的一张student_info表转化成纵表后拆成了三张表student_info只记录学生信息通过student_id作为外键与student_apply表相连student_apply记录学生报课信息通过course_id作为外键和course_info表相连。