http://edu.sina.com.cn/gaokao/
这是新浪的高考查询·现在想弄一个类似于这样的功能·但对于数据库建模毫无头绪,理不清各个实体的关系,难点有3:
1、高校与专业是一对多,但专业本身又有最低分与最高分的属性,注意,这里的最低分与最高分由院校决定。
2、高校在各个地区的录取分数线、录取人数问题,如何设置高校表与地区表的联系
3、各个省份的批次分数线划分问题,此处要求批次是可变的,并且由年份不同而不同,这里要如何建表
还请各位高手支招,小弟现在已是精疲力竭了·可还是理不清楚··恳求高人!
这是新浪的高考查询·现在想弄一个类似于这样的功能·但对于数据库建模毫无头绪,理不清各个实体的关系,难点有3:
1、高校与专业是一对多,但专业本身又有最低分与最高分的属性,注意,这里的最低分与最高分由院校决定。
2、高校在各个地区的录取分数线、录取人数问题,如何设置高校表与地区表的联系
3、各个省份的批次分数线划分问题,此处要求批次是可变的,并且由年份不同而不同,这里要如何建表
还请各位高手支招,小弟现在已是精疲力竭了·可还是理不清楚··恳求高人!
解决方案 »
- java 如何检查exe文件系统调用
- 请问一个有关Struts2中的checkbox问题
- database driver driver class not found求解决办法
- struts2 一个请求执行两次action
- 请教经验丰富的webservice开发高手,关于webservice相关技术和性能问题
- 怎么用批处理调用jar呀?
- Need to specify class name in environment or system property
- 一个 href(链接) 语句跟我过不去!!! 大家来帮忙!!!!
- *********各位仁兄,struts初学者的初学问题,100分招聘(高手们问题过于简单,不要见笑)*******************
- 求救!Feign服务间调用无效
- 读取csv文件
- abator问题
先贴代码:package com.java.exam;/**
* 学院
* for Url: http://topic.csdn.net/u/20110821/01/e51f111e-95ba-4c89-9cec-b1cfb0e7d2bf.html?2062
*/
public class College { private Integer id;
private String name;
/**学院隶属的批次*/
@ManyToOne()
private Grade grade;
/**专业,一个学校有多个专业,一个专业多个学院都有*/
@ManyToMany()
private Specialty specialty;
@OneToOne()
private GradeScroeLevel scoreLevel;
}
package com.java.exam;/**
* 专业
*/
public class Specialty { private Integer id;
private String name;}
package com.java.exam;/**
* 地区,省份
*/
public class Area { private Integer id;
private String name;
}package com.java.exam;/**
* 批次:一本,二本,三本,专一,专二.....
*/
public class Grade {
private Integer id;
private String name;
}package com.java.exam;
/**
* 分数线,地区分数线,和学院学数线,共用一张表,用不同的列进行标识
*/
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@Table(name="SCORE_LEVEL")
@DiscriminatorColumn(name="Discriminator",
discriminatorType = DiscriminatorType.STRING,
length=30)
@DiscriminatorValue("ScoreLevel")
public class ScoreLevel { private Integer id;
/**地区*/
@OneToOne()
private Area area;
/**年份*/
private Integer year;
/**分数*/
private Double score;
private String re;
}
/**
* 各地区,各批次的分数线
*/
@Entity
@DiscriminatorValue("GradeScroeLevel")
public class GradeScroeLevel extends ScoreLevel{ @ManyToOne()
private Grade grade;}
/**
* 学校各批次分数线的问题
*/
@Entity
@DiscriminatorValue("CollegeScoreLevel")
public class CollegeScoreLevel extends ScoreLevel { @OneToOne
private College college;
/**录取人数*/
private Integer studentCount;
}代码不是完整代码,因为我这边环境问题,所以 注解部分只写了主要的,有些没写全下来对设计进行说明
2。我的设计是自顶向下的,也就是说我是站在OO的角度来设计对象,再生成数据库的。
其它的部分我相信,楼主都能理解到。只是关于分数线那块的设计,可能不太明白,我解释一下: 1>,一个基类:ScoreLevel 包含了基本上的所有的信息,二个子数,分别是,批次分数线、学院录取分数线
我们通过JPA 的继承机制,让他们三个对象生成一张表。 也就是说,我们生成以后的表应该是这样: id
地区
年限
分数
批次id
学院id
录取人数 2> 这样设计以后你怎么用列?
1)。查询的时候,你如果是查某地区、某年、某批次的录取分数线,你只要无视: 学院id
录取人数就行,因为他们是null的,而查学院的录取人数列,则相反
2)。插入的时候,你用SQL插的话,则类似于上面,直接用hibernate的,你只用直接save()相关的类就好了
比如你要插入一个学院的分数线信息:
CollegeScoreLevel csl = new CollegeScoreLevel();
.....
session.save(csl);
这样对应的列就插入进去了, 批次的id 就是NULL的3.在学院对象里面放了一个批次对象。。这样做的好处是什么列? 在插入学院的录取分数线的时候,你可以,获取学院的批次,比查询在那个地区,那一年,那个批次的分数线。。 学院的分数线应该是 >= 这个分数线的
4。但专业本身又有最低分与最高分的属性,关于这个问题
你就把最高分、最低分加在:专业对象中,也可以,不过不推荐这么做
最好可以再多加一个对象,来保存这个信息。 不过我认为: 学院,有学生,学生肯定有专业信息、以及高考分数属性。。完全可以通过程序来获取
所以在我设计的时候,所以我没有通过上面两种途径来满足需求。。楼主可以根据自己的需要来自行决定 就是我的想法。欢迎拍砖
字段: (录取)id,高校ID,专业ID,省ID,年度,总批次,总录取人数,年度录取最高分,年度录取最低分批次表
字段:(批次)id,录取id,批次序号,录取人数,分数线,最高分,最低分录取表->批次表 (一对多)
1)学院id不为NULL,可以当各省各校的分数查询
2)学院开设专业id不为NULL,就是各校专业与各省之间的分数查询
3)两者都为NUll,就当各省各批次分数线查询
亲!帮你附上图