문제

누구든지 (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 영형 모든 사람은 데이터베이스의 테이블간에 많은 관계를 처리합니다. 귀하의 경우, 한 사용자가 많은 책을 가질 수 있고 한 권의 책에는 많은 사용자가있을 수 있으므로 사용자와 책의 관계를 처리합니다.

alt text

이 블로그 게시물은 개념의 꽤 좋은 설명과 그림처럼 보입니다.

has_and_belongs_to_many : 레일의 habtm
http://sumanthtechsavvy.blogspot.com/2008/03/hasandbelongstomany-habtm-in-rails.html

이번 장 Rails Associations Guide는 이것이 철도에서 작동하는 방식에 대한 좋은 정보를 가지고 있습니다. 또한 가능성을 고려해야합니다 협회를 통해 협회 자체에 대한 자세한 정보를 저장 해야하는 경우. Wikipedia는 a 간단한 기사 유익한 것으로 입증 될 수있는 다수의 데이터 모델의 기본 개념에.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top