Die ID ist doch sowieso schon im Datensatz enthalten. (Ebenso steht ".mp3" fest und müsste nicht nochmal gespeichert werden.) Du kannst beim Abfragen die Information aus der Namensspalte mit der ID (und dem ".mp3") verknüpfen.
bei der id sehe ich das genauso,
Ja, da habt ihr gleich das nächste datenbankphilosophische Fass aufgemacht. Die Fragestellung lautet: Wann berechnete Werte speichern?
Hier lautet das Argument, dass die ID ohnehin verfügbar ist und so auf den Namen der logisch verzeigerten Datei geschlossen werden kann.
Gleich zwei Argumente sprechen dagegen:
1.) Wichtige Daten wie Dateinamen sind zu speichern, ggf. auch unter Inkaufnahme von Redundanz. Denn die Information ist sehr wichtig.
Verstehen wird man das vielleicht, wenn man sich irgendwelche wichtige Vertragsdaten vorstellt, bspw. eine Mietrate, die aus anderen im selben Datensatz gespeicherten Werten berechnet wird.
Stellen wir uns einfach mal vor, dass diese Rate auf einmal nicht stimmt. Dann tanzte der Bär!
Noch lustiger vielleicht, wenn wir uns vorstellen, dass die Geschäftsregel zum Ermitteln der Rate (die ja nicht im DBDesign hinterlegt ist) nach einigen Jahren vergessen worden ist. LOL
Und die Dateinamensbildung, u.a. aus der ID, ist Geschäftslogik, die ebenfalls nicht hinterlegt ist. (OK, hier haben wir eine gewisse Einfachheit, aber wehret den Anfängen! ;)
2.) Wird der dateinamen "just in time" mit Hilfe einer Regel wie oben beschrieben ermittelt, dann erhält die ID eine Bedeutung.
IDs dürfen keine Bedeutung haben, das würde spätere administrative Datenarbeiten stark erschweren.
Jetzt noch zur möglicherweise sich stellenden Frage: "Ist es denn OK, den Dateinamen mit der DatensatzID zu bilden?"
Anwort: Ja, denn es handelt sich um die einmalige Anwendung einer Geschäftsregel, deren Anwendungsmethode vergessen werden darf.
Du könntest eigentlich alle Informationen im Dateinamen in einzelnen Feldern speichern und nur beim Abfragen zusammensetzen. (siehe Stringfunktionen, besonders CONCAT())
das hängt im wesentlichen davon ab, wie er die informationen später abruft. greift er nur auf den vollen namen zu, macht es meiner meinung keinen sinn, sie aufzusplitten. wenn er aber die einzelnen informationen im dateinamen auch über abfragen ansprechen will, dann macht eine aufteilung sinn, bzw. man könnte sogar redundante information speichern und beides miteinander kombinieren.
Also, das wäre - wie oben beschrieben - alles Murks.