librelist archives

« back to archive

关于增加外键计数的想法

关于增加外键计数的想法

From:
free
Date:
2012-02-03 @ 02:41
bamboo 中的对象是通过外键进行关联的,增加外键计数能够区分对象是否是孤立
对象,这有助于清理一些过时的数据。

规则非常简单:
1.在model中增加一个外键计数器foreignCount,对象创建时,初始化为0;
2.在Model:addForeign(obj)时,obj的foreignCount + 1;
3.在Model:delForeign(obj)时,obj的foreignCount - 1;
4.在obj:foreignCount值不为0时,拒绝执行obj:del();

5.在Model:addForeign(obj)时,如果外键类型为ONE,注意其隐含的
delForeign操作;
	如果未见类型未MANY,注意其隐含的delForeign操作(obj已经是其外键)
6.在Model:delForeign(obj)时,注意操作必须有效,才执行obj的
foreignCount - 1;
7.对某些对象/Model,如果foreignCount减少为0,可以考虑自动销毁。

Re: 关于增加外键计数的想法

From:
free
Date:
2012-02-03 @ 02:45
On Fri, 2012-02-03 at 10:41 +0800, free wrote:
> bamboo 中的对象是通过外键进行关联的,增加外键计数能够区分对象是否是孤立
> 对象,这有助于清理一些过时的数据。
> 
> 规则非常简单:
> 1.在model中增加一个外键计数器foreignCount,对象创建时,初始化为0;
> 2.在Model:addForeign(obj)时,obj的foreignCount + 1;
> 3.在Model:delForeign(obj)时,obj的foreignCount - 1;
> 4.在obj:foreignCount值不为0时,拒绝执行obj:del();
> 
> 5.在Model:addForeign(obj)时,如果外键类型为ONE,注意其隐含的
> delForeign操作;
> 	如果未见类型未MANY,注意其隐含的delForeign操作(obj已经是其外键)
> 6.在Model:delForeign(obj)时,注意操作必须有效,才执行obj的
> foreignCount - 1;
> 7.对某些对象/Model,如果foreignCount减少为0,可以考虑自动销毁。

8.销毁对象是,需要对外键做delForeign操作



Re: [bamboo] R e: 关于增加外键计数的想法

From:
道哥
Date:
2012-02-03 @ 02:57
可以。
 
.在obj:foreignCount值不为0时,拒绝执行obj:del(),并报个错。
 
这个可以强制程序员在删除一个对象前,理清其相关的外链关系,在清理完外键关系后,才能对对象进行删除。又进一步规划的编程风格。
 
--
Nothing is impossible.
       
在 2012-02-03 10:45:41,free <18602871035@163.com> 写道: >On Fri, 2012-02-03 
at 10:41 +0800, free wrote: >> bamboo 中的对象是通过外键进行关联的,增加外键计数能够区分对象是否是孤立 >> 
对象,这有助于清理一些过时的数据。 >>  >> 规则非常简单: >> 
1.在model中增加一个外键计数器foreignCount,对象创建时,初始化为0; >> 
2.在Model:addForeign(obj)时,obj的foreignCount + 1; >> 
3.在Model:delForeign(obj)时,obj的foreignCount - 1; >> 
4.在obj:foreignCount值不为0时,拒绝执行obj:del(); >>  >> 
5.在Model:addForeign(obj)时,如果外键类型为ONE,注意其隐含的 >> delForeign操作; >>  
如果未见类型未MANY,注意其隐含的delForeign操作(obj已经是其外键) >> 
6.在Model:delForeign(obj)时,注意操作必须有效,才执行obj的 >> foreignCount - 1; >> 
7.对某些对象/Model,如果foreignCount减少为0,可以考虑自动销毁。 > >8.销毁对象是,需要对外键做delForeign操作 >
> > >