36-3.°ü°è

36-3-1.°ü·Ã Å×À̺í Ãâ·Â

°ü°è°¡ ÀÖ´Â Å×À̺íÀ» °Ë»öÇÒ ¶§´Â º¸Åë ¿Ü·¡Å° °ü°è¸¦ ÀÌ¿ëÇÑ´Ù. ¼­¹ö¿¡¼­ºÎÅÍ ¿Ü·¡Å° Á¦¾àÀÌ °ü¸®µÇ°í ÀÖÀ¸¹Ç·Î SQL Á¶Àι®À¸·Î °ü·Ã ÇàÀ» °Ë»öÇÒ ¼ö ÀÖ°í ´å³ÝÀÌ Á¦°øÇÏ´Â ¿Ü·¡Å° Á¦¾à °´Ã¼¸¦ È°¿ëÇÏ¿© GetParentRow, GetChildRows ¸Þ¼­µå·Îµµ ºÎ¸ð, ÀÚ½Ä ÇàÀ» °Ë»öÇÒ ¼ö ÀÖ´Ù. Á»´õ ½¬¿î ¹æ¹ýÀ¸·Î °³¹ßÅøÀÌ Á¦°øÇÏ´Â ¸¶½ºÅÍ/µðÅ×ÀÏ ÆûÀ» È°¿ëÇÒ ¼ö Àִµ¥ ²ø¾î´Ù ³õ±â¸¸ Çصµ °ü·Ã Å×À̺íÀ» Àϸñ ¿ä¿¬ÇÏ°Ô °Ë»ö ¹× Ãâ·ÂÇÒ ¼ö ÀÖ´Ù.

 

MasterDetail

 

»õ ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇÑ ÈÄ µ¥ÀÌÅÍ ¼Ò½º ±¸¼º ¸¶¹ý»ç¿¡¼­ tblPeople°ú tblSaleÀ» ¸ðµÎ ¼±ÅÃÇÑ´Ù. µ¥ÀÌÅÍ ¼Ò½ºÃ¢¿¡ µÎ Å×À̺íÀÌ Ç¥½ÃµÈ´Ù.

tblPeopleÀÇ µå·Ó ´Ù¿î ¸Þ´º¿¡¼­ ÀÚ¼¼È÷¸¦ ¼±ÅÃÇÑ ÈÄ ÆûÀ¸·Î µå·¡±×Çϸé ÅؽºÆ® ¹Ú½º¿Í üũ ¹Ú½º·Î °í°´ ÇѸíÀÇ Á¤º¸°¡ Ãâ·ÂµÈ´Ù. ÀÌ °í°´ÀÌ ±¸ÀÔÇÑ ¹°°ÇÀ» Ãâ·ÂÇϱâ À§ÇØ tblSaleÀ» µå·¡±×ÇÏ¿© Æû¿¡ ¹èÄ¡Ç쵂 tblPeople°ú °°Àº ¼öÁØÀÇ tblSaleÀÌ ¾Æ´Ï¶ó Male¿­ ¹Ù·Î ¹Ø¿¡ ÀÖ´Â tblSaleÀ» µå·¡±×ÇÑ´Ù. tblSaleÀº tblPeopleÀÇ µðÅ×ÀÏ Å×À̺íÀ̹ǷΠtblPeople ³ëµå ¾Æ·¡¿¡µµ ³ªÅ¸³ª´Âµ¥ ÀÌ ³ëµå¸¦ µå·¡±×ÇÑ´Ù. ±¸ÀÔ ¸ñ·ÏÀÌ ±×¸®µå·Î Ãâ·ÂµÈ´Ù.

¿ÞÂÊ¿¡ tblPeopleÀÇ ·¹ÄÚµå Çϳª°¡ Ç¥½ÃµÇ°í ¿À¸¥ÂÊ ±×¸®µå¿¡ ÀÌ °í°´ÀÌ ±¸ÀÔÇÑ ¹°°ÇÀÇ ¸ñ·ÏÀÌ ³ªÅ¸³­´Ù. ³×ºñ°ÔÀÌÅÍÀÇ À̵¿ ¹öÆ°À» ´­·¯ ´ÙÀ½ ·¹ÄÚµå·Î À̵¿ÇØ º¸¸é °í°´ÀÌ ¹Ù²ð ¶§¸¶´Ù ±¸ÀÔ ³»¿ªµµ °°ÀÌ °»½ÅµÈ´Ù. µå·¡±×¸¸ ÇÏ¸é µÇ¹Ç·Î Á¶Àκ¸´Ù °£´ÜÇÏ°í Äڵ带 ÀÛ¼ºÇÏÁö ¾Ê¾Æµµ ÆûÀÌ ¿Ï¼ºµÈ´Ù. ¿À¸¥ÂÊ ±×¸®µå ºä¿¡ ¿¬°áµÈ tblSaleBindingSourceÀÇ ¼Ó¼ºÃ¢À» º¸¸é ¾î°¼­ ÀÌ·¸°Ô µ¿ÀÛÇÏ´ÂÁö ¾Ë ¼ö ÀÖ´Ù.

