Almacenamiento de la estructura de archivos en PHP

¿Cuál es la mejor manera de almacenar una estructura de archivos, junto con archivos, por ejemplo desde un archivo Zip? Actualmente cada archivo es una fila en la base de datos MySQL, pero obviamente no se puede leer ninguna estructura de eso. Quiero evitar almacenar un archivo binario. Todos los archivos deben ser texto sin formato. Cada estructura de archivo / zip es privada para el usuario que la envió.

Si desea estructura, podría tener una tabla de directorio y una tabla de archivos. Entonces, para cada directorio en la raíz, tendría una ID principal de 0. Y luego, cada directorio debajo de eso tiene la identificación principal de su padre.

Luego le das a los archivos el id del directorio para indicar dónde están.

Mi recomendación sería similar a la de Ólafur Waage, aunque usaría una sola tabla, con columnas de indicadores para indicar el “tipo” de registro.

id - Primary Key parent_id - FK to self (id) type - enum('D', 'F') name - varchar content - BLOB (if you wanted to ever store the file contents). 

Esto sigue una estructura de árbol jerárquica, que, para MySQL, puede encontrar información adicional aquí: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

La forma más sencilla (tal vez no la mejor) es determinar la carpeta ‘raíz’ del árbol de directorios que está buscando, luego sobre cada archivo tomar la ruta relativa a esa carpeta y almacenarla como otra columna (por ejemplo, ‘ruta’) en el archivo db mesa. Luego puede ver estos valores para construir la misma estructura de directorios.

Lo mejor es contextual Pero tomándolo en valor nominal, diría que la mejor manera de almacenar una estructura de archivos sería en un sistema de archivos. A menos que necesite vincular entradas junto con otros registros o realizar consultas sobre ellos, una base de datos relacional no es la mejor opción para datos arbitrarios y jerárquicos. También puede ir con una solución híbrida, donde mantiene un índice en la base de datos, con la ruta de acceso del archivo y tal vez algunos metadatos, pero todavía lo almacena en el sistema de archivos.