比如说我的数据库有三个表:
学生表(学号,姓名...)
课程表 (课程号,课程名...)
选课表 (学号,课程号,成绩分数)这样三个表映射成对象的话,我分别写三个类,学生一个类,课程一个类,选课一个类,不知道选课类该怎么写才能够建立那种外键关系?
学生表(学号,姓名...)
课程表 (课程号,课程名...)
选课表 (学号,课程号,成绩分数)这样三个表映射成对象的话,我分别写三个类,学生一个类,课程一个类,选课一个类,不知道选课类该怎么写才能够建立那种外键关系?
第三张表应该是成绩表,
class Studnet{ Score[] scores;}
class Score{Course course;}
class Course{}//课程类
class ChangeCourse{//选课类
Student student;//学生
Course course;//课程
double score;//分数
}
外键关系最好使用实体类
如果不缓存Student和Course的话,ChangeCourse只保存了ID,缓存有什么意义?
如果缓存Student和Course的话,ChangeCourse保存的只是引用,怎么就知道引用类型的长度要大于int呢。存储类,一个很模糊的说法,指什么?类在VM内通常只加载一次,怎么就使缓存过大了?赞成了的理由又是什么?
至于说数据量过大,可能会出现缓存过大的原因是:
由于选课类与学生和课程都是多对一的关系,也就是说由选课类维护其关系,如学生选课,则需要传学生类到选课的管理类中,并建立关联,若学生类的属性过多,加之数据量过大,就会产生缓存过大的问题(尤其是启用二级缓存并同时进行很多操作时这种影响更为明显)。
这时就可以考虑使用int类型标识学生类和课程类了,此种情况下,学生选课,学生退课等只需传相关的int类型的标识就行了。
二级缓存又是什么?缓存的目的是什么,为什么要缓存ChangeCource, 并发操作效率和属性多少有什么关系?
使用int属性和“学生选课,学生退课等只需传相关的int类型的标识”,有什么关系,不使用int就不能只传ID进行操作了吗?