2010-11-29 4 views
2

Supposons que vous ayez deux entités de base de données. Étudiant et examen. Ces deux sont initialement remplis avec des données provenant de deux fichiers XML téléchargés sur le web. Maintenant, les étudiants et les examens sont des choses séparées ... initialement, il n'y a pas de liens entre eux. Mais après avoir rempli ces deux entités, je pourrais vouloir connecter certains étudiants à certains examens. Ou je pourrais vouloir que tous les étudiants passent un examen particulier. Mais je veux toujours pouvoir traiter les examens comme des choses indépendantes, qui pourraient n'avoir aucun étudiant connecté.Création de relations de données de base après le remplissage d'entités avec des données

Je ne suis pas sûr de savoir comment faire avec Core Data. Dans le modèle de données, vous avez une relation ou vous ne l'avez pas. Dois-je avoir deux entités différentes pour l'examen ... un pour les examens indépendants, et un connecté à l'étudiant qui peut être construit à partir de l'autre unité d'examen?

Répondre

7

Non, vous ne devez pas créer deux types d'entité. Ce n'est pas parce que vous avez une relation entre deux types d'entités que vous ne pouvez pas créer un objet où cette relation est nulle.

Donc, en supposant que vous avez un grand nombre à plusieurs entre Student et Exam, vous pouvez créer un nouvel examen en faisant quelque chose comme:

Exam *newExam = [NSEntityDescription 
    insertNewObjectForEntityForName:@"Exam" 
    inManagedObjectContext:context]; 
newExam.course = @"CS 101"; 
newExam.description = @"Midterm"; 

Vous pouvez ensuite établir par la suite une relation entre un étudiant et cet examen comme:

[newExam.students addObject:aStudent]; 

(où students est le nom de la relation entre Exam et Student

+0

L'astuce consiste à rendre la relation facultative. De cette façon, un objet étudiant peut avoir une relation d'examen s'il en a besoin, mais il n'y a pas de problème s'il n'en a pas. – TechZen

2

Je pense que vous devriez avoir une relation entre les deux entités (examen et étudiant) mais le marquer comme optionnel.

Questions connexes