Je suis en train de concevoir une application qui traite deux ensembles de données - Utilisateurs et zones. Les données sont lues à partir de fichiers produits par un tiers. J'ai une classe User et une classe Area, et les données sont lues dans un tableau Users et un tableau Areas (ou toute autre structure de mémoire appropriée, selon la technologie utilisée).Modélisation d'objets connexes
Les deux classes ont un membre d'ID unique qui est lu à partir du fichier, et la classe User contient un tableau d'ID de zone, donnant une relation où un utilisateur est associé à plusieurs zones.
Les exigences sont assez simples:
- Liste des utilisateurs
- Liste des zones
- Liste des utilisateurs pour la zone spécifiée
- Liste des zones pour certains utilisateurs
Mon La première pensée était de laisser les données dans les deux tableaux, puis pour chacune des exigences, ont une méthode séparée qui d interroger un ou les deux réseaux, selon les besoins. Ce serait facile à mettre en œuvre, mais je ne suis pas convaincu que ce soit nécessairement la meilleure solution. Puis j'ai pensé à avoir une méthode 'Get Areas' sur la classe User et un membre 'Get Users' sur la classe Area qui serait plus utile si par exemple je suis à un stade où j'ai un objet Area , Je pourrais trouver ses utilisateurs par une propriété, mais alors comment une méthode 'Get Users' sur la classe Area serait-elle au courant/aurait-elle accès au tableau Users.
J'ai déjà eu ce problème plusieurs fois, mais je n'ai jamais vraiment trouvé de solution définitive. Peut-être que je suis en train de le rendre plus compliqué qu'il ne l'est en réalité. Quelqu'un peut-il fournir des conseils, des URL ou des livres qui pourraient m'aider avec ce type de conception?
MISE À JOUR: Merci à tous d'avoir pris le temps de nous donner quelques conseils. Vos commentaires sont très appréciés. Je suis d'accord que la racine de ce problème est une relation plusieurs-à-plusieurs. Je comprends comment cela serait modélisé dans une base de données relationnelle, c'est assez simple. Les données que je reçois sont sous la forme de fichiers binaires provenant d'un tiers, donc je n'ai aucun contrôle sur la structure de celles-ci, mais je peux les stocker de la manière qui me convient le mieux lorsque je les lis. C'est un peu piquets carrés dans les trous ronds, mais je pensais le lire puis le stocker dans une base de données, le programme devrait alors interroger la base de données pour obtenir les résultats. Ce n'est pas une quantité massive de données, alors j'ai pensé qu'il serait possible de sortir ce dont j'ai besoin en le stockant dans des structures de mémoire. Pourquoi ne pas utiliser DataTables avec des relations, si .NET est impliqué?
Si j'utilisais .NET, j'utiliser des listes génériques plutôt que des tableaux. Cependant, je n'ai pas beaucoup d'expérience de travail avec DataTables. Je vais regarder dans cela. – Gavin