数æ®åº“的最åˆé›å½¢æ®è¯´æºè‡ªç¾Žå›½ä¸€ä¸ªå¥¶ç‰›åœºçš„记账薄(¾U¸è´¨çš„,由æ¤å¯è§åQŒæ•°æ®åº“òq¶ä¸ä¸€å®šæ˜¯å˜å‚¨åœ¨ç”µè„‘里的数æ®^_^)åQŒé‡Œé¢è®°å½•的是该奶牛场的收支账目åQŒç¨‹åºå‘˜åœ¨å°†å…¶æ•´ç†ã€å½•å…¥åˆ°ç”µè„‘ä¸æ—¶ä»Žä¸å—到å¯å‘。当按照规定好的数殾l“构所采集到的数æ®é‡å¤§åˆîC¸€å®šç¨‹åº¦åŽåQŒå‡ºäºŽç¨‹åºæ‰§è¡Œæ•ˆçŽ‡çš„è€ƒè™‘åQŒç¨‹åºå‘˜ž®†å…¶ä¸çš„‹‚€ç´¢ã€æ›´æ–°ç»´æŠ¤ç‰åŠŸèƒ½åˆ†ç¦»å‡ºæ¥åQŒåšæˆå•独调用的模å—åQŒè¿™ä¸ªæ¨¡å—åŽæ¥å°±æ…¢æ…¢å‘å±•ã€æ¼”å˜æˆçŽ°åœ¨æˆ‘ä»¬æ‰€æŽ¥è§¦åˆ°çš„æ•°æ®åº?nobr>½Ž¡ç†¾pÈ»Ÿ(DBMS)——程åºå¼€å‘ä¸çš„一个é‡è¦åˆ†æ”¯ã€?/p>
  下题q›å…¥æ£é¢˜åQŒé¦–先按我个人所接触˜q‡çš„½E‹åº¾l™æ•°æ®åº“设计人员的功底分一下类åQ?br />
  åQ‘ã€æ²¡æœ‰ç³»¾lŸå¦ä¹ 过数殾l“构的程åºå‘˜ã€‚è¿™¾cȨ‹åºå‘˜çš„作å“å¾€å¾€åªæ˜¯ä»–们的å³å…´çީ典P¼Œä»–ä»¬å¾€å¾€ä¹ æƒ¯åªè®¾è®¡æœ‰é™çš„å‡ ä¸ªè¡¨ï¼Œå®žçŽ°æŸç±»åŠŸèƒ½çš„æ•°æ®å…¨éƒ¨å¡žåœ¨ä¸€ä¸ªè¡¨ä¸ï¼Œå„è¡¨ä¹‹é—´å‡ ä¹Žæ¯«æ— å…Œ™”。网上丞®‘çš„å…è´¹
  我个人æ£å¤„于½W¬ä¸‰¾cÈš„末期åQŒæ‰€ä»¥ä¸‹é¢æ‰€åˆ—出的一些设计技巧åªé€‚刽W¬äºŒ¾cÕd’Œéƒ¨åˆ†½W¬ä¸‰¾cÀL•°æ®åº“è®¾è®¡äººå‘˜ã€‚åŒæ—Óž¼Œç”׃ºŽæˆ‘很ž®‘碰到有兴趣在这斚w¢æ·±é’»ä¸‹åŽ»çš„åŒè¡Œï¼Œæ‰€ä»¥æ–‡ä¸éš¾å…å‡ºçŽ°é”™è¯¯å’Œé—æ¼åQŒåœ¨æ¤å…ˆè¡Œå£°æ˜Žï¼Œ‹Æ¢è¿Žå¤§å®¶æŒ‡æ£åQŒä¸è¦è—¿U哦8)
