누구든지 HABTM 원칙이 어떻게 작동하는지 설명 할 수 있습니까?
-
06-07-2019 - |
문제
누구든지 (habtm 또는 많은 사람들) "가 어떻게 많은"원칙적 인 작품을 가지고 있고 속한 지 설명 할 수 있습니까? 사용자 테이블과 책 테이블이 있다고 말하면 테이블이 있습니다. users_books
ID가있는 곳. 실제로이 원칙을 실제로 사용해야하며 어떻게 작동합니까?
해결책
왜 많은 관계가 필요한지 묻고 있습니까?
위에서 언급 한 경우 사용자가 많은 책을 소유 할 수 있습니다. 데이터베이스에 당신이 표현하는 방법은 당신이 두 개의 테이블, 책 및 사용자가 있다고 가정합니다. 사용자 테이블에는 각 책에 대해 책 당 하나의 열을 추가 할 수 없습니다. 소유 한 책의 수에 대한 상한이 무엇인지 모르기 때문에 소유 할 수 있습니다. 'Books'라는 열을 추가 하고이 열에 '컬렉션'을 저장할 수 있지만 (XML 또는 Comma 분리 된 것처럼) 많은 데이터베이스 쿼리가 어렵습니다 (예 : 사용자가 소유 한 개별 책을 식별).
책 테이블도 마찬가지입니다. 얼마나 많은 사용자가 특정 책을 소유하고 있습니까? 다시 한 번 전면을 알 수 없으므로 책 테이블에 여러 '사용자'열을 추가 할 수 없으며 사용자 모음이있는 단일 '사용자'열을 추가하면 도움이되지 않습니다.
이 문제에 대한 해결책은 '조인'테이블을 추가하는 것입니다. 사용자 북에 따르면 userID와 BookID의 두 열이 포함되어 있습니다. 이 테이블은 사용자를 책에 연결합니다. 따라서 ID 1과 2가있는 두 명의 사용자가 있고 ID 101, 102 및 103이있는 3 권의 책이 있으면 조인 테이블이 다음과 같습니다.
userid bookid 1 101 2 101 2 103
이곳은 users_books가 HABTM에서 등장하는 곳입니다. 사용자와 책 사이의 조인 테이블입니다.
다른 팁
시간~처럼 ㅏnd 비elongs 티영형 중모든 사람은 데이터베이스의 테이블간에 많은 관계를 처리합니다. 귀하의 경우, 한 사용자가 많은 책을 가질 수 있고 한 권의 책에는 많은 사용자가있을 수 있으므로 사용자와 책의 관계를 처리합니다.
이 블로그 게시물은 개념의 꽤 좋은 설명과 그림처럼 보입니다.
has_and_belongs_to_many : 레일의 habtm
http://sumanthtechsavvy.blogspot.com/2008/03/hasandbelongstomany-habtm-in-rails.html