ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>日韩av一区二区三区在线观看,黑人久久a级毛片免费观看,一区二区蜜桃http://www.aygfsteel.com/Adley/archive/2011/09/27/359585.htmlAdleyAdleyTue, 27 Sep 2011 02:21:00 GMThttp://www.aygfsteel.com/Adley/archive/2011/09/27/359585.htmlhttp://www.aygfsteel.com/Adley/comments/359585.htmlhttp://www.aygfsteel.com/Adley/archive/2011/09/27/359585.html#Feedback0http://www.aygfsteel.com/Adley/comments/commentRss/359585.htmlhttp://www.aygfsteel.com/Adley/services/trackbacks/359585.html范式以及规范化过½E?nbsp;

1NF ---> 2NF,消除非主属性对码的部分函数依赖 

2NF  ---> 3NF,消除非主属性对码的传递函æ•îC¾èµ?nbsp;

3NF  ---> BCNF, 消除ä¸Õd±žæ€§å¯¹ç çš„部分和传递函æ•îC¾èµ?nbsp;

BCNF  ---> 4NF, 消除非åã^凡且非函æ•îC¾èµ–的多å€ég¾èµ?/strong> 

½W¬ä¸€èŒƒå¼åQšå±žæ€§ä¸å¯å†åˆ†ï¼Œå¦‚果按照面向对象里面的字ŒDµå’Œ¾l“合数据¾cÕdž‹æ¥åˆ†æžï¼Œä¸€ž®±æ˜¯ä¸€åQŒäºŒž®±æ˜¯äºŒï¼Œå“ªæ¥å†åˆ†çš„æ¦‚念,½W¬ä¸€èŒƒå¼ä¸ç®¡ä»Žå¯¹è±¡è§’度还是现有的关系数据½Ž¡ç†¾pȝ»Ÿè§’度都是½W¦åˆçš„,你也设计不出不满­‘³ç¬¬ä¸€èŒƒå¼çš„表åQŒè¿™æ˜¯æœ€åŸºæœ¬çš„了ã€?nbsp;

½W¬äºŒèŒƒå¼åQšéžä¸Õd±žæ€§è¦å®Œå…¨ä¾èµ–于主属性,官话叫做消除部分函数依赖。问题出在复合主键上åQŒå¤åˆé”®é‡Œé¢çš„各个属性决定了整个表里的部分列åQŒè¦è§£å†³æ­¤é—®é¢˜å°±è¦ä»ŽDDD(领域驱动设计)里的实体分析åQŒå®žä½“只定义一个IDåQŒä¸€èˆ¬ç”±æœºå™¨äº§ç”ŸåQŒç³»¾lŸé€šè¿‡˜q™ä¸ªID跟踪实体åQŒå¥½äº†ï¼Œä¸€ä¸ªå®žä½“对象有哪些属性必然是完全依赖于主键,˜q™æ ·ž®Þq¬¦åˆäºŒèŒƒå¼äº†ï¼Œè€Œä¸”如果只有一个IDä½œäØ“ä¸Õd±žæ€§ï¼Œé‚£ä¹ˆå½“再严格åˆîC¸‰èŒƒå¼çš„æ—¶å€™å°±å¿…然是BC范式ã€?nbsp;

举例åQ?nbsp;
(学号, 评¡¨‹åç§°) → (姓名, òq´é¾„, 学分) 
(评¡¨‹åç§°) → (学分) 
(学号) → (姓名, òq´é¾„) 

½W¬ä¸‰èŒƒå¼åQšé‡ç‚¹åœ¨éžä¸»é”®åˆ—上,如果一个非主键列决定了另外的非主键列,˜q™æ ·å®˜è¯å«åšä¼ é€’函æ•îC¾èµ–,要实çŽîCº’不依赖,˜q™å°±æ˜¯æå–å€¼å¯¹è±¡çš„æ—¶å€™ï¼ŒæŠŠä¼ é€’éƒ¨åˆ†å–å‡ºæ¥ä½œäØ“å¯¹è±¡çš„å€û|¼Œç”¨hibernate映射ž®±æ˜¯ä¸€ä¸ªç»„ä»Óž¼Œå¦‚果事先按照对象角度分析ž®±æ²¡æœ‰è¿™äº›èŒƒå¼é—®é¢˜ã€?nbsp;

关键字段 → 非关键字ŒDµx → 非关键字ŒDµy 

