질문을 삭제하지 말아주세요.!
 
1
0
-1

현재 독학으로 relationship 공부중인데 실습을 무작정 따라하다 보니깐


일대다 다대다 는 어느정도 정의할수있는대요,, 


어떤 상황에서 정의 하는지가 좀 아리송해서 질문을 남깁니다 ,, 


일대일은 유저 테이블과 유저의 개인정보 테이블과 같은 상황에 관계하고 


일대다는 한 게시글에 여러 댓글이 달리는 것과 같은 상황에 관계하고


다대다 부터 다형성 종류 까지 좀 아리송한데,, 진짜 실무에서 이런 경우에 다대다 / 다형성 을 사용한다 


이렇게좀 정리좀 해주실수있을까요 ㅠㅠ ? 


그리고 다형성을 자세히좀 알려주실수있을까요 ㅠㅠ? 메뉴얼을 봐도 개념은 잘 안나오는것같아서,, 


무작정 실습을 하는것보단 이럴때 사용하는구나를 좀 알고싶어서요 ㅠㅠ 


질문이 많아 항상 죄송합니다 ㅠㅠ





    CommentAdd your comment...

    2 answers

    1.  
      1
      0
      -1

      다대다 로 마니쓰이는 것중 하나가 태그(tags)와 게시글(articles) 인것 같습니다.

      modernpug 질문 작성하실때 설정하시는 주제 또한 태그에 속하는 기능입니다.

      주제(태그)는 한가지 글에 여러개가 가능하며, 또한 주제는 꼭 한가지 글에만 매칭이 되지 않는 관계이기때문에 다대다(N:N) 관계라고 볼 수 있습니다.

      tags
      ----------------------
      id / int(10) / pk
      name / varchar(20) /
      created_at / datetime / 
      updated_at / datetime / 
      
      
      articles
      -----------------------
      id / int(10) / pk
      title / varchar(50) / 
      content / text / 
      created_at / datetime / 
      updated_at / datetime /
      
      
      article_tag 
      -----------------------
      id / int(10) / pk
      tag_id / int(10) / tags id(외래키)
      article_id / int(10) / articles id(외래키)
      created_at / datetime / 
      updated_at / datetime /


      다형성은 이러한 다대다 관계가 두개의 테이블이 여러개의 테이블에서 나타날때라고 생각하시면 됩니다.

      태그(tags)라는건 게시글(articles)에도 쓰이지만 상품(products)에도 사용이 가능합니다.

      products하고 다대다를 유지하고 articles하고도 다대다를 유지하기 위해 아래와 같이 테이블이 구성되어 있다면 다형성 관계라고 할 수 있습니다.


      articles
      -------------------------------
      id / int(10) / pk
      title / varchar(50) / 
      content / text / 
      created_at / datetime / 
      updated_at / datetime /
      
      products
      -------------------------------
      id / int(10) / pk
      name / varchar(100) / 
      count / int(10) /
      created_at / datetime / 
      updated_at / datetime /
      
      tags
      --------------------------------
      id / int(10) / pk
      name / varchar(20) /
      created_at / datetime / 
      updated_at / datetime / 
      
      taggables
      --------------------------------
      tag_id / int(10) / pk
      taggable_id / int(10) / products id or articles id
      taggable_type / varchar(10) / 'products' or 'articles'

      제가 설명을 적어놓고 보니 그렇게 좋은 예시는 아닌 것 같네요^^;; 참고하실만 자료로

      정광섭님 블로그에 설명된 다형성 관계 포스팅 링크 남겨드려요.

      https://www.lesstif.com/pages/viewpage.action?pageId=27984056

        CommentAdd your comment...
      1.  
        2
        1
        0

        다대다 관계는 피봇 테이블을 구성할 때 많이 사용하며 대표적인 예로는 사용자별 권한 설정입니다.


        다형성은 RDB 의 기능은 아니고 ORM 프레임워크에서 제공하는 기능으로 예제는 다음 문서를 참고하시면 됩니다.

          CommentAdd your comment...