J'essaie de configurer un modèle de données hiérarchique avec un conteneur dans Core Data. Voici mon modèle jusqu'à présent:Modélisation de question de données de base Données hiérarchiques avec un conteneur
Container
1-* rootNodes <Nodes>
Nodes
1-1 parentNode <Nodes>
1-* childNodes <Nodes>
Cependant, je suis arrivé cette erreur: Container.rootNodes - à-plusieurs ne pas l'inverse: c'est un paramètre avancé (aucun objet ne peut être dans plusieurs destinations pour une relation spécifique)
Alors, je créé une relation inverse sur les nœuds, ainsi:
Nodes
1-1 parentNode <Nodes>
1-* childNodes <Nodes>
*-1 container <Container>
Cependant, ce n'est pas tout à fait correct. Je ne veux pas que mon conteneur ait une relation avec des nœuds, juste les nœuds de niveau racine. Je suis un peu hésitant à compliquer mon modèle de données trop, mais maintenant je pense que ce peut être nécessaire. Si je déplace un nœud enfant à un niveau racine, je ne veux pas avoir à m'inquiéter des types de casting, etc. Cependant, je comprends que je travaille avec deux ensembles différents. Les nœuds racines et tous les autres nœuds.
Voici mon modèle de données proposé, mais je suis à la recherche d'une meilleure suggestion:
Container
1-* rootNodes <Nodes>
Nodes
1-1 parentNode <Nodes>
1-* childNodes <Nodes>
RootNodes : Nodes
*-1 container <Container>
Est-ce exact?
Merci. C'est vrai - à l'origine je pensais que je devais attacher les nœuds directement au conteneur, cependant, puisque chaque magasin persistant aura seulement un conteneur, je peux supposer que tous les nœuds appartiennent à un seul objet Container. – Donald
Un problème que je prévois avec l'utilisation d'un filtre de prédicat pour obtenir les nœuds est cependant que les filtres doivent être actualisés manuellement, correct? Par exemple, si je déplace un nœud d'un enfant à la racine, alors une requête d'extraction précédente serait périmée et je devrais la refaire, alors que s'il s'agissait d'une relation, elle serait mise à jour automatiquement. Y a-t-il une bonne solution pour cela? – Donald