现在是不是可以得åˆîC¸€ä¸ªç»“论,优秀的数据库建模专家和优¿U€çš„面向对象徏模äh员搞出来的业务对象其字段是差不多的?关于˜q™éƒ¨åˆ†çš„æ€è€ƒå¯å‚考这个帖å­?a >http://www.jdon.com/mda/oo_relation.html
勇敢的抛弃PB,æ‹¿è“vDDD,DCI,Color UMLåQŒå¯¹è±¡å’Œæ—‰™—´¾l“合åQŒå’Œåœºæ™¯ç›¸ç»“合,外静内动åQŒæ¼”¾lŽäº‹å®žã€?br /> 

ä½†æ˜¯æ•°æ®åº“å¾æ¨¡å’Œå¯¹è±¡å»ºæ¨¡ä¸€ä¸ªéžå¸æ€¸¥é‡çš„不匹配就是ç‘ô承,关系模式不支持ç‘ô承,在表辑օ³¾pÖM¸ŠåQŒå…³¾pÀL¨¡å¼åªèƒ½é€šè¿‡å¤–键表达一对一和一对多åQŒè€Œä¸”无方向,但对象关¾pÕd´å¯ä»¥è¡¨è¾¾å¤šå¯¹å¯¹ï¼Œ˜q™ä¹Ÿæ˜¯å¯¹è±¡æ€ç»´çš„æŠ½è±¡ç¾ŽåQŒè€Œå…³¾pÀL•°æ®è¿˜æ˜¯é ˜q‘数学了一炏V€‚这也再一‹Æ¡ä½è¯èÊY件开发需要的不仅仅是数学ã€?nbsp;


