zoukankan      html  css  js  c++  java
  • 学生信息管理系统总结——student数据库中表关系分析

        说到关系,那就不得不提两个东西:
    1、E—R图,也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型
    2、关系模式:是对关系的描述
        关系模式可以用五元组形式表示:RUDDomF),其中R:表示关系名,U:表示属性集合,D表示属性域(来自那个域),Dom: 属性向域的映像集合,F:表示函数依赖。但是一般情况下,我们通常把关系模式表示为:RU)或者RAB)(其中AB代表U中的属性)比如说,关系模式class(class_No,classRoom_No,director,grade),班级的关系模式中:班级号、教室号、班主任、年级都是class的属性。
        那么,我们的学生信息管理系统里面要怎么去画这个E-R图呢?
    首先:我们的student数据库里面有6张表,分别是,User、class、course、gradecourse、student、result。
     然后、逐一分析一下:
        1、student、result、course表。
        
    转换成关系模式,就是
        R_student(姓名、性别、学号、入学日期、班级)
        R_course (课程编号课程、类型、描述)
        R_result (学号课程、result)
    黄色表示主键、斜体加粗表示外键。

    2、class、student表:
        
    转换成关系模式就是:
        R_student(姓名、性别、学号、入学日期、班号
        R_class (班号、年级、教室、班主任)
    班号在student表中是外键,在class表中是主键。

    3、course、class、gradecourse表。
        

        转换成关系模式就是:
        R_class(班号、年级、班主任、教室)
        R_course(课程名课程编号、类型、描述)
        R_gradecourse (年级课程名
    通过class表得到年级、通过course表得到课程名组合成gradecourse表。
        
    到这,基本上六张表的关系就差不多了。之所以分析各张表的相互关系,是因为在敲学生信息管理系统的过程中,有一个疑问一直困扰着我:在修改一张表的数据时,他会涉及到其他表中的数据,这个时候我们需要保持数据的一致性!!!在这里主要是指:参照完整性!
            简单的来说,参照完整性就是指表间主外键关系。
            参照完整性属于表间规则。对于永久关系的相关表,在更新、插入或删除记录时,如果只改其一不改其二,就会影响数据的完整性:例如修改父表中关键字值后,子表关键字值未做相应改变;删除父表的某记录后,子表的相应记录未删除,致使这些记录成为孤立记录;对于子表插入的记录,父表中没有相应关键字值的记录;等等。对于这些设计表间数据的完整性,统称为参照完整性。

    参照完整性则是相关联的两个表之间的约束,具体的说,就是从表中每条记录外键的值必须是主表中存在的,因此,如果在两个表之间建立了关联关系,则对一个关系进行的操作要影响到另一个表中的记录。

        如果实施了参照完整性,那么当主表中没有相关记录时,就不能将记录添加到相关表中。也不能在相关表中存在匹配的记录时删除主表中的记录,更不能在相关表中有相关记录时,更改主表中的主键值。也就是说,实施了参照完整性后,对表中主键字段进行操作时系统会自动地检查主键字段,看看该字段是否被添加、修改、删除了。如果对主键的修改违背了参照完整性的要求,那么系统就会自动强制执行参照完整性

         比如:学籍表中,我们发现它涉及到了班号、如果此时用户输入一个class表里没有的班号,这就造成了数据的冗余,产生大量无用的数据。这时怎么处理???为了保证数据的完整性。有两个办法可以解决这个问题。第一:在软件中限制用户的输入,不让用户自己随意的输入,直接从现有的表里选择数据或者设置判断。第二:在数据库中设置规则、约束。
        虽然,这次在学生信息管理系统中我没有去实现和完善这块内容。但是,基本还是了解了这方面的知识了,期待机房中能用上这些
                                水平所限,博客纰漏之处,望斧正!感激不尽!

  • 相关阅读:
    Atitit  atiMail atiDns新特性 v2  q39
    Atitit  atiMail atiDns新特性 v2  q39
    Atitit.aticmd v4  新特性q39 添加定时器释放功能
    Atitit.aticmd v4  新特性q39 添加定时器释放功能
    Atitit. Atiposter 发帖机 新特性 poster new feature   v7 q39
    Atitit. Atiposter 发帖机 新特性 poster new feature   v7 q39
    Atitit.编程语言and 自然语言的比较and 编程语言未来的发展
    Atitit.编程语言and 自然语言的比较and 编程语言未来的发展
    atitit.解决struts2 SpringObjectFactory.getClassInstance NullPointerException  v2 q31
    知也atitit.解决struts2 SpringObjectFactory.getClassInstance NullPointerException  v2 q31无涯 - I
  • 原文地址:https://www.cnblogs.com/lwb6688/p/4170945.html
Copyright © 2011-2022 走看看