Oulà, oui, une table par utilisateur, ce n'est pas une bonne approche.
Pourquoi ne pas ajouter une table indiquant qui a uploadé quoi?
Ainsi, chaque image se voit dotée d'un identifiant unique (imageId); est associée à un et un seul utilisateur (userId), et possède un nom (toutes les images pouvant être dans un même dossier "/images/user-uploaded/..." avec ou sans sous-dossier "images/user-uploaded/user-XXX/...").
De plus, cela se greffe sur la BDD existante, au lieu de modifier la structure des tables des utilisateurs.
On peut aussi choisir la variante à un seul index, en focalisant l'imageId sur chaque utilisateur:
Ce serait plus léger du point de vue des indexes, mais le champ imageId devient délicat à traiter (il faut déterminer sa valeur à chaque insertion, de sorte que l'index reste unique, et là, je sèche). et l'auto-increment peut s'appliquer au second champ de la clef primaire sur MySQL/MyISAM. Pour InnoDB, je n'en sais rien.
Voir, ne pas considérer de nom d'image: seulement son extension, et le chemin vers l'image se construit alors naturellement, sous la forme "/images/user-uploaded/user-<userId>/image-<imageId>.<image-extension>"
Pourquoi ne pas ajouter une table indiquant qui a uploadé quoi?
Code :
imageId [UNSIGNED INT, PRIMARY KEY, AUTO INCREMENT] ; userId [UNSIGNED INT, INDEX] ; imageName [VARCHAR / TINYTEXT ]
Ainsi, chaque image se voit dotée d'un identifiant unique (imageId); est associée à un et un seul utilisateur (userId), et possède un nom (toutes les images pouvant être dans un même dossier "/images/user-uploaded/..." avec ou sans sous-dossier "images/user-uploaded/user-XXX/...").
De plus, cela se greffe sur la BDD existante, au lieu de modifier la structure des tables des utilisateurs.
On peut aussi choisir la variante à un seul index, en focalisant l'imageId sur chaque utilisateur:
Code :
userId [UNSIGNED INT] ; imageId [UNSIGNED INT, AUTO INCREMENT] ; imageName [VARCHAR / TINYTEXT ]
PRIMARY KEY (userId, imageId)
Voir, ne pas considérer de nom d'image: seulement son extension, et le chemin vers l'image se construit alors naturellement, sous la forme "/images/user-uploaded/user-<userId>/image-<imageId>.<image-extension>"
Code :
userId [UNSIGNED INT] ; imageId [UNSIGNED INT, AUTO INCREMENT] ; imageExtension [ENUM('png', 'jpg', 'tiff',...)]
PRIMARY KEY (userId, imageId)