æ€ÖM¹‹åQŒè§„范化或者对象设计的基本思想都是概念上的单一化和­‘›_¤Ÿå†…聚åQŒè§„范化具体是逐步消除依赖中的不合适部分,使模式中的各关系模式辑ֈ°æŸç§½E‹åº¦çš„分¼›»ï¼Œè®©ä¸€ä¸ªå…³¾pÀL˜qîC¸€ä¸ªæ¦‚念,一个实体或者一¿Uè”¾p»ï¼Œå¦‚æžœ­‘…过一ž®Þp¦æŠŠå®ƒåˆ†ç¦»ã€?br />关键词:实体åQŒèšåˆï¼Œå€û|¼Œè¾¹ç•ŒåQŒä¸å˜é‡åQŒä¸€è‡´æ€§ï¼Œæ—‰™—´å‡½æ•°åQŒåœºæ™¯ï¼ŒåŠ¨ä¸Žé™ï¼Œä¸å˜å’Œæ˜“å˜ï¼Œæ³›åŒ–å’Œå¤šæ€ï¼Œå‰¯ä½œç”¨ï¼Œäº‹äšgåQŒäº‹å®žç©ºé—´ã€?/strong>

]]>
对象关系不匹é…?/title><link>http://www.aygfsteel.com/Adley/archive/2011/09/26/359496.html</link><dc:creator>Adley</dc:creator><author>Adley</author><pubDate>Mon, 26 Sep 2011 03:43:00 GMT</pubDate><guid>http://www.aygfsteel.com/Adley/archive/2011/09/26/359496.html</guid><wfw:comment>http://www.aygfsteel.com/Adley/comments/359496.html</wfw:comment><comments>http://www.aygfsteel.com/Adley/archive/2011/09/26/359496.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Adley/comments/commentRss/359496.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Adley/services/trackbacks/359496.html</trackback:ping><description><![CDATA[<div><div>关系模型中的范式如果仔细观察ž®±æ˜¯åœ¨å°†å…³ç³»æ¨¡å¼OO化,范式­‘Šé«˜åQŒæ•´ä¸ªå…³¾pÀL¨¡å¼è¡¨½Cºçš„记录ž®Þp¶ŠOOåQŒä¸åŒšw…é—®é¢˜åQŒæˆ‘们要攑֜¨å¯¹è±¡æ¨¡åž‹çš„层‹Æ¡ä¸Šæ¥åˆ†æžï¼Œæœ‰å‡ å¤§ç±»(来自Gavin King的书)åQ?/div><div></div><div>1åQ? ¾_’度问题åQˆå¯¹è±¡æœ‰èšåˆåQŒç»„合,子对象,而关¾pÕdªæœ‰è¡Œå’Œåˆ—两种¾_’度åQ?/div><div></div><div>2åQ? å­ç±»åž‹é—®é¢˜ï¼ˆå…³ç³»æ¨¡åž‹æ²¡æœ‰¾l§æ‰¿½{–ç•¥åQ?/div><div></div><div>3åQ? åŒä¸€æ€§é—®é¢˜ï¼ˆå¯¹è±¡çš„æ¯”较有地址比较和值比较,而数据库呢?同一个行可以对应多个恒等对象åQŒequls问题ã€?/div><div></div><div>4åQ? å…Œ™”相关问题åQˆå¯¹è±¡å…³è”有一对一åQŒä¸€å¯¹å¤šåQŒå¤šå¯¹å¤šåQŒä½†æ˜¯æ•°æ®åº“只用通过外键表达的一对一和一对多åQŒè€Œä¸”没有方向åQ?/div><div></div><div>5åQ? æ•°æ®å¯ÆDˆªé—®é¢˜åQˆå…³¾pÀL•°æ®æˆ‘们可以通过定制sql来导航,而对象导航是渐进的,可怕的n+1问题ž®±åœ¨˜q™é‡ŒåQ?/div><div></div><div> </div><div>面向对象能够最大改善代码的可重用性和可维护性,我们的业务逻辑是在领域模型中被执行而不是sql或者存储过½E‹ï¼Œå¯¹è±¡å±‚次的编码,我们可以大胆的ä‹É用各¿Uè®¾è®¡æ¨¡å¼ï¼Œ˜q™äº›éƒ½ä¾èµ–于多态的æ–ÒŽ³•调用åQŒè€Œå…³¾pÕd‘¢åQŸæœ¬è´¨å°±æ˜¯ä¸€ä¸ªè¡¨æ ¼æˆ–者集合,sql操作的源头和¾l“果都是一个表格或者集合,˜q™ä¸ŽJava应用½E‹åºä¸­ç”¨æ¥æ‰§è¡Œä¸šåŠ¡é€»è¾‘çš„å…³è”å¯¹è±¡ç½‘¾lœå¤§ä¸ç›¸åŒï¼Œå¦‚果我们¼‹¬æ˜¯è¦æŠŠå¯¹è±¡æŒä¹…化到关系数据库中åQŒä½ ä¼šå‘现数据被分解了而不是被表达了,数据库的外键如果在sql中不指定˜qžæŽ¥ž®†ä¸ä¼šè“vä»ÖM½•作用åQŒè€Œå¯¹è±¡å¯ä»¥è‡ªç”±å¯¼èˆªã€?/div><div></div><div> </div><div>关系和领域模型都必须包含相同的业务实体,但是一位面向对象的¾U¯åŒ–è®ø™€…给出实体徏模方法与一位经验丰富的关系型数据库建模者各¾l™å‡ºçš„不同,˜q™ä¸ªé—®é¢˜çš„通常解决æ–ÒŽ¡ˆæ˜¯æ‰­æ›²é¢†åŸŸæ¨¡åž‹å’Œè¢«å®žçŽ°çš„¾c»ï¼Œç›´åˆ°ä»–们和sql数据库Schema相匹配,毕竟保证数据安全是长久之计,˜q™æ ·ž®Þq‰ºç‰²äº†OO的优势,关系模型是有关系理论˜q™ä¸ªæ•°å­¦åŸºç¡€çš„,而OO则没有严格的数学定义和理论实体,所以就找不åˆîC»Žæ•°å­¦æ¥è§£é‡Šåº”该如何对˜q™ä¸¤¿UèŒƒå¼å¾ç«‹æŸ¿Uå…³¾p»ï¼Œæ²¡æœ‰ä¼˜é›…çš„è{化被发现ã€?/div><div></div><div>所以很有可能:软äšg开发是一¿Uè‰ºæœ¯ï¼Œä¸€¿Uéœ€è¦å“²å­¦ç´ å…ȝš„艺术åQŒè‰ºæœ¯å°±åªèƒ½é æœ‰è‰ºæœ¯æ„Ÿè§‰çš„äh来创造和享受åQŒè¿™ä¸ªå’ŒéŸ³ä¹åQŒç»˜ç”ȝ­‰è‰ºæœ¯æ˜¯ä¸€æ ïLš„åQŒè‰ºæœ¯ä¸æ˜¯æ•°å­¦ï¼Œä¸èƒ½å¤Ÿè¢«å½¢å¼åŒ–证明,但是创造艺术的˜q‡ç¨‹ä¼šç”¨åˆ°è¢«æ•°å­¦å¯ä»¥è¯æ˜Žçš„东西,比如音乐中的乐理和物理,˜q™å°±å¥½æ¯”软äšg开发中的OO和关¾pÀL•°æ®åº“ã€?/div><div></div><div>当然数学也是艺术åQŒæŠ½è±¡è€Œå†·å³Èš„艺术åQŒåº”用èÊY件的开发大部分是技术,技术后面是思想åQŒè®°å¾—周爱民说过的一句话åQšæˆ‘ä»¬è¦æ”¹å˜çš„æ˜¯æ€æƒ³åQŒæé«˜çš„æ˜¯èƒ½åŠ›ï¼Œå¤§éƒ¨åˆ†äh都是提高能力而不改变思想åQŒè¿™ž®±æ˜¯å¤§éƒ¨åˆ†äh都不是大师的原因ã€?/div><div></div><div>关系数据库不支持¾l§æ‰¿åQŒæˆ‘们可以做如下的映ž®„,˜q™äº›æ˜ å°„都是牺牲关系模式的范式基¼‹€çš„ã€?/div><div></div><div>1åQ? ç”¨ä¸€ä¸ªè¡¨åŒ…含所有ç‘ô承层‹Æ¡çš„æ‰€æœ‰å­—ŒDµï¼Œç„¶åŽæ ‡è¯†åˆ—来标示是哪个类。这¿Uæ˜ ž®„方法最½Ž€å•ï¼Œä½†æ˜¯æ˜¯è¿åè§„èŒƒåŒ–çš„ï¼Œè€Œä¸”æœ‰äº›å­—æ®µè¦å¼ºåˆ¶äØ“NULLå€û|¼Œæ— æ³•保证关系数据模型的数据完整性,˜q™ç§æ˜ å°„方式性能最高,最½Ž€å•ã€?/div><div></div><div>2åQ? æ¯ä¸ªå…·ä½“¾cÖM¸€å¼ è¡¨åQˆæ„æ€å°±æ˜¯çˆ¶¾cÖM¸éœ€è¦è¡¨åQ‰ï¼Œæ‰€æœ‰çˆ¶å±žæ€§åœ¨å…·ä½“¾c»è¡¨ä¸­é‡å¤ï¼Œ˜q™ç§æ˜ å°„如果要查询父¾c»è¦å…¨éƒ¨æ‰«æå­ç±»è¡¨ï¼Œè€Œä¸”一旦父¾cÕd˜åŒ–,˜q™äº›å­—表要全部变化ã€?/div><div></div><div>3åQ? æ¯ä¸ª¾cÖM¸€å¼ è¡¨åQŒè¡¨é‡ŒåªåŒ…含所属类的属性,然后子类和父¾cÕd…±äº«å¤–键,˜q™ç§æ˜ å°„避免了第2¿Uçš„可怕的修改åQŒä½†æ˜¯æŸ¥è¯¢çš„æ—¶å€™è¦æ‰§è¡Œ˜qžæŽ¥ã€?/div></div><img src ="http://www.aygfsteel.com/Adley/aggbug/359496.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Adley/" target="_blank">Adley</a> 2011-09-26 11:43 <a href="http://www.aygfsteel.com/Adley/archive/2011/09/26/359496.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>领悟OSIVhttp://www.aygfsteel.com/Adley/archive/2011/09/25/359483.htmlAdleyAdleySun, 25 Sep 2011 15:34:00 GMThttp://www.aygfsteel.com/Adley/archive/2011/09/25/359483.htmlhttp://www.aygfsteel.com/Adley/comments/359483.htmlhttp://www.aygfsteel.com/Adley/archive/2011/09/25/359483.html#Feedback1http://www.aygfsteel.com/Adley/comments/commentRss/359483.htmlhttp://www.aygfsteel.com/Adley/services/trackbacks/359483.htmlOSIV是Open Session In View的简写,˜q™ä¸ªä¸œè¥¿å¦‚æžœ™å¹ç›®ä½¿ç”¨Hibernate或者SSH肯定会遇刎ͼŒ˜q™æ˜¯ä¸€ä¸ªåæ¨¡å¼åQŒå®ƒé¢‘繁的出现在SSH,å’ŒSH的框架组合中åQŒè™½ç„¶äº’联网上的讨论很多åQŒå¦‚果结合用户友好角度和伸羃性角度来思考,有点自己的感惻I¼ŒOSIVåˆ†äØ“ä¸¤ç§åQ?nbsp;
½W¬ä¸€¿UOSIV: 在SH架构中,表现层打开session,表现层渲染页面,然后提交事务和关闭session,问题是如果在渲染完页面后发现数据库提交失败怎么办? 
½W¬äºŒ¿UOSIV: 在SSH架构中,表现层打开session,然后在业务层提交事务åQŒç„¶åŽsession¾l§ç®‹ä¿æŒæ‰“å¼€åQŒç„¶åŽå¼€å§‹æ¸²æŸ“页面,然后被表现层关闭åQŒåŒå­¦ä»¬åQŒè¿™ä¸ªè¿‡½E‹æ˜¯åœ¨äº‹åŠ¡å¤–é¢è¿›è¡Œçš„åQŒæ€Žä¹ˆä¿è¯æ•°æ®éš”离åQŒä½ çš„æ•°æ®åº“隔离¾U§åˆ«æœ‰ç”¨å—?我们来看SSH在打开OSIV和没打开OSIV的日å¿?nbsp;


