2009-01-07 5 views
1

Ok, mon site est centré sur un grand nombre d'images dynamiques entrées par l'utilisateur pour différents objets définis par l'utilisateur tout au long. J'ai donc beaucoup d'objets, et ces objets ont des images.Question de conception - Stocker des images en tant qu'objets

Est-ce une bonne pratique de traiter des images comme un objet puisque les colonnes "Image Name" et "Image Bytes" sont répétées plusieurs fois? Ou est-il plus judicieux d'inclure ces deux colonnes dans les tableaux pour chaque objet.

je suppose que je réponds à ma propre question lors de la frappe ... Je crée une somme supplémentaire de jointure et une colonne supplémentaire (il y aurait trois avec le nom, Id et ImageID sur chaque table »

cependant, il y a plusieurs tables avec plusieurs images par objet ... donc je suppose que ce serait mieux ???? Opinions?

Répondre

4

J'ai généralement une table de fichiers qui stocke des fichiers de façon plus générique, puis dans vos autres tables, vous pourriez avoir une colonne pour chaque image (fichier) qui est juste une référence dans la table des fichiers

Votre table de fichiers aurait les éléments normaux comme ID, nom de fichier, taille, type, etc. Alors oui, vous vous joindriez à lui pour obtenir ce dont vous avez besoin pour n'importe quelle requête que vous exécutez.

En cas de doute, je vous déconseille vivement de stocker des fichiers directement dans la base de données. Je ne pense pas que ce soit ton après mais si quelqu'un d'autre a cette idée - ne fais pas ça!

0

La question à poser est "dois-je avoir plusieurs objets avec la même image". Si oui, alors vous pourriez vouloir penser à la redondance. De plus, la base de données que vous utilisez gère-t-elle bien les "blobs"? Ou serait-il préférable de conserver un chemin d'accès à l'image et de stocker les images séparément>

0

Intuitivement, je trouverais plus facile de traiter les images et les objets comme des concepts distincts. Cela me semble plus flexible. Si vous devez attacher des choses autres que des images à des objets particuliers, il devient aussi simple que d'associer l'entrée de la table d'objet avec l'entrée "Autres choses", bien que vous deviez probablement changer de quelle façon la touche étrangère pointait . Cela vous donnerait également la possibilité d'utiliser ces images dans d'autres objets utilisateur, ou de permettre aux utilisateurs d'emprunter des images d'autres utilisateurs. L'inconvénient de cette approche est que vous payez un peu d'une pénalité de performance pour avoir besoin de joindre une ou plusieurs tables ensemble. Probablement pas la plus grosse affaire, cependant, si votre analyseur de requêtes de bases de données est raisonnablement intelligent.