ã€€ã€€ä¸€ã€æ ‘型关¾pÈš„æ•°æ®è¡?br />   ä¸å°‘½E‹åºå‘˜åœ¨˜q›è¡Œæ•°æ®åº“设计的时候都é‡åˆ°˜q‡æ ‘型关¾pÈš„æ•°æ®åQŒä¾‹å¦‚常è§çš„¾cÕdˆ«è¡¨ï¼Œå³ä¸€ä¸ªå¤§¾c»ï¼Œä¸‹é¢æœ‰è‹¥òq²ä¸ªåç±»åQŒæŸäº›å¾cÕdˆæœ‰å¾c»è¿™æ ïLš„æƒ…况。当¾cÕdˆ«ä¸ç¡®å®šï¼Œç”¨æˆ·å¸Œæœ›å¯ä»¥åœ¨ä“Qæ„类别下æ·ÕdŠ æ–°çš„åç±»åQŒæˆ–è€…åˆ é™¤æŸä¸ªç±»åˆ«å’Œå…¶ä¸‹çš„æ‰€æœ‰å¾c»ï¼Œè€Œä¸”预计以åŽå…¶æ•°é‡ä¼šé€æ¥å¢žé•¿åQŒæ¤æ—¶æˆ‘们就会考虑用一个数æ®è¡¨æ¥ä¿å˜è¿™äº›æ•°æ®ã€‚按照教¿U‘书上的教导åQŒç¬¬äºŒç±»½E‹åºå‘˜å¤§æ¦‚ä¼šè®¾è®¡å‡ºç±»ä¼ÆD¿™æ ïLš„æ•°æ®è¡¨ç»“构:
¾cÕdˆ«è¡¨_1(Type_table_1)
å称     ¾cÕdž‹ã€€ã€€ã€€ã€€¾U¦æŸæ¡äšg   说明
type_id   int   æ— é‡å¤ã€€ã€€ ¾cÕdˆ«æ ‡è¯†åQŒä¸»é”?br />
type_name   char(50) ä¸å…è®æ€Ø“½I?nbsp; ¾cÕdž‹åç§°åQŒä¸å…许é‡å¤
type_father int ä¸å…è®æ€Ø“½I?nbsp; è¯¥ç±»åˆ«çš„çˆ¶ç±»åˆ«æ ‡è¯†ï¼Œå¦‚æžœæ˜¯é¡¶èŠ‚ç‚¹çš„è¯è®‘Ö®šä¸ºæŸä¸ªå”¯ä¸€å€?/p>
  ˜q™æ ·çš„设计矞®ç²¾æ‚,完全满èƒö3NFåQŒè€Œä¸”å¯ä»¥æ»¡èƒöç”¨æˆ·çš„æ‰€æœ‰è¦æ±‚ã€‚æ˜¯ä¸æ˜¯˜q™æ ·ž®Þp¡Œå‘¢ï¼Ÿ½{”案是NOåQWhyåQ?/p>
  我们æ¥ä¼°è®¡ä¸€ä¸‹ç”¨æˆ·å¸Œæœ›å¦‚何罗列出˜q™ä¸ªè¡¨çš„æ•°æ®çš„。对用户而言åQŒä»–当然期望按他所讑֮šçš„层‹Æ¡å…³¾pÖM¸€‹Æ¡ç½—列出所有的¾cÕdˆ«åQŒä¾‹å¦‚è¿™æ øP¼š
æ€È±»åˆ?br />
  ¾cÕdˆ«1
    ¾cÕdˆ«1.1
      ¾cÕdˆ«1.1.1
    ¾cÕdˆ«1.2
  ¾cÕdˆ«2
    ¾cÕdˆ«2.1
  ¾cÕdˆ«3
    ¾cÕdˆ«3.1
    ¾cÕdˆ«3.2
  ……
  看看ä¸ÞZº†å®žçް˜q™æ ·çš„列表显½C?æ ‘çš„å…ˆåºé历)åQŒè¦å¯¹ä¸Šé¢çš„表进行多ž®‘次‹‚€ç´¢ï¼Ÿæ³¨æ„åQŒå°½½Ž¡ç±»åˆ?.1.1å¯èƒ½æ˜¯åœ¨¾cÕdˆ«3.2ä¹‹åŽæ·ÕdŠ çš„è®°å½•ï¼Œ½{”案ä»ç„¶æ˜¯N‹Æ¡ã€‚è¿™æ ïLš„æ•ˆçŽ‡å¯¹äºŽž®‘é‡çš„æ•°æ®æ²¡ä»€ä¹ˆåª„å“,但是日厾cÕdž‹æ‰©å……åˆ°æ•°åæ¡ç”šè‡³ä¸Šç™¾æ¡è®°å½•åŽåQŒå•å•列一‹Æ¡ç±»åž‹å°±è¦æ£€ç´¢æ•°å次该表åQŒæ•´ä¸ªç¨‹åºçš„˜q行效率ž®×ƒ¸æ•¢æ¾l´äº†ã€‚或许第二类½E‹åºå‘˜ä¼šè¯ß_¼Œé‚£æˆ‘å†å¾ä¸€ä¸ªäÍæ—¶æ•°¾l„或临时表,专门ä¿å˜¾cÕdž‹è¡¨çš„å…ˆåºé历¾l“æžœåQŒè¿™æ ·åªåœ¨ç¬¬ä¸€‹Æ¡è¿è¡Œæ—¶‹‚€ç´¢æ•°å次åQŒå†‹Æ¡ç½—列所有的¾cÕdž‹å…³ç³»æ—¶å°±ç›´æŽ¥è¯»é‚£ä¸ªäÍæ—¶æ•°¾l„或临时表就行了。其实,用ä¸ç€å†åŽ»åˆ†é…䏀嗿–°çš„å†…å˜æ¥ä¿å˜˜q™äº›æ•°æ®åQŒåªè¦å¯¹æ•°æ®è¡¨è¿›è¡Œä¸€å®šçš„æ‰©å……åQŒå†å¯ÒŽ·»åŠ ç±»åž‹çš„æ•°é‡˜q›è¡Œä¸€ä¸‹çº¦æŸå°±è¡Œäº†åQŒè¦å®Œæˆä¸Šé¢çš„列表åªéœ€ä¸€‹Æ¡æ£€ç´¢å°±è¡Œäº†ã€‚䏋颿˜¯æ‰©å……åŽçš„æ•°æ®è¡¨ç»“构:
¾cÕdˆ«è¡¨_2(Type_table_2)
å称     ¾cÕdž‹ã€€ã€€ã€€ã€€¾U¦æŸæ¡äšg    说明
type_id   int   æ— é‡å¤ã€€ã€€ ¾cÕdˆ«æ ‡è¯†åQŒä¸»é”?br />
type_name   char(50) ä¸å…è®æ€Ø“½I?nbsp; ¾cÕdž‹åç§°åQŒä¸å…许é‡å¤
type_father int ä¸å…è®æ€Ø“½I?nbsp; è¯¥ç±»åˆ«çš„çˆ¶ç±»åˆ«æ ‡è¯†ï¼Œå¦‚æžœæ˜¯é¡¶èŠ‚ç‚¹çš„è¯è®‘Ö®šä¸ºæŸä¸ªå”¯ä¸€å€?br />
type_layer char(6) é™å®š3å±?åˆå§‹å€égØ“000000 ¾cÕdˆ«çš„å…ˆåºé历,主è¦ä¸ºå‡ž®‘检索数æ®åº“的次æ•?/p>
  按照˜q™æ ·çš„表¾l“æž„åQŒæˆ‘们æ¥çœ‹çœ‹ä¸Šé¢ä¾‹å记录在表ä¸çš„æ•°æ®æ˜¯æ€Žæ ·çš„:
type_id type_name type_father type_layer
1 æ€È±»åˆ?nbsp; 0 000000
2 ¾cÕdˆ«1 1 010000
3 ¾cÕdˆ«1.1 2 010100
4 ¾cÕdˆ«1.2 2 010200
5 ¾cÕdˆ«2 1 020000
6 ¾cÕdˆ«2.1 5 020100
7 ¾cÕdˆ«3 1 030000
8 ¾cÕdˆ«3.1 7 030100
9 ¾cÕdˆ«3.2 7 030200
10 ¾cÕdˆ«1.1.1 3 010101
……
  现在按type_layer的大ž®æ¥‹‚€ç´¢ä¸€ä¸‹ï¼šSELECT * FROM Type_table_2 ORDER BY type_layer
列出记录集如下:
type_id type_name type_father type_layer
1 æ€È±»åˆ?nbsp; 0 000000
2 ¾cÕdˆ«1 1 010000
3 ¾cÕdˆ«1.1 2 010100
10 ¾cÕdˆ«1.1.1 3 010101
4 ¾cÕdˆ«1.2 2 010200
5 ¾cÕdˆ«2 1 020000
6 ¾cÕdˆ«2.1 5 020100
7 ¾cÕdˆ«3 1 030000
8 ¾cÕdˆ«3.1 7 030100
9 ¾cÕdˆ«3.2 7 030200
……
ã€€ã€€çŽ°åœ¨åˆ—å‡ºçš„è®°å½•é¡ºåºæ£å¥½æ˜¯å…ˆåºé历的结果。在控制昄¡¤º¾cÕdˆ«çš„层‹Æ¡æ—¶åQŒåªè¦å¯¹type_layerå—æ®µä¸çš„æ•°å€ÆD¿›è¡Œåˆ¤æ–,æ¯?ä½ä¸€¾l„,如大äº?则å‘å³ç§»2ä¸ªç©ºæ ¹{€‚当ç„Óž¼Œæˆ‘这个例åä¸è®‘Ö®šçš„é™åˆ¶æ¡ä»¶æ˜¯æœ€å¤?层,æ¯å±‚最多å¯è®?9个å¾cÕdˆ«åQŒåªè¦æŒ‰ç”¨æˆ·çš„需求情况修改一下type_layerçš„é•¿åº¦å’Œä½æ•°åQŒå³å¯æ›´æ”šw™åˆ¶å±‚æ•°å’Œå类别数。其实,上é¢çš„设计ä¸å•å•åªåœ¨¾cÕdˆ«è¡¨ä¸ç”¨åˆ°åQŒç½‘上æŸäº›å¯æŒ‰æ ‘型列表显½Cºçš„论国E‹åºå¤§å¤šé‡‡ç”¨¾cÖM¼¼çš„设计ã€?/p>
  或许有ähè®¤äØ“åQŒType_table_2ä¸çš„type_fatherå—æ®µæ˜¯å†—余数æ®ï¼Œå¯ä»¥é™¤åŽ»ã€‚å¦‚æžœè¿™æ øP¼Œåœ¨æ’å…¥ã€åˆ 除æŸä¸ªç±»åˆ«çš„æ—¶å€™ï¼Œž®±å¾—对type_layer 的内容进行比较ç¹ç的判定åQŒæ‰€ä»¥æˆ‘òq¶æ²¡æœ‰æ¶ˆåŽ»type_fatherå—æ®µåQŒè¿™ä¹Ÿæ£½W¦åˆæ•°æ®åº“设计ä¸é€‚当ä¿ç•™å†—余数æ®çš„æ¥é™ä½Ž½E‹åºå¤æ‚度的原则åQŒåŽé¢æˆ‘会ä‹D一个故æ„å¢žåŠ æ•°æ®å†—余的案例ã€?/p>
  
  二ã€å•†å“ä¿¡æ¯è¡¨çš„设è®?br />
  å‡è®¾ä½ 是一家百货公å¸ç”µè„‘部的开å‘äh员,æŸå¤©è€æ¿è¦æ±‚ä½ äØ“å…¬å¸å¼€å‘一套网ä¸?nobr>电å商务òq›_°åQŒè¯¥ç™¾è´§å…¬å¸æœ‰æ•°åƒç§å•†å“出售åQŒä¸˜q‡ç›®å‰ä»…打算先在¾|‘上销售数åç§æ–¹ä¾¿˜q输的商å“,当然åQŒä»¥åŽå¯èƒ½ä¼šé™†ç®‹åœ¨è¯¥ç”µå商务òq›_°ä¸Šå¢žåŠ æ–°çš„å•†å“出售。现在开始进行该òq›_°æ•°æ®åº“的商å“ä¿¡æ¯è¡¨çš„设计。毿U出售的商å“都会有相åŒçš„属性,如商å“ç¼–åøP¼Œå•†å“åç§°åQŒå•†å“所属类别,相关信æ¯åQŒä¾›è´§åŽ‚å•†ï¼Œå†…å«ä»¶æ•°åQŒåº“å˜ï¼Œ˜q›è´§ä»øP¼Œé”€å”®ähåQŒä¼˜æƒ ähã€‚ä½ å¾ˆå¿«ž®Þp®¾è®¡å‡º4个表åQšå•†å“类型表(Wares_type)åQŒä¾›è´§åŽ‚å•†è¡¨(Wares_provider)åQŒå•†å“ä¿¡æ¯è¡¨(Wares_info)åQ?/p>
商哾cÕdž‹è¡?Wares_type)
å称     ¾cÕdž‹ã€€ã€€ã€€ã€€¾U¦æŸæ¡äšg    说明
type_id   int   æ— é‡å¤ã€€ã€€ ¾cÕdˆ«æ ‡è¯†åQŒä¸»é”?br />
type_name   char(50) ä¸å…è®æ€Ø“½I?nbsp; ¾cÕdž‹åç§°åQŒä¸å…许é‡å¤
type_father int ä¸å…è®æ€Ø“½I?nbsp; è¯¥ç±»åˆ«çš„çˆ¶ç±»åˆ«æ ‡è¯†ï¼Œå¦‚æžœæ˜¯é¡¶èŠ‚ç‚¹çš„è¯è®‘Ö®šä¸ºæŸä¸ªå”¯ä¸€å€?br />
type_layer char(6) é™å®š3å±?åˆå§‹å€égØ“000000 ¾cÕdˆ«çš„å…ˆåºé历,主è¦ä¸ºå‡ž®‘检索数æ®åº“的次æ•?/p>
供货厂商�Wares_provider)
å称     ¾cÕdž‹ã€€ã€€ã€€ã€€¾U¦æŸæ¡äšg    说明
provider_id int   æ— é‡å¤ã€€ã€€ ä¾›è´§å•†æ ‡è¯†ï¼Œä¸»é”®
provider_name char(100) ä¸å…è®æ€Ø“½I?nbsp; 供货商å¿U?/p>
商å“ä¿¡æ¯è¡?Wares_info)
å称     ¾cÕdž‹ã€€ã€€ã€€ã€€¾U¦æŸæ¡äšg    说明
wares_id int   æ— é‡å¤ã€€ã€€ 商哿 ‡è¯†åQŒä¸»é”?br />
wares_name char(100) ä¸å…è®æ€Ø“½I?nbsp; 商å“åç§°
wares_type   int ä¸å…è®æ€Ø“½Iºã€€ã€€ã€€ã€€ 商哾cÕdž‹æ ‡è¯†åQŒå’ŒWares_type.type_idå…Œ™”
wares_info char(200) å…许为空 相关信æ¯
provider int ä¸å…è®æ€Ø“½I?nbsp; ä¾›è´§åŽ‚å•†æ ‡è¯†åQŒå’ŒWares_provider.provider_idå…Œ™”
setnum int åˆå§‹å€égØ“1 内å«ä»¶æ•°åQŒé»˜è®¤äØ“1
stock int åˆå§‹å€égØ“0 库å˜åQŒé»˜è®¤äØ“0
buy_price money ä¸å…è®æ€Ø“½I?nbsp; ˜q›è´§ä»?br />
sell_price money ä¸å…è®æ€Ø“½I?nbsp; 销售äh
discount money ä¸å…è®æ€Ø“½I?nbsp; ä¼˜æƒ ä»?/p>
ã€€ã€€ä½ æ‹¿ç€˜q?个表¾l™è€æ¿‹‚€æŸ¥ï¼Œè€æ¿å¸Œæœ›èƒ½å¤Ÿå†æ·»åŠ ä¸€ä¸ªå•†å“å›¾ç‰‡çš„å—æ®µåQŒä¸˜q‡åªæœ‰ä¸€éƒ¨åˆ†å•†å“有图片。OKåQŒä½ 在商å“ä¿¡æ¯è¡¨(Wares_info)ä¸å¢žåŠ äº†ä¸€ä¸ªhaspicçš„BOOL型嗌Dµï¼Œç„¶åŽå†å¾äº†ä¸€ä¸ªæ–°è¡¨â€”—商å“图片表(Wares_pic)åQ?/p>
商å“囄¡‰‡è¡?Wares_pic)
å称     ¾cÕdž‹ã€€ã€€ã€€ã€€¾U¦æŸæ¡äšg    说明
pic_id int   æ— é‡å¤ã€€ã€€ 商å“囄¡‰‡æ ‡è¯†åQŒä¸»é”?br />
wares_id int ä¸å…è®æ€Ø“½I?nbsp; æ‰€å±žå•†å“æ ‡è¯†ï¼Œå’ŒWares_info.wares_idå…Œ™”
pic_address  char(200) ä¸å…è®æ€Ø“½Iºã€€ã€€ã€€ã€€ 囄¡‰‡å˜æ”¾è·¯å¾„
  ½E‹åºå¼€å‘完æˆåŽåQŒå®Œå…¨æ»¡‘Œ™€æ¿ç›®å‰çš„è¦æ±‚,于是æ£å¼å¯ç”¨ã€‚一ŒD‰|—¶é—´åŽåQŒè€æ¿æ‰“算在这套åã^åîC¸ŠæŽ¨å‡ºæ–°çš„商å“销售,其ä¸åQŒæŸ¾cÕd•†å“全部都需æ·ÕdŠ “长度”的属性。第一轮折腾æ¥äº?#8230;…当然åQŒä½ 按照æ·ÕdР商å“囄¡‰‡è¡¨çš„è€æ–¹æ³•,在商å“ä¿¡æ¯è¡¨(Wares_info)ä¸å¢žåŠ äº†ä¸€ä¸ªhaslengthçš„BOOL型嗌Dµï¼Œåˆå¾äº†ä¸€ä¸ªæ–°è¡¨â€”—商å“长度表(Wares_length)åQ?/p>
