说到关系,那就不得不提两个东西:

1、E—R图,也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型

2、关系模式:是对关系的描述

    关系模式可以用五元组形式表示:R(U,D,Dom,F),其中R:表示关系名,U:表示属性集合,D表示属性域(来自那个域),Dom: 属性向域的映像集合,F:表示函数依赖。但是一般情况下,我们通常把关系模式表示为:R(U)或者R(A,B)(其中A、B代表U中的属性)比如说,关系模式class(class_No,classRoom_No,director,grade),班级的关系模式中:班级号、教室号、班主任、年级都是class的属性。

    那么,我们的学生信息管理系统里面要怎么去画这个E-R图呢?

首先:我们的student数据库里面有6张表,分别是,User、class、course、gradecourse、student、result。

 然后、逐一分析一下:

1、student、result、course表。

班级信息管理系统java 班级信息管理系统er图_数据

转换成关系模式,就是

    R_student(姓名、性别、学号、入学日期、班级)

    R_course (课程编号、课程、类型、描述)

    R_result (学号课程、result)

黄色表示主键、斜体加粗表示外键。


2、class、student表:

    

班级信息管理系统java 班级信息管理系统er图_主键_02

转换成关系模式就是:

    R_student(姓名、性别、学号、入学日期、班号

    R_class (班号、年级、教室、班主任)

班号在student表中是外键,在class表中是主键。


3、course、class、gradecourse表。

    

班级信息管理系统java 班级信息管理系统er图_数据_03


    转换成关系模式就是:

    R_class(班号、年级、班主任、教室)

    R_course(课程名、课程编号、类型、描述)

    R_gradecourse (年级课程名

通过class表得到年级、通过course表得到课程名组合成gradecourse表。

    

到这,基本上六张表的关系就差不多了。之所以分析各张表的相互关系,是因为在敲学生信息管理系统的过程中,有一个疑问一直困扰着我:在修改一张表的数据时,他会涉及到其他表中的数据,这个时候我们需要保持数据的一致性!!!在这里主要是指:参照完整性!

        简单的来说,参照完整性就是指表间主外键关系。

        参照完整性属于表间规则。对于永久关系的相关表,在更新、插入或删除记录时,如果只改其一不改其二,就会影响数据的完整性:例如修改父表中关键字值后,子表关键字值未做相应改变;删除父表的某记录后,子表的相应记录未删除,致使这些记录成为孤立记录;对于子表插入的记录,父表中没有相应关键字值的记录;等等。对于这些设计表间数据的完整性,统称为参照完整性。

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

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

     比如:学籍表中,我们发现它涉及到了班号、如果此时用户输入一个class表里没有的班号,这就造成了数据的冗余,产生大量无用的数据。这时怎么处理???为了保证数据的完整性。有两个办法可以解决这个问题。第一:在软件中限制用户的输入,不让用户自己随意的输入,直接从现有的表里选择数据或者设置判断。第二:在数据库中设置规则、约束。

    虽然,这次在学生信息管理系统中我没有去实现和完善这块内容。但是,基本还是了解了这方面的知识了,期待机房中能用上这些

                            水平所限,博客纰漏之处,望斧正!感激不尽!