2013-09-27 5 views
-1

Quelle est la meilleure façon de mapper une relation 1:m?Mappage des relations 1: m

Par exemple.


Une base de données de chansons. Nous avons les tables:

  • Songs
  • Artists
  • Albums

Supposons que nous devons chercher tous les albums. Une chanson a une clé étrangère à Albums
Ce que je faisais est d'obtenir une liste de tous les albums:

SELECT * FROM `Albums`; 

Et puis la carte à un objet.
Ensuite, je voudrais faire une boucle for-each que chaque album et faire une nouvelle requête SQL

SELECT * FROM `Songs` WHERE albumId = album; 

Ensuite, je mapper à nouveau.


Ceci est évidemment exagéré.

Quelle est la bonne façon de faire cela?

+0

Juste un doute, dans mySQL vous ne pouvez pas utiliser les jointures de table? –

+0

@JhonatasKleinkauff Bien sûr, je suppose que c'était en fait un mauvais exemple. Ce n'est pas m: m, permettez-moi de le reformuler. – NSAddict

+0

@JhonatasKleinkauff Edité ma question – NSAddict

Répondre

1

Je pense qu'il est plus logique pour un Album d'avoir un ICollection<Song> Songs et pour le Artist d'avoir un ICollection<Album> Albums

Vos questions devraient être simples après ce point.

Disons que nous devons aller chercher tous les albums.

SELECT * FROM Albums

Un album a une clé étrangère de morceaux

Je pense qu'un Song devrait effectivement avoir une clé étrangère à un Album parce qu'elle définit de façon unique un Song qui pourrait être sur plusieurs albums.

Ma question était en fait terriblement formulée. Pouvez-vous faire un exemple de une telle requête? Comme dans la question: Obtenez tous les albums avec les chansons associées .

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

+0

Ma question était en fait terriblement formulée. Pouvez-vous faire un exemple d'une telle requête? Comme dans la question: Obtenez tous les albums avec les chansons associées. – NSAddict

+0

Je vois, pour la cartographie on pourrait utiliser un dictionnaire avec une clé de l'id de l'album. Je suppose que c'est très utile, merci! – NSAddict

+0

"Je pense qu'une chanson devrait avoir une clé étrangère pour un album car elle définit de façon unique un morceau qui pourrait être sur plusieurs albums" Bien sûr, vous avez raison, c'était une erreur – NSAddict

0

Si vous devez absolument remplir pleinement tous vos objets de modèle, alors vous feriez mieux de faire toutes vos chansons, artistes et albums et les locaux en tant que cache.

Normalement, cependant, gonfler votre objet de modèle se produira lorsque l'information supplémentaire est requise, par exemple. lorsqu'un utilisateur sélectionne Afficher les détails de la chanson ..., à quel moment l'artiste et l'album peuvent être restaurés.

Questions connexes