商å“长度è¡?Wares_length)
å称     ¾cÕdž‹ã€€ã€€ã€€ã€€¾U¦æŸæ¡äšg    说明
length_id int   æ— é‡å¤ã€€ã€€ 商å“囄¡‰‡æ ‡è¯†åQŒä¸»é”?br />
wares_id int ä¸å…è®æ€Ø“½I?nbsp; æ‰€å±žå•†å“æ ‡è¯†ï¼Œå’ŒWares_info.wares_idå…Œ™”
length  char(20) ä¸å…è®æ€Ø“½Iºã€€ã€€ã€€ã€€ã€€ã€€å•†å“长度说明
ã€€ã€€åˆšåˆšæ”¹å®Œæ²¡å¤šä¹…ï¼Œè€æ¿åˆæ‰“½Ž—上一æ‰ÒŽ–°çš„商å“,˜q™æ¬¡æŸç±»å•†å“å…¨éƒ¨éœ€è¦æ·»åŠ?#8220;宽度”çš„å±žæ€§ã€‚ä½ å’¬äº†å’¬ç‰™åQŒåˆç…§æ–¹æŠ“è¯åQŒæ·»åŠ äº†å•†å“宽度è¡?Wares_width)。刘q‡äº†ä¸€ŒD‰|—¶é—ß_¼Œè€æ¿æ–îC¸Šçš„商å“䏿œ‰ä¸€äº›éœ€è¦æ·»åŠ?#8220;高度”çš„å±žæ€§ï¼Œä½ æ˜¯ä¸æ˜¯å¼€å§‹è§‰å¾—ä½ æ‰€è®¾è®¡çš„æ•°æ®åº“按照˜q™ç§æ–¹å¼å¢žé•¿ä¸‹åŽ»åQŒå¾ˆå¿«å°±èƒ½å˜æˆä¸€ä¸ªè¿·å®«å‘¢åQŸé‚£ä¹ˆï¼Œæœ‰æ²¡æœ‰ä»€ä¹ˆåŠžæ³•é制这¿Uä¸å¯é¢„è§æ€§ï¼Œä½†å´¾cÖM¼¼é‡å¤çš„æ•°æ®åº“è†¨èƒ€å‘¢ï¼Ÿæˆ‘åœ¨é˜…è¯»ã€Šæ•æ¯‚ÊYä»¶å¼€å‘ï¼šåŽŸåˆ™ã€æ¨¡å¼ä¸Žå®žè·µã€‹ä¸å‘现作者ä‹D˜q‡ç±»ä¼¼çš„例ååQ?.3 “Copy”½E‹åºã€‚å…¶ä¸ï¼Œæˆ‘éžå¸¸èµžåŒæ•毂ÊYä»¶å¼€å‘这个观点:在最åˆå‡ 乎丘q›è¡Œé¢„先设计åQŒä½†æ˜¯ä¸€æ—¦éœ€æ±‚å‘生å˜åŒ–ï¼Œæ¤æ—¶ä½œäؓ一å追求哑Šçš„½E‹åºå‘˜ï¼Œåº”该从头审查整个架构设计åQŒåœ¨æ¤æ¬¡ä¿®æ”¹ä¸è®¾è®¡å‡ºèƒ½å¤Ÿæ»¡èƒö日厾cÖM¼¼ä¿®æ”¹çš„ç³»¾lŸæž¶æž„ã€‚ä¸‹é¢æ˜¯æˆ‘åœ¨éœ€è¦æ·»åŠ?#8220;长度”的属性时所æä¾›çš„ä¿®æ”ÒŽ–¹æ¡ˆï¼š
  åŽÀLމ商å“ä¿¡æ¯è¡?Wares_info)ä¸çš„haspicå—æ®µåQŒæ·»åР商å“é¢å¤–属性表(Wares_ex_property)和商å“é¢å¤–ä¿¡æ¯è¡¨(Wares_ex_info)2个表æ¥å®Œæˆæ·»åŠ æ–°å±žæ€§çš„åŠŸèƒ½ã€?/p>
