truc de ouf à faire ... arborescence virtuelle [] [base de données] - SQL/NoSQL - Programmation
Marsh Posté le 22-05-2002 à 23:12:12
si j'ai bien compris tu voudrais qu'en déplaçant un répertoire virtuel, tu ne doive pas déplacer tout les fichier et répertoire qu'il contient ?
avec une structure en arbre et un algo récursif
table fichier
id
nom
parent
fichier
ex:
1
répertoire1
0
false
2
fichier1
1
true
3
répertoire2
0
false
avec cette structure, si pour déplacer le répertoire1 et ses fichiers dans le répertoire2, il suffit de mettre son "parent" à 1 (id de répertoire1), idem pour le recopier.
c'est ça que tu veux ?
Marsh Posté le 22-05-2002 à 23:17:21
c à peu près ça
j'avais fait un truc pareil à e que tu m'as filé mais ça posait des problèmes, je suis tellement sur le truc que je vois plus rien,
je m'installe un easyphp et je fais kelks tests de suite
Marsh Posté le 22-05-2002 à 23:18:23
oué donc: par exemple comment tu fais avec cette structure pour fouttre des fichiers dans des répertoires ?
Marsh Posté le 22-05-2002 à 23:21:01
pour mettre fichier1 dans répertoire2, tu mets le id de repertoire2 dans le parent de fichier1.
Marsh Posté le 22-05-2002 à 23:23:42
et si fichier1 peut se trouver dans deux répertoires différents ? :s
Marsh Posté le 22-05-2002 à 23:39:48
ça c une copie
par valeur tu connais on dirait
par référence, ça se complique:
tu mets l'id et le parent en clé primaire
donc il peut exister un fichier (identifié par son id) qui a deux parents différents, mais tu dois créer une nouvelle entrée.
id=2
parent=1
nom= fichier1
id=2
parent=3
nom= ficheir1
ou bien tu crées une table de liaison
fichier:
id
nom
liaison:
id_fichier
id_parent
ex table fichier:
1
rep1
2
fic1
3
rep2
ex table liaison:
2
1
2
3
3
1
donc tu as
rep1
fic1
rep2
fic1 (copie par référence)
pour créer une copie par valeur, tu crées un nouveau fichier (nouvel id) auquel tu assignes un parent
en fait les ids ne seraient même pas nécessaires puisque le nom doit être unique (ça peut être plus facile pour savoir si un fichier portant le même nom existe déjà dans le répertoire lors d'ue copie)
je m'embrouille déjà
[jfdsdjhfuetppo]--Message édité par ethernal le 22-05-2002 à 23:42:44--[/jfdsdjhfuetppo]
Marsh Posté le 22-05-2002 à 23:41:40
euh oué en fait je me suis peut être mal exprimé
en fait il faut que je puisse mettre à disposistion toute une quantité de contenu en forme de fichiers (ou ressources en général) ... et que quelqu'un vienne et se fabrique sa liste de ressources pour les mettre à dispo d'autres utilisateurs .... et donc ya des ressources qui vont être dans un répertoire pôur un groupe et dans un autre répertoire dans un autre groupe..
et qu'il puisse yavoir des répertoires communs que chacun peut se rajouter ... etc en gros je sais pas trop comment faire ..
c vrai que la solution que tu me donnes est orientée vers ça et suffisamment généraliste, mais c justement ses limites qui m'intéressent
Marsh Posté le 22-05-2002 à 23:47:23
coolaxe mec j'yavais pas pensé à la double clé! je vais tenter ça!
Marsh Posté le 22-05-2002 à 23:52:48
ok on va encore essayer alors
fichier:
id
nom
type (fichier/rep)
liaison:
id_fichier
id_parent
id_user
avec ça:
la liste des fichiers/rep
select nom from fichier.
si tu le veux en arborescence, tu fais une récursive en partant de liaison.id_parent=0 pour ton user.
ensuite, pour chaque user qui crées sa liste, tu crées une entrée dans la table liaison avec son id_user. par défaut c une copie par référence. S'il veut une copie par valeur, tu crées une nouvelle entrée dans la table fichier qui porte le même nom et tu crées une entrée dans la table liaison avec ce nouvel id_fichier.
tu peux même ajouter un attribut copie_de dans la table fichier qui contiendra l'id du fichier original pour dire que le fichier est une copie.
[jfdsdjhfuetppo]--Message édité par ethernal le 23-05-2002 à 00:06:41--[/jfdsdjhfuetppo]
Marsh Posté le 22-05-2002 à 20:48:42
salut
je cherche à faire un truc du style système de fichiers mais en BDD ...
genre qu'on puisse rajouter des éléments ou copier des répertoires .... c 'facile' en copiant des répertoires ... mais j'aimerai les copier par référence et non pas par valeur ...
je sais pas si je suis calir... mais en gros j'aimerai savoir si ça existe un truc comme ça, ou bien quelle serait la structure de la/les tables ?