请教,关于数据完整性的问题

时间:2021-01-10 08:47:45
1、问题:
  假设“专业成绩管理”应用实例有下列表:
    表1:专业表
    字段:专业编号、专业名称、.....
  
    表2:学生表
    字段:学号、姓名、专业、性别、出生年月、.....
  
    表3:学科表
    字段:学科编号、学科名称、专业.....

    表4:成绩表
    字段:学号、学科编号、成绩、.....
  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  对于“学科管理”,为实现学科撤消问题,加入“删除”功能,考虑到“成绩
  表”中有其相关记录,不能删除;
  新学年开始了,对成绩表初始化的时候,结合学生表、专业表、课程表构造成绩
  记录。由于没有删除,在学生成绩表中会出现已经撤消的学科
2、解决:
  在学科表中加入“删除标记”,初始化成绩表的时候,检查该标记;查看成绩表的
  时候,不考虑该标记
--------------------------------------------------------------------------
这样考虑有什么问题?有什么好的解决思路?

13 个解决方案

#1


不好,不如这样处理:在成绩表中加入学期字段。

 表4:成绩表
    字段:学号、学科编号、成绩、..... 学期

#2


加删除标记的问题: 主键?  查历史记录?

#3


2、解决:
  在学科表中加入“启用标记”,初始化成绩表的时候,检查该标记;查看成绩表的
  时候,不考虑该标记

#4


感觉不是很好,你加入了删除标志。。没有删除的时间。。
怎么查询历史记录呀。
建议建一个历史成绩表,历史表中存储历史的成绩表
然后建一个当前学期的成绩表,只存储本学期的成绩。

#5


谢谢马可,学期是必须考虑的,主键在这里不讨论,我的省略号能保证表的主键:)

在学科表中加入“删除标记”,是因为考虑到这样的情况:
1、新生A入学了,要构造出A的成绩表,那先看A的专业,然后根据专业确定他的所有课程,然后在“成绩表”中为每门课程生成一条记录(假设一门课程只考一次试)。这样,如果该专业某一学科现在已经撤消,由于该学科没有从“学科表”里删除,这门学科的成绩记录会出现在A的成绩表里-------撤消的学科不应该出现在新生成绩表里
2、查看已经毕业的学生B的成绩的时候,B所在的专业里的某一学科现在已经撤消了,但是,在B的成绩表里,该学科是应该出现的

结合1、2,在学科表里加“删除标记”字段,或者叫“学科撤消标记”字段

#6


同意马可,建议加学期.

新学期开始,就重新初始化,楼主难道不考虑历史数据的查询吗?

#7


谢谢用泪水灌溉幸福、无为;
欢迎大家讨论,我还有一个没人回答的帖子,100分,算到这个帖子里,揭贴后大家去领分

#8


在学科表中加入“删除标记”,是因为考虑到这样的情况:
1、新生A入学了,要构造出A的成绩表,那先看A的专业,然后根据专业确定他的所有课程,然后在“成绩表”中为每门课程生成一条记录(假设一门课程只考一次试)。这样,如果该专业某一学科现在已经撤消,由于该学科没有从“学科表”里删除,这门学科的成绩记录会出现在A的成绩表里-------撤消的学科不应该出现在新生成绩表里
2、查看已经毕业的学生B的成绩的时候,B所在的专业里的某一学科现在已经撤消了,但是,在B的成绩表里,该学科是应该出现的

结合1、2,在学科表里加“删除标记”字段,或者叫“学科撤消标记”字段

-------------------

那也是在学科表中加入学期字段,而不是加删除标记。

#9


TO邹建 :初始化是对新生而言,将新生的成绩表加如到成绩表里,不对历史成绩记录做任何操作,更不是将历史成绩全部抹去

#10


在学科表中加入学期字段,而不是加删除标记。
这样才能查到以前的某个学期某专业有哪些课程。

#11


马可,那样每学年都要在学科表里加入一次所有学科的名单,只是“学年”不一样,这样的学科表设计觉得不是很合理
2003 数学 
2003 英语
........
2004 数学
2005 数学
........

#12


在学科表中加入学期字段,而不是加删除标记。
这样才能查到以前的某个学期某专业有哪些课程。
---恩,有道理

#13


怎么都避开我的问题????

#1


不好,不如这样处理:在成绩表中加入学期字段。

 表4:成绩表
    字段:学号、学科编号、成绩、..... 学期

#2


加删除标记的问题: 主键?  查历史记录?

#3


2、解决:
  在学科表中加入“启用标记”,初始化成绩表的时候,检查该标记;查看成绩表的
  时候,不考虑该标记

#4


感觉不是很好,你加入了删除标志。。没有删除的时间。。
怎么查询历史记录呀。
建议建一个历史成绩表,历史表中存储历史的成绩表
然后建一个当前学期的成绩表,只存储本学期的成绩。

#5


谢谢马可,学期是必须考虑的,主键在这里不讨论,我的省略号能保证表的主键:)

在学科表中加入“删除标记”,是因为考虑到这样的情况:
1、新生A入学了,要构造出A的成绩表,那先看A的专业,然后根据专业确定他的所有课程,然后在“成绩表”中为每门课程生成一条记录(假设一门课程只考一次试)。这样,如果该专业某一学科现在已经撤消,由于该学科没有从“学科表”里删除,这门学科的成绩记录会出现在A的成绩表里-------撤消的学科不应该出现在新生成绩表里
2、查看已经毕业的学生B的成绩的时候,B所在的专业里的某一学科现在已经撤消了,但是,在B的成绩表里,该学科是应该出现的

结合1、2,在学科表里加“删除标记”字段,或者叫“学科撤消标记”字段

#6


同意马可,建议加学期.

新学期开始,就重新初始化,楼主难道不考虑历史数据的查询吗?

#7


谢谢用泪水灌溉幸福、无为;
欢迎大家讨论,我还有一个没人回答的帖子,100分,算到这个帖子里,揭贴后大家去领分

#8


在学科表中加入“删除标记”,是因为考虑到这样的情况:
1、新生A入学了,要构造出A的成绩表,那先看A的专业,然后根据专业确定他的所有课程,然后在“成绩表”中为每门课程生成一条记录(假设一门课程只考一次试)。这样,如果该专业某一学科现在已经撤消,由于该学科没有从“学科表”里删除,这门学科的成绩记录会出现在A的成绩表里-------撤消的学科不应该出现在新生成绩表里
2、查看已经毕业的学生B的成绩的时候,B所在的专业里的某一学科现在已经撤消了,但是,在B的成绩表里,该学科是应该出现的

结合1、2,在学科表里加“删除标记”字段,或者叫“学科撤消标记”字段

-------------------

那也是在学科表中加入学期字段,而不是加删除标记。

#9


TO邹建 :初始化是对新生而言,将新生的成绩表加如到成绩表里,不对历史成绩记录做任何操作,更不是将历史成绩全部抹去

#10


在学科表中加入学期字段,而不是加删除标记。
这样才能查到以前的某个学期某专业有哪些课程。

#11


马可,那样每学年都要在学科表里加入一次所有学科的名单,只是“学年”不一样,这样的学科表设计觉得不是很合理
2003 数学 
2003 英语
........
2004 数学
2005 数学
........

#12


在学科表中加入学期字段,而不是加删除标记。
这样才能查到以前的某个学期某专业有哪些课程。
---恩,有道理

#13


怎么都避开我的问题????