商å“é¢å¤–属性表(Wares_ex_property)
å称     ¾cÕdž‹ã€€ã€€ã€€ã€€¾U¦æŸæ¡äšg    说明
ex_pid int   æ— é‡å¤ã€€ã€€ 商å“é¢å¤–å±žæ€§æ ‡è¯†ï¼Œä¸»é”®
p_name char(20) ä¸å…è®æ€Ø“½I?nbsp; é¢å¤–属性å¿U?/p>
商å“é¢å¤–ä¿¡æ¯è¡?Wares_ex_info)
å称     ¾cÕdž‹ã€€ã€€ã€€ã€€¾U¦æŸæ¡äšg    说明
ex_iid int   æ— é‡å¤ã€€ã€€ 商å“é¢å¤–ä¿¡æ¯æ ‡è¯†åQŒä¸»é”?br />
wares_id int ä¸å…è®æ€Ø“½I?nbsp; æ‰€å±žå•†å“æ ‡è¯†ï¼Œå’ŒWares_info.wares_idå…Œ™”
property_id  int ä¸å…è®æ€Ø“½Iºã€€ã€€ 商å“é¢å¤–å±žæ€§æ ‡è¯†ï¼Œå’ŒWares_ex_property.ex_pidå…Œ™”
property_value char(200) ä¸å…è®æ€Ø“½I?nbsp; 商å“é¢å¤–属性å€?/p>
  在商å“é¢å¤–属性表(Wares_ex_property)䏿·»åŠ?æ¡è®°å½•:
