Ad material
然后现在有个需求需要保存他们的快照;;
ad下面有三种关系 1.1 List<materials> getCurrentMaterials()
1.2 List<Materials> getHistoryAndCurrentMaterial(); 允许ad增加物料,删除物料,个数不限制;
这个关系组合, 1.1 1.2 可以用 两个关系表(两个外键, 可以 两个实体表,一个中间表实现 ,也可以把外键附属在N侧实体) ,或者 用一个@where注解+ 一个外键+一个类型字段( 可以)
另外一个是 2. <Date , List<Material> > getMaterialsSnapShots() ; 每隔1天存储一次当时的物料list ;;
和 1.1 和 1.2的关系组合的后一种实现一样; 一个外键+一个类型字段Date ,或者是 一个外键+ list.Size()个外键字段
对于1.1 来说: 当前的materials , 即使material的内容变,无所谓,当前的materials不影响;; 引用没变;
对于1.2 来说: 可以考虑 和1的外键进行捆绑,新增一个字段, ,,实体世界可以是用一个where进行区分;; 或者用< tyep , List<Materials>> getmaterials() 来代替( List<materials> getCurrentMaterials() 和 List<Materials> getHistoryAndCurrentMaterial(); type的类型可以是 1. 当前物料, 2. 所有的物料 ) 实现比较好, 避免脏的设计, 类型过多的时候;;
对于2来说: materials变不变对这个都没有影响;materials内容变了,存储的materials 不会改变;; 即使 getCurrentMaterials的个数变了,也不会影响到getMaterialsSnapShots指向的引用物料;;
避免一个关系就需要用一个外键来实现,或者一个关系表来实现的OO设计技巧;;