La performance dépend de la quantité de photos, surtout si vous utilisez la méthode par les noms de fichiers. Si vous avez plusieurs dizaines de photos, ça risque de paraitre au niveau de la performance.
Pour les tables, vous avez raison, une table de photos, une table de personnes et une table de liens.
Donc, une relation plusieurs à plusieurs c'est quand chaque item peut contenir plusieurs éléments et que chaque élément peut être contenu dans chaque item. C'est notre cas puisque chaque photo peut contenir plusieurs personnes et que chaque personne peut apparaître sur plusieurs photos.
On se définit donc une table de photos et une table de personnes. On peut y mettre des informations complémentaires qui pourraient servir dans des recherches ou dans de la disposition d'information par exemple.
Code :
[photos]
photo_id photo_desc photo_date photo_fichier
-------- ------------------------------- ---------- -------------
1 Jean devant la maison 2000-10-04 Jean1.jpg
2 Jean et Simone en skidoo 2000-10-11 JeanSimone.jpg
3 Michel au party de noël 2000 2000-12-24 MichelBrosse.jpg
4 Michel dans les bras de Noémie 2000-12-24 MichelNoemie.jpg
Code :
[personnes]
pers_id pers_nom pers_birth pers_comment
------- ------------------ ---------- ------------------------------
1 Michel Simard 1955-02-11 Parrain de Jocelyn
2 Jean Couillard 1957-05-29 Mari de Simone
3 Simone Couillard 1961-12-11 Simone Simard
4 Noémie Bradette 1977-05-20 Blonde à Charles chez Michel
Code :
[photos_personnes]
photo_id pers_id
-------- -------
1 2
2 2
2 3
3 1
4 1
4 4
Dans la table photos_personnes, vous voyez donc que pour chaque photo, nous enregisrtons une entrée pour chaque personne. Nous voyons que sur la photo #2, il y a deux enregistrements car il y a deux personnes sur la photo. Aussi, nous pouvons savoir que la personne #1 apparaît sur 2 photos également. C'est donc un lien de plusieurs à plusieurs.
Ensuite, quand vous faites une recherche des photos d'une personne, vous affichez le contenu de la table des personnes et récupérez le pers_id en paramètre, vous pouvez l'utiliser ensuite dans une requête SQL:
Code :
$pers_id = $POST['pers_id'];
$sql_string = "SELECT Photos.* From photos, photos_personnes WHERE photos.photo_id = photos_personnes.photo_id AND photos_personnes.pers_id=$pers_id";
est-ce compréhensible?