ex_pid p_name
1 商å“囄¡‰‡
2 商å“长度
  å†åœ¨æ•´ä¸ªç”µå商务òq›_°çš„åŽå°ç®¡ç†åŠŸèƒ½ä¸˜q½åР䏀™å¹å•†å“é¢å¤–属性管ç†çš„功能åQŒä»¥åŽæ·»åŠ æ–°çš„å•†å“æ—¶å‡ºçŽ°æ–°çš„å±žæ€§ï¼Œåªéœ€åˆ©ç”¨è¯¥åŠŸèƒ½å¾€å•†å“é¢å¤–属性表(Wares_ex_property)䏿·»åР䏀æ¡è®°å½•å³å¯ã€‚ä¸è¦å®³æ€•å˜åŒ–,被第一颗å弹击ä¸åÆˆä¸æ˜¯å事åQŒå的是被相åŒè½¨é“飞æ¥çš„½W¬äºŒé¢—ã€ç¬¬ä¸‰é¢—åå¼¹å‡ÖM¸ã€‚第一颗åå¼ÒŽ¥å¾—è¶Šæ—©ï¼Œæ‰€å—的伤越é‡ï¼Œä¹‹åŽçš„æŠµæŠ—力也越å¼?)
三ã€å¤šç”¨æˆ·åŠå…¶æƒé™
  开å?nobr>æ•°æ®åº?/strong>½Ž¡ç†¾cÈš„
  1.那些大ã€ä¸åž‹åŽå°æ•°æ®åº“¾pÈ»Ÿè½¯äšg所æä¾›çš„多用户åŠå…¶æƒé™è®„¡½®éƒ½æ˜¯é’ˆå¯¹æ•°æ®åº“的共有属性,òq¶ä¸ä¸€å®šèƒ½å®Œå…¨æ»¡èƒöæŸäº›ç‰¹ä¾‹çš„需求;
  2.ä¸è¦˜q‡å¤šçš„ä¾èµ–åŽå°æ•°æ®åº“¾pÈ»Ÿè½¯äšgçš„æŸäº›ç‰¹ŒDŠåŠŸèƒ½ï¼Œå¤šç§å¤§ã€ä¸åž‹åŽå°æ•°æ®åº“¾pÈ»Ÿè½¯äšg之间òq¶ä¸å®Œå…¨å…¼å®¹ã€‚å¦åˆ™ä¸€æ—¦æ—¥åŽéœ€è¦è{æ¢æ•°æ®åº“òq›_°æˆ–åŽå°æ•°æ®åº“¾pÈ»Ÿè½¯äšg版本å‡çñ”åQŒä¹‹å‰çš„æž¶æž„设计很å¯èƒ½æ— 法é‡ç”¨ã€?
  下é¢çœ‹çœ‹å¦‚何自行设计一套比较絋zÈš„多用æˆïL®¡ç†æ¨¡å—,匙¯¥æ•°æ®åº“管ç†èÊYä»¶çš„¾pÈ»Ÿ½Ž¡ç†å‘˜å¯ä»¥è‡ªè¡Œæ·»åŠ æ–°ç”¨æˆ·åQŒä¿®æ”¹å·²æœ‰ç”¨æˆïLš„æƒé™åQŒåˆ 除已有用戗÷€‚首先,分æžç”¨æˆ·éœ€æ±‚,列出该数æ®åº“½Ž¡ç†è½¯äšg所有需è¦å®žçŽ°çš„åŠŸèƒ½åQ›ç„¶åŽï¼Œæ ÒŽ®ä¸€å®šçš„è”系对这些功能进行分¾c»ï¼ŒåÏxŠŠæŸç±»ç”¨æˆ·éœ€ä½¿ç”¨çš„功能归ä¸ÞZ¸€¾c»ï¼›æœ€åŽå¼€å§‹å¾è¡¨ï¼š
  
功能�Function_table)
å称     ¾cÕdž‹ã€€ã€€ã€€ã€€¾U¦æŸæ¡äšg   说明
f_id int   æ— é‡å¤ã€€ã€€ 功能
f_desc char(50) å…许为空 功能æè¿°
用户¾l„表(User_group)
å称     ¾cÕdž‹ã€€ã€€ã€€ã€€¾U¦æŸæ¡äšg   说明
group_id int æ— é‡å¤?nbsp; 用户¾l„æ ‡è¯†ï¼Œä¸»é”®
group_name char(20) ä¸å…è®æ€Ø“½I?nbsp; 用户¾l„å¿U?br />
group_power char(100) ä¸å…è®æ€Ø“½I?nbsp; 用户¾l„æƒé™è¡¨åQŒå†…å®¹äØ“åŠŸèƒ½è¡¨f_id的集å?/p>
用户�User_table)
å称     ¾cÕdž‹ã€€ã€€ã€€ã€€¾U¦æŸæ¡äšg    说明
user_id int æ— é‡å¤?nbsp; ç”¨æˆ·æ ‡è¯†åQŒä¸»é”?br />
user_name char(20) æ— é‡å¤?nbsp; 用户å?br />
user_pwd char(20) ä¸å…è®æ€Ø“½I?nbsp; 用户密ç
user_type int ä¸å…è®æ€Ø“½I?nbsp; 所属用æˆïL»„æ ‡è¯†åQŒå’ŒUser_group.group_idå…Œ™”
  采用˜q™ç§ç”¨æˆ·¾l„的架构设计åQŒå½“éœ€è¦æ·»åŠ æ–°ç”¨æˆ·æ—Óž¼Œåªéœ€æŒ‡å®šæ–°ç”¨æˆäh‰€å±žçš„用户¾l„;当以åŽç³»¾lŸéœ€è¦æ·»åŠ æ–°åŠŸèƒ½æˆ–å¯¹æ—§æœ‰åŠŸèƒ½æƒé™˜q›è¡Œä¿®æ”¹æ—Óž¼Œåªç”¨æ“作功能表和用户¾l„表的记录,原有用户的功能å³å¯ç›¸åº”éšä¹‹å˜åŒ–。当ç„Óž¼Œ˜q™ç§æž¶æž„设计把数æ®åº“½Ž¡ç†è½¯äšg的功能判定移åˆîCº†å‰å°åQŒä‹Éå¾—å‰å°å¼€å‘ç›¸å¯¹å¤æ‚一些。但是,当用æˆäh•°è¾ƒå¤§(10äºÞZ»¥ä¸?åQŒæˆ–æ—¥åŽè½¯äšgå‡çñ”的概率较大时åQŒè¿™ä¸ªä»£ä»äh˜¯å€¼å¾—çš„ã€?/p>
  四ã€ç®€‹z的扚w‡m:n设计
  ¼„°åˆ°m:n的关¾p»ï¼Œä¸€èˆ¬éƒ½æ˜¯å¾ç«?个表åQŒm一个,n一个,m:n一个。但是,m:n有时会é‡åˆ°æ‰¹é‡å¤„ç†çš„æƒ…况åQŒä¾‹å¦‚到图书馆借书åQŒä¸€èˆ¬éƒ½æ˜¯å…è®¸ç”¨æˆ·åŒæ—¶å€Ÿé˜…n本书åQŒå¦‚æžœè¦æ±‚按æ‰ÒŽŸ¥è¯¢å€Ÿé˜…记录åQŒå³åˆ—出æŸä¸ªç”¨æˆ·æŸæ¬¡å€Ÿé˜…的所有书¾c,该如何设计呢åQŸè®©æˆ‘们建好必须çš?个表先:
书ç±è¡?Book_table)
å称     ¾cÕdž‹ã€€ã€€ã€€ã€€¾U¦æŸæ¡äšg   说明
book_id int æ— é‡å¤?nbsp; ä¹¦ç±æ ‡è¯†åQŒä¸»é”?br />
book_no char(20) æ— é‡å¤?nbsp; 书籾~–å·
book_name char(100) ä¸å…è®æ€Ø“½I?nbsp; 书ç±åç§°
……
借阅用户�Renter_table)
å称     ¾cÕdž‹ã€€ã€€ã€€ã€€¾U¦æŸæ¡äšg   说明
renter_id int æ— é‡å¤?nbsp; ç”¨æˆ·æ ‡è¯†åQŒä¸»é”?br />
renter_name char(20) ä¸å…è®æ€Ø“½I?nbsp; 用户姓å
……
借阅记录�Rent_log)
å称     ¾cÕdž‹ã€€ã€€ã€€ã€€¾U¦æŸæ¡äšg    说明
rent_id int æ— é‡å¤?nbsp; å€Ÿé˜…è®°å½•æ ‡è¯†åQŒä¸»é”?br />
r_id int ä¸å…è®æ€Ø“½I?nbsp; ç”¨æˆ·æ ‡è¯†åQŒå’ŒRenter_table.renter_idå…Œ™”
b_id int ä¸å…è®æ€Ø“½I?nbsp; ä¹¦ç±æ ‡è¯†åQŒå’ŒBook_table.book_idå…Œ™”
rent_date datetime ä¸å…è®æ€Ø“½I?nbsp; 借阅旉™—´
……
  ä¸ÞZº†å®žçŽ°æŒ‰æ‰¹æŸ¥è¯¢å€Ÿé˜…è®°å½•åQŒæˆ‘们å¯ä»¥å†å»ÞZ¸€ä¸ªè¡¨æ¥ä¿å˜æ‰¹é‡å€Ÿé˜…的信æ¯ï¼Œä¾‹å¦‚åQ?/p>