DataSource°¡ µ¥ÀÌÅÍ ¼Ò½ºÀÇ À̸§ÀÌ ¾Æ´Ï¶ó tblPeopleÀÇ BindingSource ÄÁÆ®·Ñ·Î ÁöÁ¤µÇ¾î ÀÖÀ¸¸ç DataMember°¡ ¿Ü·¡Å°·Î ÁöÁ¤µÇ¾î ÀÖ´Ù. ±×·¡¼­ tblPeopleBindingSource°¡ °¡¸®Å°´Â Å×ÀÌºí¿¡ ¼±ÅÃµÈ ÇàÀÇ ÀÚ½ÄÇàÀ» ã¾Æ Ç¥½ÃÇÑ´Ù. Å×ÀÌºí¿¡ ¹ÙÀεùµÈ °ÍÀÌ ¾Æ´Ï¶ó ¿Ü·¡Å°¿¡ ¹ÙÀεùµÇ¾î ÀÖ¾î °ü·ÃÇàÀÌ ÀÚµ¿À¸·Î °Ë»öµÇ¾î Ãâ·ÂµÈ´Ù. °ü·ÃÇàÀ» °Ë»öÇÏ¿© Ãâ·ÂÇÒ ¶§´Â ÀÌ ¹æ¹ýÀÌ °¡Àå °£´ÜÇÏ´Ù. ¹°·Ð ÆûÀÇ ÄÁÆ®·ÑÀ» ÅëÇØ »õ·Î¿î ·¹Äڵ带 »ðÀÔÇϰųª ÆíÁýÇÏ´Â °Íµµ °¡´ÉÇϸç ÀúÀåµµ ÇÒ ¼ö ÀÖ´Ù.

36-3-2.Å×ÀÌºí ¹× °ü°è

µ¥ÀÌÅÍ ¼Ò½º ±¸¼º ¸¶¹ý»ç·Î Å×À̺íÀ» ÀоîµéÀ̸é ÀÌ Å×À̺íÀ» °ü¸®ÇÏ´Â ¾î´ðÅÍ°¡ °°ÀÌ »ý¼ºµÇ¸ç ¾î´ðÅÍ ±¸¼º ¸¶¹ý»ç·Î ¾î´ðÅ͸¦ ¸¸µé¸é Å×ÀÌºí °´Ã¼µµ °°ÀÌ »ý¼ºµÈ´Ù. ¾î´ðÅÍ¿Í Å×À̺íÀº 1:1·Î ´ëÀÀµÇ¹Ç·Î °ÅÀÇ Ç×»ó °°ÀÌ »ý¼ºµÇ¸ç µðÀÚÀ̳ʿ¡µµ ¹­À½À¸·Î Ç¥½ÃµÈ´Ù. ¾î´ðÅÍ°¡ ÀÖ¾î¾ß Å×À̺íÀÇ ³»¿ëÀ» ÀоîµéÀ̰ųª ÀúÀåÇÒ ¼ö ÀÖ°í ¾î´ðÅÍÀÇ Äõ¸®¹®Àº Åë»ó ƯÁ¤ Å×À̺íÀ» ÂüÁ¶Çϱ⠶§¹®ÀÌ´Ù.

±×·¯³ª ÀÌ µÑÀÌ Ç×»ó °°ÀÌ ¹­À½À» ÀÌ·ç¾î¾ß ÇÏ´Â °ÍÀº ¾Æ´Ï´Ù. ¾Õ¿¡¼­ ¹è¿î Àü¿ª Äõ¸®´Â Å×À̺í¾øÀÌ ¾î´ðÅ͸¸ Á¸ÀçÇÑ´Ù. ¶Ç ¾î´ðÅ;øÀÌ µ¶¸³ ½ÇÇàÇü Å×ÀÌºí¸¸ »ý¼ºÇÒ ¼öµµ ÀÖ´Ù. ¿©±â¼­´Â µ¥ÀÌÅÍ ¼Ò½º ±¸¼º ¸¶¹ý»ç¿Í Å×ÀÌºí ¾î´ðÅÍ ¸¶¹ý»ç¾øÀÌ µ¥ÀÌÅÍ ÁýÇÕ µðÀÚÀ̳ʸ¸À¸·Î Å×À̺í°ú °ü°è¸¦ ¸¸µé¾î º¸ÀÚ.

 

