2013-10-17 8 views
1

J'ai beaucoup de questions sur la façon de faire des relations N: M dans CoreData.CoreData N: M relations

Si j'ai deux entités A et B et ont une relation N: M dans le modèle de relation d'entité doit générer une nouvelle table C qui contiendra l'identifiant unique des tables A et B.

Exemple pour la entité-relation:

enter image description here

maintenant, dans le modèle de base de données:

enter image description here

Considérant l'exemple précédent comme le feraient les données de base?

enter image description here

Ou:

enter image description here

La vérité est que je suis vraiment perdu avec celui des relations dans les données fondamentales, toute aide sera la bienvenue.

Désolé pour mon anglais mais pas très bon.

+0

Votre question n'est pas clairement. Tél moi ce dont tu as besoin exactement. – Ganapathy

+0

Le premier schéma est correct. Vous pouvez créer des relations plusieurs-à-plusieurs dans CoreData dans Xcode. Vous n'avez pas besoin de créer une entité d'association. –

+0

Mais comme vu dans le deuxième schéma, j'ai un attribut de la relation "temps". Comment pourrais-je faire ça dans CoreData? – Filowk

Répondre

2

La réponse à ceci est que vous devez utiliser « joindre des tables », même dans les données de base si vous stockez des informations supplémentaires. Vous n'avez pas à garder trace des clés étrangères, car cela est couvert par la relation.

En règle générale, DB standard "joindre les tables" ont des noms tels que laid "tableA_tableB". Vous devriez vous efforcer de trouver un nom approprié pour rendre le concept clair. Par exemple:

Car <<--->> Person
devient
Car <--->> Rental <<---> Person

maintenant en location d'entité, vous pouvez ajouter plus d'informations, telles que le temps. Ainsi, par exemple, si vous voulez trouver toutes les personnes qui louent une voiture avant une certaine date (stockée sous forme NSDate dans l'entité Location), votre prédicat serait quelque chose comme ceci:

[NSPredicate predicateWithFormat:@"ANY rentals.time < %@", cutoffTime] 
+0

Merci pour la réponse !. Maintenant, aurait sur la table NSSet A et B et la table C deux NSManagedObject mais maintenant la requête pour obtenir toutes les données dans B comme serait fait? La requête que vous faites un B ou un C? – Filowk

+0

Désolé, C a 1 objet à et un objet b mais la question est la même. La requête pour obtenir toutes les données dans B comme serait fait? La requête que vous faites un B ou un C? – Filowk

+0

Je ne comprends pas linguistiquement. En termes de voitures de location, quelle serait la requête en langage naturel? – Mundi

Questions connexes