扚w‡å€Ÿé˜…è¡?Batch_rent)
å称     ¾cÕdž‹ã€€ã€€ã€€ã€€¾U¦æŸæ¡äšg    说明
batch_id int æ— é‡å¤?nbsp; 扚w‡å€Ÿé˜…æ ‡è¯†åQŒä¸»é”?br />
batch_no int ä¸å…è®æ€Ø“½I?nbsp; 扚w‡å€Ÿé˜…¾~–å·åQŒåŒä¸€æ‰¹å€Ÿé˜…çš„batch_no相åŒ
rent_id int ä¸å…è®æ€Ø“½I?nbsp; å€Ÿé˜…è®°å½•æ ‡è¯†åQŒå’ŒRent_log.rent_idå…Œ™”
batch_date datetime ä¸å…è®æ€Ø“½I?nbsp; 扚w‡å€Ÿé˜…æ—‰™—´
  ˜q™æ ·çš„设计好å—?我们æ¥çœ‹çœ‹äؓ了列出æŸä¸ªç”¨æˆähŸ‹Æ¡å€Ÿé˜…的所有书¾c,需è¦å¦‚何查询?首先‹‚€ç´¢æ‰¹é‡å€Ÿé˜…è¡?Batch_rent)åQŒæŠŠ½W¦åˆæ¡äšg的的所有记录的rent_idå—æ®µçš„æ•°æ®ä¿å˜è“væ¥ï¼Œå†ç”¨˜q™äº›æ•°æ®ä½œäؓ查询æ¡äšg带入到借阅记录è¡?Rent_log)ä¸åŽ»æŸ¥è¯¢ã€‚é‚£ä¹ˆï¼Œæœ‰æ²¡æœ‰ä»€ä¹ˆåŠžæ³•æ”¹˜q›å‘¢åQŸä¸‹é¢ç»™å‡ÞZ¸€¿U简‹z的扚w‡è®¾è®¡æ–ÒŽ¡ˆåQŒä¸éœ€æ·ÕdŠ æ–°è¡¨åQŒåªéœ€ä¿®æ”¹ä¸€ä¸‹å€Ÿé˜…记录è¡?Rent_log)å›_¯ã€‚修改åŽçš„记录表(Rent_log)如下åQ?/p>