TableRelation

 

¿ÏÀüÈ÷ ºó »óÅÂÀÇ µ¥ÀÌÅÍ ÁýÇÕÀ» ¸¸µé ¶§´Â ÇÁ·ÎÁ§Æ®/»õ Ç׸ñ Ãß°¡ ¸Þ´º¸¦ ¼±ÅÃÇÏ°í ´ëÈ­»óÀÚ¿¡¼­ µ¥ÀÌÅÍ ÁýÇÕÀ» ¼±ÅÃÇÑ´Ù. ¾Æ·¡ÂÊÀÇ À̸§ ÀԷ¶õÀÌ Àִµ¥ µðÆúÆ® À̸§ÀÌ ÁÁÁö ¾ÊÀ¸¹Ç·Î MyDataSetÀ¸·Î ¼öÁ¤ÇÑ´Ù.

¼Ö·ç¼Ç Ž»ö±â¿¡ MyDataSet.xsd ÆÄÀÏÀÌ Ãß°¡µÇ°í µ¥ÀÌÅÍ ¼Ò½º¿¡´Â MyDataSetÀÌ Ç¥½ÃµÇ¸ç Áß¾Ó¿¡´Â ºó µ¥ÀÌÅÍ ÁýÇÕ µðÀÚÀ̳ʰ¡ ¿­¸°´Ù. ¸¶¹ý»ç·ÎºÎÅÍ ¼­¹ö¿¡ ¿¬°áÇÏ¿© Å×À̺íÀ» °¡Á®¿Â °ÍÀÌ ¾Æ´Ï°í µ¥ÀÌÅÍ ÁýÇÕ¸¸ »ý¼ºÇßÀ¸¹Ç·Î ³»ºÎ´Â ÅÖ ºñ¾î ÀÖ´Ù.

¼³¸í´ë·Î ¼­¹ö Ž»ö±â³ª µµ±¸ »óÀÚ¿¡¼­ °³Ã¼¸¦ ²ø¾î´Ù ³õ¾Æ µ¥ÀÌÅÍ ÁýÇÕ¿¡ »õ Ç׸ñÀ» Ãß°¡ÇÑ´Ù. ¼­¹ö Ž»ö±â¿¡¼­ tblPeopleÀ̳ª tblSaleÀ» µå·¡±×ÇÏ¸é ¾î´ðÅÍ¿Í Å×ÀÌºí °³Ã¼°¡ »ý¼ºµÈ´Ù. ¿©±â¼­´Â µµ±¸ »óÀÚ¿¡¼­ DataTableÀ» ²ø¾î µ¥ÀÌÅÍ ÁýÇÕ µðÀÚÀ̳ʿ¡ ¶³¾î¶ß·Á ¿ÏÀüÈ÷ ºó Å×À̺íÀ» »ý¼ºÇØ º¸ÀÚ.

¾Æ¹« ¸â¹öµµ ¾ø°í Á¤¸» ¹Ô¹ÔÇÏ°Ô »ý°å´Ù. ½ºÅ°¸¶µµ ¾ÆÁ÷ °áÁ¤µÇÁö ¾ÊÀº Å×À̺íÀÇ ²®µ¥±â¸¸ ¸¸µç °ÍÀÌ´Ù. Æ˾÷ ¸Þ´ºÀÇ Ãß°¡/¿­ Ç׸ñÀ» ¼±ÅÃÇÏ¸é »õ·Î¿î ¿­ÀÌ »ý¼ºµÈ´Ù. »õ·Î Ãß°¡µÈ ¿­Àº DataColumn1, DataColumn2 ½ÄÀ¸·Î À̸§ÀÌ ºÙ´Âµ¥ ¼Ó¼ºÃ¢¿¡¼­ À̸§°ú ŸÀÔ, ±âŸ ÇÁ·ÎÆÛƼ¸¦ ÆíÁýÇÑ´Ù. Å×À̺í ÀÚüÀÇ ÇÁ·ÎÆÛƼµµ ¼Ó¼ºÃ¢¿¡¼­ ÆíÁýÇÑ´Ù.

 

 Å×À̺í À̸§Àº °³Ã¼ ŸÀÌƲ ¹Ù¿¡¼­ ÀÔ·ÂÇÒ ¼ö Àִµ¥ tblPeople·Î ¹Ù²Ù¾ú´Ù. Name ¿­Àº String ŸÀÔÀ¸·Î ¼±¾ðÇÏ°í MaxLength ÇÁ·ÎÆÛƼ¿¡ 10À» ÁöÁ¤Çß´Ù. Age´Â Int32 ŸÀÔÀÌ°í MaleÀº Boolean ŸÀÔÀÌ¸ç ¼¼ ÇÊµå ¸ðµÎ AllowDBNull ÇÁ·ÎÆÛƼ´Â False·Î ÁöÁ¤ÇÏ¿´´Ù. Name ¿­Àº Æ˾÷ ¸Þ´º¿¡¼­ ±âº»Å° ¼³Á¤À» ¼±ÅÃÇÏ¿© ±âº»Å°·Î ÁöÁ¤Çß´Ù. ÀÌ¿Ü¿¡ ÀÚµ¿ Áõ°¡ ¼Ó¼ºÀ̳ª µðÆúÆ®°ª, ³Î°ª¿¡ ´ëÇÑ Ã³¸® ¹æ½Ä µîÀ» ´õ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.

