기존에 회사에서 SI 업무를 하다가 더이상 SI업무는 안하고 있는데 SM은 계속 하는게 좋다는 방침으로.. 웹 개발을 가끔 하고 있습니다.
그런데 묘한 궁금증이 생겨났는데 웹 쪽이 전공이 아니라.. 궁금한걸 해결할 방법이 없어 질문드립니다.
기존 SI 업무를 했을 때 DB 구조를 보면 (MySQL 기준입니다.) 분명 FK, unique index가 있으면 좋은 상황인데도 사용하지 않더라고요.
웹쪽 질문으로 말씀드리는 이유는 응용 프로그램이나 다른 서버에서 사용할 프로그램을 짤 때는 분명 FK를 사용했었습니다. 그런데
웹 개발한 것들을 보면 5중 조인이 되어있는 쿼리도 있는데 인덱스는 no 필드 하나에 pk로 걸고 땡이더군요.. 이걸로 조인하는건 맞지만
fk 설정을 하면 퍼포먼스로 봐도, 편의성으로 봐도 이득 아닌가요..? 게시판 같은 페이지도 아니고 서비스 결제 관련 로직이라
실질적으로 부하를 주거나 하는 로직도 아닌데.. 오히려 관리자 페이지에서도 JOIN을 해야해서 어마무시하게 느립니다 ㅡㅡ;
1. 웹 개발의 경우 외래 키를 사용 안하는지?
2. unique key 도 사용하는 것을 보질 못했습니다. 회원 아이디의 경우 무결성이 필요하면서 index 설정하는 것이 이득이라 보이는데.. 사용하지 말아야 할 이유같은게 있는 건가요?
3. db정규화를 해야한다고 배웠는데 제가 했던 sm 업무들 대부분은 그런게 없었습니다. 웹에서 DB 정규화를 하면 안좋은 점이 있나요? 퍼포먼스로는 하락이 있을 수 있겠지만 MVC 패턴과 같이 확장성과 관리의 용이함에서 가지는 이점이 뛰어난 것 아니었나요..?
¾÷¹«·®À» ÅëÇØ ÇÁ·ÎÁ§Æ® ±â°£ÀÌ »êÃâµÇÁö ¾Ê¾Æ¼
¼³°è/°³¹ß ±â°£ÀÌ º¸Åë Àý´ëÀûÀ¸·Î ºÎÁ·ÇÑ »óȲ¿¡¼
DB Á¦¾àÀ» °É¾î ³õÀ¸¸é
°³¹ß±â°£¾È¿¡ °³¹ß ¸øÇÑ´Ù°í ¾Ð·ÂÀÌ...
DA °¡ ÅõÀÔµÈ ÇÁ·ÎÁ§Æ®´Â Á¤±Ôȸ¦ Àß ¼öÇàÇÏ´Â ÆíÀÔ´Ï´Ù.
°³¹ß PL µéÀÌ ¼³°è¸¦ ÇÏ´Â °æ¿ì Á¤±ÔÈ°¡ ¸¹ÀÌ ºÎÁ·ÇÑ ÆíÀÌÁÒ.
ÆÛÆ÷¸Õ½º´Â °úµµÇÑ Á¤±Ôȸ¸ ¾Æ´Ï¸é º¸Åë Á¤±ÔÈ µÇ¾î ÀÖÀ»¶§ ´õ ÁÁ°Ô ³ª¿É´Ï´Ù.(°æÇè»ó)
1¹øÇÏ°í 2¹ø ´äº¯ : ÄÉÀ̽º ¹ÙÀÌ ÄÉÀ̽ºÀÔ´Ï´Ù.
±Ô¸ð°¡ ÀÛÀº »çÀÌÆ®³ª Áß¿äµµ°¡ Á» ³·°Å³ª °³¹ßÀÏÁ¤ÀÌ ³Ê¹« Ã˹ÚÇϰųª ±×·± °æ¿ì´Â no¿¡¸¸ pk°É°í ³ª¸ÓÁö´Â ÀüºÎ ¾îÇôܿ¡¼¸¸ ó¸®ÇÕ´Ï´Ù.
±Ô¸ð°¡ Á» µÇ°Å³ª (µ·°ªÀº ÇؾߵǴϱñ) Áß¿äµµ°¡ ³Ê¹« ³ôÀº °÷Àº ¾îÇôܿ¡¼µµ üũÇÏÁö¸¸ ÇÑÄ¡ÀÇ ºÒ·®µ¥ÀÌÅ͵µ À־ ¾ÈµÇ±â ¶§¹®¿¡
±×·±°÷À» °³¹ßÇÒ¶© fk, unique ÀüºÎ ´Ù »ç¿ëÇÕ´Ï´Ù.
3¹ø : À§ÀÇ ´äº¯°ú ±âº»ÀûÀ¸·Î´Â °°°í¿ä.
À¥À̶ó°í ÇÏ¿©µµ ¾÷¹«½Ã½ºÅÛ°°Àº ƯÁ¤ ¼Ò¼ö ÀÌ¿ëÀÚ »çÀÌÆ®´Â »ó°üÀÌ ¾øÀ»¼öµµ ÀÖÁö¸¸,
ºÒƯÁ¤ ´Ù¼ö°¡ °Ì³» ¸¹ÀÌ µé¾î¿À´Â »çÀÌÆ®´Â ¹Ù·Î ±× ¾à°£ÀÇ ÆÛÆ÷¸Õ½º Ç϶ôÀ» °áÄÚ ¹«½ÃÇÒ ¼ö ¾ø°Ô µË´Ï´Ù.
±Ø´ÜÀûÀÎ °æ¿ì´Â µ¿ÀÏ µ¥ÀÌÅ͸¦ »ç¹æ¿¡ º¹»çÇϱ⵵ ÇÏ°í (ij½¬È¿°ú?) º¶óº° ÀÛ¾÷À» ´Ù ÇÕ´Ï´Ù;;
ij½¬µµ °É ¼ö ÀÖÀ¸¸é ÃÖ´ëÇÑ °É°í¿ä
»ç¿ëÀÚµéÀÌ ¿¹Àü¿£ ±×·¡µµ Ŭ¸¯ÇßÀ»¶§ 2~3ÃÊ Á¤µµ´Â ±â´Ù·ÈÁö¸¸ ¿äÁò¿£ 1ÃÊ ³Ñ¾î°¡¸é È¸é ´Ý¾Æ¹ö¸³´Ï´Ù.
¾ÖÃÊ¿¡ ´À¸®¸é °í°´»ç¿¡¼ °Ë¼ö¸¦ ¾ÈÇØÁÖÁÒ.
¹°·Ð Àú°°Àº °æ¿ì´Â Á¦°¡ ´À¸°°É ³Ê¹« ½È¾îÇؼ ±×·¸°Ô ¸¸µéÁöµµ ¾ÊÁö¸¸
´Ù¸¥¾÷ü°¡ ¼Óµµ ¹®Á¦·Î °Ë¼ö¸¦ ¸ø¹Þ¾Æ¼ ÇÑ´Þµ¿¾È Æ©´×¸¸ ÁÖ±¸Àåâ ÇÏ´Â°É ºÃ½À´Ï´Ù.
ºñÁ¤±ÔÈ´Â ¹°·ÐÀÌ°Å´Ï¿Í ajax¹æ½ÄÀ» Æ÷ÇÔÇÑ ¿Â°® °í±Þ±â¹ý »ç¿ëÇؼ ÀÌ»Ú°Ô ¸¸µç UI±îÁö ½Ï ¹Ù²Ù¸é¼ °Ü¿ì 1Ãʳ»·Î ÁøÀÔÇÏ¿© ¿Ï·áÇÏ´õ±º¿ä.
(Á¦°¡ ±âÁ¸¿¡ µ¿Àϵðºñ µ¿ÀÏ È¯°æ µ¿ÀÏ ±¸¼ºÀ¸·Î 0.1Ãʳ»·Î ³ª¿À´Â »çÀÌÆ®¸¦ ¹Ì¸® ¸¸µé¾î ³õÀº °Í ¶§¹®¿¡ ´õ ºñ±³µÇ¼ ±×·±°ÉÁöµµ ¤»¤»)
ÇÊ¿ä ÀÖ´ø ¾ø´ø unique key´Â ¹Ýµå½Ã ³Ö¾î¾ß ÇÕ´Ï´Ù (auto)
innodbÀÇ ¼º´É¿¡ ¿µÇâÀÌ ÀÖ½À´Ï´Ù.
joinÀÇ °æ¿ì´Â ¼Óµµ°¡ ´Ê½À´Ï´Ù.
±×·¡¼ join°ú sub set operation + join µîÀÇ ¹æ¹ýÀ» ÀûÀýÈ÷ ¼¯¾î¼ ¾¹´Ï´Ù. »óȲ¿¡ ¸Â°Ô.
°æÇèÄ¢ÀÌ ´õ Å®´Ï´Ù.
1ÀÇ°æ¿ì FK¸¦ ÇÏÁö¾ÊÀ¸¸é Àå/´ÜÁ¡ÀÌ ÀÖ½À´Ï´Ù... FK°¡ ¾øÀ¸¸é DBº¯°æÀÌ Á»´õ ÀÚÀ¯·Î¿öÁý´Ï´Ù..
¿î¿µÀûÀÎ Ãø¸é¿¡¼ º¸¸é FK¾ø´Â°Ô Á»´õ À̵æÀϼöÀÖ½À´Ï´Ù.
FK°¡ Á¦´ë·Î °É·ÁÀִ°æ¿ì´Â µ¥ÀÌÅÍ ¼öÁ¤À» ÇϳªÇÒ·Á°íÇصµ ¿©·¯Å×À̺íÀ» ÀüºÎ ½Å°æ½áÁà¾ßÇÏ´Â °æ¿ì°¡ »ý°Ü¼¿ä...
¹Ý´ë·Î µ¥ÀÌÅÍÁ¤ÇÕ¼ºÀº Á»´õ º¸ÀåÀÌ µÅ°ÚÁö¿ä...
2ÀÇ °æ¿ì´Â Ưº°ÇÑ ÀÌÀ¯°¡ ÀÖ¾î¼ ±×·±°Ç ¾Æ´Ñ°Í °°³×¿ä...
ÇÁ·Î±×·¥ÀûÀ¸·Î Áߺ¹À» ¸·¾Ò´Ù°íÇصµ.. Áߺ¹°ÇÀ» Çã¿ëÇÏÁö¾ÊÀ»°ÍÀ̶ó¸é PK´Â Á¸Á¦ÇÏ´Â°Ô ³ª¾Æº¸À̳׿ä...
3ÀÇ °æ¿ìµµ °á±¹ ¼³°è´ç½Ã¿¡´Â Á¤±Ôȸ¦ ¾î´ÀÁ¤µµ Çß¾úÁö¸¸...
¿î¿µÇÏ´Ùº¸¸é Á¤±Ôȸ¦ ÇϰԵŸé... joinÀÌ ¸¹ÀÌ »ç¿ëµÅ°í.. ºÒÆíÇÑ°æ¿ì°¡ ÀÖ¾î¼...
¾Æ¸¶ ¿î¿µÇÏ¸é¼ Ä÷³µéÀÌ ´Ã¾î³°æ¿ì¶ó¸é.. Á¤±Ôȸ¦ ¾ÈÇÑ°æ¿ìµµ ¸¹ÀÌ »ý±æ¼öÀÖÁÒ...
´Ù¸¸ ¾ó¸¶³ª ¸¹Àº ¼öÁ¤°ÇÀÌ ¹ß»ýÇÒÁö ¸ð¸£´Â »óȲÀ̶ó¸é ¾ÊÇÏ´Â°Ô ÆíÇÏ°ÚÁÒ.
»óȲº°·Î Àü ±×³É Æ®¸®°Å¸¦ »ç¿ëÇϰųª ÀÏÁ¤ ½Ã°£º°·Î ¹«°á¼º üũÇÏ´Â ºÎºÐÀ» ³Ö¾îÁÝ´Ï´Ù.
²Ï ¿À·¡ ÀÌÂÊÀÏ Çߴµ¥ óÀ½¿¡´Â ASP + MSSQL·Î ½ÃÀÛÇؼ FK´Â ´ç¿¬ÇÑ°É·Î ºÃÁö¸¸ ½Ã°£ÀÌ Áö³¯¼ö·Ï ¾ÊÇÏ°Ô µÇ´õ±º¿ä
2. »óȲº°·Î Ʋ¸®°ÚÁÒ. ¾îµð¼´Â ID¸¦ unique¸¦ ¾²°ÚÁö¸¸ »ý°¢À» Á» ´õ ´Þ¸®ÇÑ´Ù¸é user_no¸¦ unique ÇüÅ·ΠÇسõ°í ID´Â ±×³É µû¶ó´Ù´Ï´Â ÇüÅ·Π¸¸µé±âµµ Çϰŵç¿ä
3. ¹®¼È°¡ Áß¿äÇÑ ÀÌÀ¯°ÚÁÒ. »çÀü¿¡ ¹®¼ÈµÇÁö ¾ÊÀº °³¹ß »çÀÌÆ®´Â Á¤±Ôȸ¦ Á¦´ë·Î ÇÏÁö ¾Ê´Â °æ¿ì°¡ ¸¹½À´Ï´Ù.
¸»¾¸ÇϽŠ³»¿ëÀº °³¹ß´Ü°è¿¡¼± ±×·°Àú·° ³Ñ¾î°¥¸¸Çѵ¥
³ª~~~Áß¿¡ data °¡ ´©ÀûµÇ°í DB°¡ °Å´ëÈ µÇ¸é¼ Àå¾Ö¸¦ ÀÏÀ¸Å°´Â Æ÷ÀÎÆ®°¡ µÇ´Â »çÇ×µéÀÌÁÒ ¸ð,,,
Äõ¸®Æ©´×°ú ´õºÒ¾î index ÀûÀýÈ÷ °É¾îÁÖ´Â °Íµµ ¼Óµµ¿¡ Áß¿äÇÏ´õ±º¿ä.