借阅记录�Rent_log)
å称     ¾cÕdž‹ã€€ã€€ã€€ã€€¾U¦æŸæ¡äšg   说明
rent_id int æ— é‡å¤?nbsp; å€Ÿé˜…è®°å½•æ ‡è¯†åQŒä¸»é”?br />
r_id int ä¸å…è®æ€Ø“½I?nbsp; ç”¨æˆ·æ ‡è¯†åQŒå’ŒRenter_table.renter_idå…Œ™”
b_id int ä¸å…è®æ€Ø“½I?nbsp; ä¹¦ç±æ ‡è¯†åQŒå’ŒBook_table.book_idå…Œ™”
batch_no int ä¸å…è®æ€Ø“½I?nbsp; 扚w‡å€Ÿé˜…¾~–å·åQŒåŒä¸€æ‰¹å€Ÿé˜…çš„batch_no相åŒ
rent_date datetime ä¸å…è®æ€Ø“½I?nbsp; 借阅旉™—´
……
  其ä¸åQŒåŒä¸€‹Æ¡å€Ÿé˜…çš„batch_no和该批第一æ¡å…¥åº“çš„rent_id相åŒã€‚ä‹D例:å‡è®¾å½“剿œ€å¤§rent_idæ˜?4åQŒæŽ¥ç€æŸç”¨æˆ·ä¸€‹Æ¡å€Ÿé˜…äº?本书åQŒåˆ™æ‰šw‡æ’å…¥çš?æ¡å€Ÿé˜…记录的batch_no都是65。之åŽå¦å¤–一个用æˆïL§Ÿäº†ä¸€å¥—碟åQŒå†æ’入出租记录的rent_idæ˜?8。采用这¿U设计,查询扚w‡å€Ÿé˜…çš„ä¿¡æ¯æ—¶åQŒåªéœ€ä½¿ç”¨ä¸€æ¡æ ‡å‡†T_SQL的嵌套查询å³å¯ã€‚当ç„Óž¼Œ˜q™ç§è®¾è®¡ä¸ç¬¦å?NFåQŒä½†æ˜¯å’Œä¸Šé¢æ ‡å‡†çš?NF设计比è“væ¥ï¼Œå“ªä¸€¿U更好呢åQŸç”案就ä¸ç”¨æˆ‘说了å§ã€?/p>
  五ã€å†—余数æ®çš„å–èˆ
  上篇çš?#8220;æ ‘åž‹å…³ç³»çš„æ•°æ®è¡¨”ä¸ä¿ç•™äº†ä¸€ä¸ªå†—余嗌Dµï¼Œ˜q™é‡Œçš„例忛´˜q›ä¸€æ¥â€”â€”æ·»åŠ äº†ä¸€ä¸ªå†—ä½™è¡¨ã€‚å…ˆçœ‹çœ‹ä¾‹ååQšæˆ‘åŽŸå…ˆæ‰€åœ¨çš„å…¬å¸ä¸ÞZº†è§£å†³å‘˜å·¥çš„工作é¤åQŒå’Œé™„近的一家尘¡é¦†è”ç³»åQŒæ¯å¤©åƒé¥è®°è´¦ï¼Œè´¹ç”¨æŒ‰ähæ•°åã^摊,月底由公å¸çŽ°é‡‘ç»“½Ž—,æ¯ä¸ªäººæ¯ä¸ªæœˆçš„工作é¤è´¹ä»Žå·¥èµ„䏿‰£é™¤ã€‚当ç„Óž¼Œæ¯å¤©åƒé¥çš„ähå‘˜å’Œäººæ•°éƒ½ä¸æ˜¯å›ºå®šçš„åQŒè€Œä¸”åQŒç”±äºŽæ¯™å¿å·¥ä½œé¤çš„æ‰€ç‚¹çš„èœè‰²ä¸åŒåQŒæ¯™å¿çš„èŠÞp´¹ä¹Ÿä¸ç›¸åŒã€‚例如,星期一ä¸é¤5äºø™Š±è´?0元,晚é¤2äºø™Š±è´?0åQŒæ˜ŸæœŸäºŒä¸é¤6äºø™Š±è´?6元,晚é¤3äºø™Š±è´?8å…ƒã€‚äØ“äº†æ–¹ä¾¿è®¡½Ž—æ¯ä¸ªähæ¯ä¸ªæœˆçš„工作˜¡è´¹åQŒæˆ‘写了一个简陋的ž®±é¤è®°èÌŽ½Ž¡ç†½E‹åºåQŒæ•°æ®åº“里有3个表åQ?/p>
