4概要设计
?
1.概要设计
1.1.领域分析
?

注:值对象用了继承关系
1.2.领域映射数据库
?

注:继承关系用单表映射,sqlite有些版本不支持外键,生成sql时不生成外键。
1.3.领域分析新
?

a.为什么单词和熟词,单词和字幕生词要用一对一的组合关系
因为继承关系一个子类的对象不会同时是另一个同级子类的对象,比如苹果和梨都继承水果,我们新建一个苹果和梨的对象,它们只是在类的程度上都有水果的属性,但属性值是各自的。但在这里比如有个单词good,它可能即是熟词,又是字幕生词。所以是一个good对象共享于字幕生词和熟词中。即用组成。
b.单词为什么要改用实体
值对象简单,如果它只和一个对象有关系,可以用值对象存入另一对象的外键。但表示复杂对象关系就有点力不从心,不能在值对象表中存多个其它表的外键啊。只能用嵌入值映射,但嵌入值如果值对象的属性变多后也不方便,但如果以后加个比如音标属性,那重复数据就会以关联表的数量级增长,综合考虑还是选用实体,可扩充性好。
c.一对一映射到数据库
单词和熟词,字幕生词和生词学习情况都为一对一关系。
字幕生词和生词使用单表映射就能满足。字幕生词和单词使用外键映射。
下表为使用外键还是单表的一些考虑
如果两个对象有不同的关系映射,或者大数据字段应使用外键,否则使用单表。
1.4.领域映射数据库新
?