°è¼ÓÇؼ­ tblSale Å×ÀÌºíµµ °°Àº ¹æ¹ýÀ¸·Î »ý¼ºÇÑ´Ù. ÀÌ°Í Àú°Í ÁöÁ¤ÇÒ °ÍÀÌ ¸¹¾Æ ±²ÀåÈ÷ º¹ÀâÇÑ °Í °°Áö¸¸ Å×ÀÌºí »ý¼º ½ºÅ©¸³Æ®ÀÇ Áö½Ã´ë·Î ¿­À» Ãß°¡ÇÏ°í ¼Ó¼ºÀ» ÁöÁ¤ÇÏ¸é µÈ´Ù. µ¥ÀÌÅÍ ÁýÇÕ µðÀÚÀ̳ʿ¡ ´ÙÀ½ µÎ °³ÀÇ Å×À̺íÀÌ ³ªÅ¸³­´Ù.

µ¥ÀÌÅÍ ¼Ò½º ±¸¼º ¸¶¹ý»ç·Î DBMS¿¡ ÀÖ´Â Å×À̺íÀ» °¡Á®¿À¸é ¸¶¹ý»ç°¡ ½ºÅ°¸¶¸¦ ºÐ¼®ÇÏ¿© °ü°èµµ ÀÚµ¿À¸·Î »ý¼ºµÈ´Ù. ÇÏÁö¸¸ ÀÌ ¿¹Á¦´Â Å×À̺íÀ» µû·Î ¸¸µç °ÍÀ̶ó °ü°è°¡ »ý¼ºµÇ¾î ÀÖÁö ¾Ê´Ù. ´ÙÀ½Àº °ü°è¸¦ Ãß°¡ÇÑ´Ù. µµ±¸ »óÀÚ¿¡¼­ RelationÀ» µå·¡±×ÇÏ¿© ÀÚ½Ä Å×À̺í À§¿¡ ¶³¾î¶ß¸°´Ù. ÀÌ °æ¿ì tblSale¿¡ ¶³¾î¶ß¸®¸é µÈ´Ù. °ü°è ¼³Á¤ ´ëÈ­»óÀÚ°¡ ³ªÅ¸³­´Ù.

°ü°èÀÇ À̸§°ú ºÎ¸ð Å×À̺íÀÇ Å°, ÀÚ½Ä Å×À̺íÀÇ ¿Ü·¡Å° µîÀ» ÁöÁ¤ÇÑ´Ù. µÎ °³ÀÇ Å×À̺í¹Û¿¡ ¾ø¾î ¹Ì¸® ¼±ÅõǾî ÀÖ°í °¢ Å×À̺íÀÇ Ã¹ ¹ø° ¿­ÀÌ Å°·Î ¼±Á¤µÇ¾î ÀÖ´Ù. ÀÚ½Ä Å×À̺íÀÇ ¿Ü·¡Å°°¡ OrderNo·Î µÇ¾î Àִµ¥ Customer·Î ¹Ù²Û´Ù. ¾Æ·¡ÂÊÀÇ ¸¸µé ´ë»ó¿¡¼­ "°ü°è ¹× ¿Ü·¡ Å° Á¦¾à Á¶°Ç ¸ðµÎ"¸¦ ¼±ÅÃÇÏ¿© °ü°è¿Í Á¦¾àÀ» ¸ðµÎ »ý¼ºÇÑ´Ù. ¿Ü·¡Å°¿¡ ´ëÇؼ­´Â ºÎ¸ð Å×À̺íÀÇ º¯È­¿¡ ´ëÇÑ ÀÚ½Ä Å×À̺íÀÇ º¯°æ ±ÔÄ¢À» ¼±ÅÃÇÒ ¼ö ÀÖ´Ù.