注意上面½W¬ä¸€å¼ å›¾ç‰‡ï¼Œäº‹åŠ¡æäº¤åQŒç„¶åŽè¡¨çŽ°å±‚æ¸²æŸ“åQŒè¿™é‡Œå°±æ˜¯åœ¨äº‹åŠ¡æŽ§åˆ¶èƒ½åŠ›ä¹‹å¤–çš„ã€?nbsp;
™åÞZ¾¿æä¸€ä¸‹banq老师(Jdon框架的作è€?çš„CSIV解决æ–ÒŽ³•åQŒä»–有第一¿UOSIV的问题,但是ž®‘了无谓打开session的问题ã€?nbsp;如果他的Session½Ž¡ç†æ˜¯åœ¨Domain Event监听器的执行周期之内åQŒé‚£ä¹ˆå°±å¯ä»¥å›žé¿OSIV问题ã€?br />ä¸ÞZ»€ä¹ˆæœ‰OSIV? 
å› äØ“æ‰­æ›²çš„é¢å‘å¯¹è±¡ï¼Œå› äØ“æ‰­æ›²çš„æ¨¡å¼ï¼šå¯¹è±¡è¢«å¼ºåˆ¶ä½œä¸ºæ•°æ®å®¹å™¨ï¼Œæ•°æ®é‡äºŽè¡ŒäØ“åQŒæˆ–者根本没有行为,对象¾~–程是要严格½Ž¡ç†çŠ¶æ€çš„åQŒåœ¨web开发中更是要考虑用户操作的工作单元ã€?nbsp;

怎么解决åQ?nbsp;

½W¬ä¸€¿Uï¼šGavin KingåQŒå‘明的SeamåQŒæ”¯æŒç”¨æˆ·å·¥ä½œç©ºé—´å’Œå¯¹è¯ä¸Šä¸‹æ–‡ï¼Œä¸€‹Æ¡è¯·æ±‚用两个事务åQŒä¸€ä¸ªç”¨äºŽæ›´æ–°æ•°æ®åº“åQŒä¸€ä¸ªç”¨äºŽæ¸²æŸ“页面时è¯Õd–数据库ã€?nbsp;
½W¬äºŒ¿Uï¼šç”¨DDD提升对象åˆîC¸šåС层åQŒä¸è¦è¢«ORM挟持åQŒå¼‚步加载,¾~“å­˜åQŒDTO½{‰æ–¹æ¡ˆã€?nbsp;
½W¬ä¸‰¿Uï¼šç”¨Ibatis½{‰å·¥å…øP¼Œç›´æŽ¥ç”¨SQL定制数据˜q”回 
½W¬å››¿Uï¼šCQRSæž¶æž„åQŒå†™å’Œè¯»å®Œå…¨ä¸¤æ¡è·¯å¾„åQŒå½»åº•解冻I¼Œòq²å¹²å‡€å‡€ã€?nbsp;





]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ÑÓ±ß| ÆÖ³ÇÏØ| Óª¿ÚÊÐ| ¸·ÄþÏØ| °ö²ºÊÐ| Íû¿üÏØ| Î÷·áÏØ| ÌìÆø| ÄÏ´¨ÊÐ| Ëà±±| ÔÆºÍÏØ| ºéÑÅÏØ| °ÍÁÖÓÒÆì| ÄêϽ£ºÊÐÏ½Çø| Õò°ÍÏØ| ãôÑôÏØ| ³¤¸ðÊÐ| ½£¸óÏØ| ±ß°ÓÏØ| ÔÓ¶àÏØ| °¢¿ËÌÕÏØ| ¹ȪÊÐ| ¹ÌÑôÏØ| Ê®ÑßÊÐ| ÇɼÒÏØ| ¿ªÆ½ÊÐ| º×·åÏØ| ÒæÑôÊÐ| ÃàÖñÊÐ| Á°Ô´ÊÐ| Ö£ÖÝÊÐ| ÍпËÍÐÏØ| ¿µÀÖÏØ| ¼ÃÔ´ÊÐ| ÎÌÅ£ÌØÆì| ¾°Äþ| ÙñÖÝÊÐ| ÄþÄÏÏØ| ÎäÄþÏØ| ×Ô¹±ÊÐ| Á¹³ÇÏØ|