Naja, Du willst irgendein Ergebnis haben. Dieses definiert die Anforderungen an die Software.
Siehst Du, da hast Du schon eine Anforderung: die Bilder werden zentral (im Dateisystem) gesammelt. Das Dateisystem habe ich mal ausgeklammert, da es sich um ein Detail handelt, das man nicht unbedingt zur Anforderung zählen muss. Kern der Anforderung ist, dass die Bilddateien an an zentraler Stelle verwaltet werden. Das kann z. B. aus Gründen der Sicherung sinnvoll sein.
Dann hast Du eine weitere Anforderung: die Bilder sollen vom Anwender bewertet werden können.
Und so weiter.
Auch da würde ich sagen: es gibt keinen besten Weg. Es gibt viele brauchbare Wege und jeder hat Vor- und Nachteile.
Mal ein Beispiel: Du könntest hergehen und unterhalb Deines zentralen Fotoalbum-Ordners jeweils einen Ordner für die Sterne-Bewertung anlegen und die Bilder dem entsprechend im Dateisystem verschieben. Bilder mit einer 1-Sterne-Bewertung kommen in das Unterverzeichnis 1, die mit der 2-Sterne-Bewertung in das Unterverzeichnis 2 usw.
Damit sind alle Informationen vorhanden. Das System eignet sich hervorragend, wenn Du vor allem Zugriff auf alle x-Sterne-Bilder haben willst. Es ist ok, um alle Bilder anzuzeigen, aber es ist ungünstig, wenn Du anhand des Bildnamens die Zahl der Sterne ermitteln willst. Dann musst Du nämlich alles durchsuchen. Es ist auch nicht besonders praktisch, wenn Du Bilder nach Namen sortiert haben willst usw.
Der Punkt aber ist, dass es so funktionieren würde. Manches wird ggf. etwas langsam sein, manches sehr schnell. Einiges wird umständlich sein, anderes sehr einfach.
In Deiner Anwendung hast Du ein Interface, das genau diese Dinge vom Rest der Anwendung entkoppelt. Wenn Du später sagst: das ist mir zu lahmarschig, ich häng einen DB-Server dran, dann musst Du lediglich eine andere Implementierung des Interfaces an die Anwendung hängen.
Zur Sicherheit: das war kein Umsetzungsvorschlag, nur eine Möglichkeit, die - je nachdem, was Du vorhast - relativ einfach zu realisieren ist.