È®ÀÎ ¹öÆ°À» ´©¸£¸é µÎ Å×ÀÌºí »çÀÌ¿¡ Á÷¼±ÀÌ ±×¾îÁ® °ü°è°¡ ¼º¸³µÇ¾ú´Ù´Â °ÍÀÌ Ç¥½ÃµÈ´Ù. Æ˾÷ ¸Þ´º¿¡¼­ °ü°è ·¹À̺í Ç¥½Ã Ç׸ñÀ» ¼±ÅÃÇϸé À̸§µµ Ãâ·ÂµÈ´Ù. °ü°è¸¦ ÆíÁýÇÏ·Á¸é ÀÌ ¼±¿¡ ´ëÇÑ Æ˾÷ ¸Þ´º¿¡¼­ °ü°è ÆíÁý Ç׸ñÀ» ¼±ÅÃÇÑ´Ù.

µ¶¸³ ½ÇÇàÇü Å×ÀÌºí¿¡´Â µ¥ÀÌÅ͸¦ ä¿ì´Â Fill ³í¸®°¡ ¾øÀ¸¹Ç·Î ¾Ë¾Æ¼­ ä¿ö¾ß ÇÑ´Ù. ÀÌ »óÅ¿¡¼­´Â ½ÇÇàÇØ ºÃÀÚ È­¸é¿¡ ¾Æ¹«°Íµµ ³ªÅ¸³ªÁö ¾Ê´Â´Ù. µÎ Å×À̺íÀ» Æû¿¡ µå·¡±×ÇÏ¿© ±×¸®µå·Î ¹ÙÀεùÇÒ ¼ö ÀÖÁö¸¸ ±×¸®µå¿¡´Â ¾Æ¹«°Íµµ ³ªÅ¸³ªÁö ¾Ê´Â´Ù. ¼­¹ö¿Í ¿¬°áµÇÁö ¾ÊÀº ¸Þ¸ð¸® ³»ºÎÀÇ Å×À̺íÀ̹ǷΠÀÀ¿ë ÇÁ·Î±×·¥ Äڵ忡¼­ Å×À̺íÀ» ÀÓÀÇÀÇ ¸ñÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. Àӽà Å×À̺í·Î È°¿ëÇѴٰųª XML ÆÄÀÏ·Î ·ÎÄà DB¸¦ ±¸ÇöÇÏ´Â Á¤µµÀÇ ¿ëµµ°¡ ÀÖ´Ù.

µðÀÚÀ̳ʿ¡¼­ Å×À̺íÀ» »ý¼ºÇÏ´Â ÀýÂ÷´Â ÄÚµå»ó¿¡¼­ new DataTable ¸í·ÉÀ¸·Î Å×ÀÌºí »ý¼º ÈÄ new DataColumnÀ¸·Î ¿­À» ¼ø¼­´ë·Î »ý¼ºÇÏ´Â °Í°ú °ÅÀÇ µ¿ÀÏÇÏ´Ù. ¾ÕÀåÀÇ MakeDataSet ¿¹Á¦¿¡¼­ ¸¶¹ý»ç¾øÀÌ µ¥ÀÌÅÍ ÁýÇÕÀ» ¸¸µé¾î º» ÀûÀÌ Àִµ¥ ÀÌ ¿¹Á¦ÀÇ Äڵ带 ¼ø¼­´ë·Î ¸¶¹ý»ç¿¡ Àû¿ëÇÑ °ÍÀÌ´Ù. ºñÁÖ¾ó ȯ°æÀÇ ÆíÁý µµ±¸¸¦ »ç¿ëÇÑ´Ù »ÓÀÌÁö ¼ÕÀ¸·Î Á÷Á¢ Å×À̺íÀ» ¸¸µå´Â °Í°ú ÀýÂ÷°¡ °ÅÀÇ °°´Ù. ´Ü, ¾î·°Å³ª µðÀÚÀ̳ʷΠ¸¸µç Å×À̺íÀº ŸÀÔµå¶ó´Â °ÍÀÌ Å« Â÷ÀÌÁ¡ÀÌ´Ù.