내 음악 디자인을위한 스키마 디자인에 문제가 있다고 생각한다.MongoDB 스키마 설계. 내가 원하는 것을 얻을 수 없다.
나는 3 개의 콜렉션이 있습니다 : Artists
, Tracks
및 Albums
입니다. 3 클래스 : artists
에서 artists
, albums
및 tracks
문서 :
[_id] => MongoId Object
(
[$id] => 4ee5bbfd615c219a07000000
)
[freeze] => false,
[genres] => Array,
[hits] => 0,
[name] => Sarya Al Sawas,
[pictures] => Array,
문서 albums
에서 :
[_id] => MongoId Object
(
[$id] => 4ee88308615c218128000000
)
[name] => Sabia
[slug] => wafiq-habib-ft-sarya-al-sawas-sabia
[year] => 1999
[genres] => Array,
[pictures] => Array,
[artists] => Array
(
[0] => MongoId Object
(
[$id] => 4ee34a3b615c21b624010000
)
[1] => MongoId Object
(
[$id] => 4ee5bbfd615c219a07000000
)
)
문서
[_id] => MongoId Object
(
[$id] => 4ee8a056615c21542a000000
)
[name] => Bid Ashok
[slug] => wafiq-habib-ft-sarya-al-sawas-bid-ashok
[genres] => Array,
[file] => /m/tracks/t.4ee8a05540c624.04707814.mp3,
[freeze] => false,
[hits] => 0,
[duration] => 303,
[albums] => Array
(
[0] => MongoId Object
(
[$id] => 4ee5cbc3615c216509000000
)
)
[artists] => Array
(
[0] => MongoId Object
(
[$id] => 4ee5bbfd615c219a07000000
)
[1] => MongoId Object
(
[$id] => 4ee34a3b615c21b624010000
)
)
tracks
행
먼저 좋은 스키마 디자인이 무엇입니까 ?? many to many relationships 때문에이 스키마를 설계했습니다. 가끔 트랙에 2 명의 아티스트가 있고 앨범에 2 명의 아티스트가 있습니다.
어쨌든 특정 트랙에 첨부 된 앨범을 쿼리하는 데 문제가 있습니다.
$cursors = array(
'albums' => $this->albums->find(array('artists' => $artist->_id))->sort(array('_id' => -1)),
'tracks' => $this->tracks->find(array('artists' => $artist->_id))->sort(array('_id' => -1)),
'clips' => $this->clips->find(array('artists' => $artist->_id))->sort(array('_id' => -1))
);
foreach($cursors as $key => $cursor) {
foreach($cursor as $obj) {
$obj['name'] = ($this->lang->get() != 'ar' ? $obj['translated']['name'] : $obj['name']);
$obj['by'] = $this->artists()->get($obj['artists'])->toString('ft');
${$key}[] = $obj;
}
}
내가 모든 트랙에 루프가 필요합니다
내가
내가 모든 아티스트의 앨범을 얻을 필요가 아티스트 페이지에서 그리고 난 이렇게 이렇게 추적 말할 수 그들의 앨범 이름을 얻으면이 아티스트는 3000 트랙을 가지고 있다고 말할 수 있습니다. 매우 느릴 것이라고 생각합니다 ....
내 질문은 : 그 좋은 스키마 디자인?
덕분에 난 항상 해달라고 때때로 트랙을 얻으려면 내가 유일한 앨범 원하는, 그리고 퍼팅의 생각입니다 아티스트의 이름이 트랙 문서에 직접 표시되는 것은 좋은 아이디어입니다. 잘 작동했는데 다른 사람이 더 좋은 아이디어를 얻었는지 확인하고 싶습니다 .... – Pinokyo
감사합니다. 왜냐하면 나는 비정규화할 것입니다. 아티스트와 앨범 및 트랙의 이름과 세부 정보는 내 관리자가 오타로 변경되므로 항상 작성하지는 않습니다 .... – Pinokyo