J'ai 3 tables (hypothétiques).SqlServer Many to Many ET
- Photos (une liste de photos)
- Attributs (choses qui décrivent les photos)
- PhotosToAttributes (une table pour relier la première 2)
Je veux récupérer les noms de toutes les photos qui ont une liste d'attributs. Par exemple, toutes les photos comportant un éclairage sombre et des portraits (AttributeID 1 et 2). Ou, par exemple, toutes les photos qui ont un éclairage sombre, sont des portraits et ont été prises lors d'un mariage (AttributeID 1 et 2 et 5). Ou n'importe quel nombre arbitraire d'attributs.
L'échelle de la base de données sera peut-être 10 000 lignes dans Photos, 100 lignes dans les attributs et 100 000 lignes dans PhotosToAttributes. Cette question SQL: Many-To-Many table AND query est très proche. (Je pense.) J'ai aussi lu les réponses liées à la performance. Cela conduit à quelque chose comme ce qui suit. Mais, comment puis-je obtenir le nom au lieu de PhotoID? Et probablement mon code (C#) construira cette requête et ajustera la liste d'attribut et comptera si nécessaire? Je suis un peu analphabète de base de données (cela fait 20 ans que j'ai pris une classe de base de données); Je ne suis même pas sûr que ce soit un bon moyen de structurer les tables. Je voulais pouvoir ajouter de nouveaux attributs et des photos à volonté sans changer le code d'accès aux données.
L'alternative que vous mentionnez est non-relationnelle et devrait être découragée dans les termes les plus forts possible. Bref, ne fais jamais ça jamais. – RBarryYoung