Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Foros > MySQL > Árbol de directorios
-Foros de debate

MySQL
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

Árbol de directorios
Enviado por hadrien el día 21 de enero de 2008

Hola!
Soy algo nuevo con MySQL y estoy trabajando en un Catálogo de Ficheros con MySQL y Python. Como en la mayoriá de consultas sólo queremos saber el directorio inmediatamente superior o inferior de un directorio dado (y en algún caso en que no es así se puede navegar para arriba de forma relativamente fácil), he elegido la siguiente estructura con una relación uno a muchos (y de forma similar con las tablas de ficheros, 1 directorio tiene muchos ficheros):

CREATE TABLE directory (
iddir INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
idFather INTEGER NOT NULL DEFAULT 0,
dname VARCHAR(128) NOT NULL,
PRIMARY KEY(iddir),
INDEX pare(idFather)
) TYPE=InnoDB;

Pero tal y como yo lo veo, de e sta forma, si dname no es UNIQUE, podemos tener muchos subdirectorios con el mismo nombre en un mismo directorio, y si dname es UNIQUE, todos los nombres de directorios deberán ser distintos. No obstante, creo que un que un directorio puede estar en diferentes directorios padres (es decir, el nombre se puede repetir en dirferentes directorios) así que he pensado una nuva estructura con una relación muchos a muchos (algo así):

CREATE TABLE directory (
iddir INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
idFather INTEGER NOT NULL DEFAULT 0,
dname VARCHAR(128) NOT NULL,
PRIMARY KEY(iddir),
INDEX pare(idFather)
) TYPE=InnoDB;

CREATE TABLE dir_has_dir (
iddir INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
idFather INTEGER NOT NULL DEFAULT 0,
PRIMARY KEY(iddir, idFather),
INDEX father(idFather),
INDEX dir(iddir),
FOREIGN KEY(iddir) REFERENCES directory(iddir),
FOREIGN KEY(idFather) REFERENCES directory(idFather)
) TYPE=InnoDB;

Pero me pregunto si esta podría ser la solución o bien si hay otra forma de resolverlo sólo con la tabla de directorios. Incluso alguien me ha sugerido que necesito una estructura de árbol completo, pero eso complicaría mucho las cosas y no sé si de verdad es necesario.

¡Muchas gracias!

 
Re: Árbol de directorios
Enviado por hadrien el día 24 de enero de 2008

Me "autorespondo"... El nuevo esquema pensado daba el mismo problema. Creo que la solución radica en crear un índice compuesto con el nombre del directorio y el índice del directorio padre.

 


Tienda
Patrocinados
 

Copyright © 1999-2006 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network