员工�Clerk_table)
å称     ¾cÕdž‹ã€€ã€€ã€€ã€€¾U¦æŸæ¡äšg   说明
clerk_id int æ— é‡å¤?nbsp; å‘˜å·¥æ ‡è¯†åQŒä¸»é”?br />
clerk_name char(10) ä¸å…è®æ€Ø“½I?nbsp; 员工姓å
æ¯é¤æ€»è¡¨(Eatdata1)
å称     ¾cÕdž‹ã€€ã€€ã€€ã€€¾U¦æŸæ¡äšg   说明
totle_id int æ— é‡å¤?nbsp; æ¯é¤æ€»è¡¨æ ‡è¯†åQŒä¸»é”?br />
persons char(100) ä¸å…è®æ€Ø“½I?nbsp; ž®±é¤å‘˜å·¥çš„å‘˜å·¥æ ‡è¯†é›†å?br />
eat_date datetime ä¸å…è®æ€Ø“½I?nbsp; ž®±é¤æ—¥æœŸ
eat_type char(1) ä¸å…è®æ€Ø“½I?nbsp; ž®±é¤¾cÕdž‹åQŒç”¨æ¥åŒºåˆ†ä¸ã€æ™š˜¡?br />
totle_price money ä¸å…è®æ€Ø“½I?nbsp; æ¯é¤æ€»èбè´?br />
persons_num int ä¸å…è®æ€Ø“½I?nbsp; ž®±é¤äººæ•°
ž®±é¤
å称     ¾cÕdž‹ã€€ã€€ã€€ã€€¾U¦æŸæ¡äšg   说明
id int æ— é‡å¤?nbsp; ž®±é¤è®¡è´¹¾l†è¡¨æ ‡è¯†åQŒä¸»é”?br />
t_id int ä¸å…è®æ€Ø“½I?nbsp; æ¯é¤æ€»è¡¨æ ‡è¯†åQŒå’ŒEatdata1.totle_idå…Œ™”
c_id int ä¸å…è®æ€Ø“½I?nbsp; å‘˜å·¥æ ‡è¯†æ ‡è¯†åQŒå’ŒClerk_table.clerk_idå…Œ™”
price money ä¸å…è®æ€Ø“½I?nbsp; æ¯ähæ¯é¤èŠÞp´¹
  其ä¸åQŒå°±˜¡è®¡è´¹ç»†è¡?Eatdata2)的记录就是把æ¯é¤æ€»è¡¨(Eatdata1)的一æ¡è®°å½•按ž®±é¤å‘˜å·¥òqÏx‘Šæ‹†å¼€åQŒæ˜¯ä¸ªä¸æŠ˜ä¸æ‰£çš„冗余表。当ç„Óž¼Œä¹Ÿå¯ä»¥æŠŠæ¯é¤æ€»è¡¨(Eatdata1)的部分嗌Dµåˆòq¶åˆ°ž®±é¤è®¡è´¹¾l†è¡¨(Eatdata2)ä¸ï¼Œ˜q™æ ·æ¯é¤æ€»è¡¨(Eatdata1)ž®±æˆäº†å†—余表åQŒä¸˜q‡è¿™æ äh‰€è®¾è®¡å‡ºæ¥çš„å°±˜¡è®¡è´¹ç»†è¡¨é‡å¤æ•°æ®æ›´å¤šï¼Œç›¸æ¯”æ¥è¯´˜q˜æ˜¯ä¸Šé¢çš„æ–¹æ¡ˆå¥½äº›ã€‚但是,ž®±æ˜¯ž®±é¤è®¡è´¹¾l†è¡¨(Eatdata2)˜q™ä¸ªå†—ä½™è¡¨ï¼Œåœ¨åšæ¯æœˆæ¯äh˜¡è´¹¾lŸè®¡çš„æ—¶å€™ï¼Œå¤§å¤§½Ž€åŒ–了¾~–ç¨‹çš„å¤æ‚度åQŒåªç”¨ç±»ä¼ÆD¿™ä¹ˆä¸€æ¡æŸ¥è¯¢è¯å¥å³å¯ç»Ÿè®¡å‡ºæ¯ähæ¯æœˆçš„寄˜¡æ¬¡æ•°å’Œ˜¡è´¹æ€Õd¸åQ?/p>
SELECT clerk_name AS personname,COUNT(c_id) as eattimes,SUM(price) AS ptprice FROM Eatdata2 JOIN Clerk_tabsle ON (c_id=clerk_id) JOIN eatdata1 ON (totleid=tid) WHERE eat_date>=CONVERT(datetime,'"&the_date&"') AND eat_date<DATEADD(month,1,CONVERT(datetime,'"&the_date&"')) GROUP BY c_id
  惌™±¡ä¸€ä¸‹ï¼Œå¦‚æžœä¸ç”¨˜q™ä¸ªå†—ä½™è¡¨ï¼Œæ¯æ¬¡¾lŸè®¡æ¯ähæ¯æœˆçš„é¤è´ÒŽ€Õd¸æ—¶ä¼šå¤šéº»çƒ¦ï¼Œ½E‹åºæ•ˆçŽ‡ä¹Ÿå¤Ÿå‘›ã€‚é‚£ä¹ˆï¼Œåˆ°åº•ä»€ä¹ˆæ—¶å€™å¯ä»¥å¢žåŠ ä¸€å®šçš„å†—ä½™æ•°æ®å‘¢ï¼Ÿæˆ‘认为有2个原则:
  åQ‘ã€ç”¨æˆïLš„æ•´ä½“需求。当用户更多的关注于åQŒå¯¹æ•°æ®åº“的规范记录按一定的½Ž—法˜q›è¡Œå¤„ç†åŽï¼Œå†åˆ—出的数æ®ã€‚如果该½Ž—法å¯ä»¥ç›´æŽ¥åˆ©ç”¨åŽå°æ•°æ®åº“ç³»¾lŸçš„内嵌函数æ¥å®Œæˆï¼Œæ¤æ—¶å¯ä»¥é€‚å½“çš„å¢žåŠ å†—ä½™å—ŒDµï¼Œç”šè‡³å†—余表æ¥ä¿å˜˜q™äº›¾l过½Ž—法处ç†åŽçš„æ•°æ®ã€‚è¦çŸ¥é“åQŒå¯¹äºŽå¤§æ‰šw‡æ•°æ®çš„æŸ¥è¯¢ï¼Œä¿®æ”¹æˆ–åˆ é™¤ï¼ŒåŽå°æ•°æ®åº“ç³»¾lŸçš„æ•ˆçއ˜qœè¿œé«˜äºŽæˆ‘们自己¾~–写的代ç ã€?br />
  åQ’ã€ç®€åŒ–å¼€å‘çš„å¤æ‚度。现代èÊYä»¶å¼€å‘ï¼Œå®žçŽ°åŒæ ·çš„功能,æ–ÒŽ³•有很多。尽½Ž¡ä¸å¿…è¦æ±‚程åºå‘˜¾_ùN€šç»å¤§éƒ¨åˆ†çš„å¼€å‘工具和òq›_°åQŒä½†æ˜¯è¿˜æ˜¯éœ€è¦äº†è§£å“ª¿U方法æé…哪¿Uå¼€å‘å·¥å…ïLš„½E‹åºæ›´ç®€‹z,效率更高一些。冗余数æ®çš„æœ¬è´¨ž®±æ˜¯ç”¨ç©ºé—´æ¢æ—‰™—´åQŒå°¤å…¶æ˜¯ç›®å‰¼‹¬äšgçš„å‘展远˜qœé«˜äºŽèÊYä»Óž¼Œæ‰€ä»¥é€‚当的冗余是å¯ä»¥æŽ¥å—的。丘q‡æˆ‘˜q˜æ˜¯åœ¨æœ€åŽå†å¼ø™°ƒä¸€ä¸‹ï¼šä¸è¦˜q‡å¤šçš„ä¾èµ–åã^å°å’Œå¼€å‘å·¥å…ïLš„ç‰ÒŽ€§æ¥½Ž€åŒ–å¼€å‘,˜q™ä¸ªåº¦è¦æ˜¯æ²¡æŠŠæ¡å¥½çš„è¯ï¼ŒåŽæœŸ¾l´æŠ¤å‡çñ”ä¼šæ ½å¤§è·Ÿå¤´çš„ã€?/p>