Hermano, eso depende de tí.. de tu organización, de tus necesidades, de tus requerimentos y limitantes.
Para tu primer caso solo habria que tener cuidado de manejar la ruta de forma correcta... creo no hay problema.
Para el segundo caso.. sería preferible que al subir cambiar el nombre del archivo por uno único y que lo identifique facilmente... si te es importante conservar el nombre del archivo remitete al caso 1.
Para el caso 3 ... mmm... la base de datos y la asociación de archivos por id's únicas me parece fiable... pero como todo tiene sus pros y contras.. quizá si te lees el tutorial de Cluster sobre almacenar archivos en la BD en un campo Blob te dez una mejor idea.
Suerte!