2012-01-25 7 views
1

나는 다음과 같은 모델을 가지고 : 자산 및 사용자 자산 belongsTo를 사용 사용자 hasMany의 자산이 경우 많은 관계가 절대적으로 필요합니까?

간단한 데이터베이스 모델이

USER 
id 
name 


ASSET 
id 
name 
user_id 

과 같을 것이다 이제 문제는 모델링 할 수있는 다운로드 테이블에 대해 정말 사용자가 많은 자산을 다운로드 할 수 있고 많은 사용자가 자산을 다운로드 할 수 있다는 사실.

은 CakePHP의에서,이 같은 간단한 모델로 users_assets 테이블이 될 것입니다 :

USERS_ASSETS (alias Downloads) 
id 
user_id 
asset_id 

을하지만 당신은 케이크의 빵을 기능을 사용하는 경우, 당신은 하나 개의 관계보다는 이상을 할당해야하기 때문에이 혼란 난 그냥 테이블 관계와 다운로드를 불렀다 수없는 이유

assets belongsTo Users | users hasMany assets 
assets hasAndBelongsToMany user | users hasAndBelongsToMany assets 

: 예 : 사용자와 자산 사이의 관계는 새로운 HABTM 관계를 상기 한 바와

,536,
user belongsTo downloads | downloads hasMany Users 
asset belongsTo downloads| downloads hasMany Assets 

DOWNLOADS: 
id 
user_id 
asset_id 

주어진 모델 집합에 대해 정의 된 둘 이상의 관계를 갖는 것이 괜찮은 것인지 잘 모르겠다.

가장 좋은 옵션은 무엇이며 왜 케이크가 HABTM 관계를 알 수 있도록 다운로드 별칭이있는 users_assets 테이블을 사용하는지. 또는 HABTM 관계없이 다운로드라는 테이블을 사용하는 것이 좋습니다.

답변

1

귀하의 경우에는 별도의 다운로드 모델을 만들고 "사용자 hasmany 다운로드" "downlload 사용자가 속한", "다운로드 속한 자산"및 "자산 hasmany 다운로드". 그것은 어쨌든 habtm이 의미하는 것입니다. 그렇게하면 다운로드 모델은 다운로드 날짜 및 시간과 같은 다른 흥미로운 데이터를 가질 수 있습니다. 정말 간단한 방법으로 사용자가 다운로드 한 자산 목록에 액세스해야하며 연결 ​​테이블에 대해 실제로 신경 쓰지 않는 한 habtm 관계로 신경 쓰지 않을 것입니다. 연결 테이블을 원하는대로 호출 할 수있는 방법으로 , 당신은 itndownloads를 호출 할 수 있고 일을하는 habtm 방법으로 여전히 간다.

다른 질문에 대해서는 네가 모델과 여러 개의 관계를 가질 수 있습니다. 다른 키를 사용해야합니다. 예를 들어 저작물은 사용자 인 소유자에게 속할 수 있으며 다른 사용자 인 편집자에게도 속할 수 있습니다.

관련 문제