-1

1:m関係をマッピングする最良の方法は何ですか?

例えば。


歌のデータベース。テーブルがあります:

  • Songs
  • Artists
  • Albums

すべてのアルバムを取得する必要があるとしましょう。曲には外部キーがAlbums
あります。以前は、すべてのアルバムのリストを取得していました。

SELECT * FROM `Albums`;

そして、それをオブジェクトにマップします。
次に、すべてのアルバムに対して for-each ループを作成し、新しい SQL クエリを作成します。

SELECT * FROM `Songs` WHERE albumId = album;

それから私はそれをもう一度マッピングします。


これは明らかに過剰です。

これを行う適切な方法は何ですか?

4

2 に答える 2

1

Albumが を持ち、 が を持つICollection<Song> SongsことArtistが最も理にかなっていると思います。ICollection<Album> Albums

この時点以降のクエリは簡単です。

すべてのアルバムを取得する必要があるとしましょう。

SELECT * FROM Albums

アルバムには、曲への外部キーがあります

複数のアルバムに存在する可能性のある を一意に定義するためSong、 には実際には への外部キーが必要だと思います。AlbumSong

私の質問は実際にはひどい言い回しでした。そのようなクエリの例を作成できますか? 質問のように: 関連する曲を含むすべてのアルバムを取得します。

SELECT a.Album_Name, s.Song_Name FROM Albums a JOIN Songs s ON a.Album_Name = s.Album_Name

于 2013-09-27T11:40:39.680 に答える
0

すべてのモデル オブジェクトを完全に設定する必要がある場合は、すべての曲、アーティスト、アルバムを取得してローカルにキャッシュすることをお勧めします。

ただし、通常、追加情報が必要な場合、たとえばユーザーが [曲の詳細を表示...] を選択すると、モデル オブジェクトのインフレが発生し、その時点でアーティストとアルバムの情報を取得できます。

于 2013-09-27T11:41:15.830 に答える