Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/04/2011, 10h47   #1
Membre confirmé
 
Avatar de Pymento
 
Homme
Ingé. Info.
Inscription : janvier 2008
Messages : 338
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingé. Info.

Informations forums :
Inscription : janvier 2008
Messages : 338
Points : 273
Points : 273
Par défaut Arborescence pour une GED

Bonjour à tous, dans le cadre d'un projet je vais développer une GED (gestion électronique de document). J'en suis à la modélisation de ma base de données, mais il y a un truc qui m'échappe, je dois construire ma base d'après la modélisation suivante :

table dossier
table fichier

un dossier peut contenir zéro ou plusieurs fichiers
et un fichier ne peut être contenu que dans un seul dossier.

Pour le requêtage ultérieur aucun problème, inner join ect...

Je suis sous mySql, et je me demande si finalement les foreign key ne sont pas une modélisation abstraite à ne pas implémenter dans ma base de donnée.

Enfin je ne sais pas trop et comme en cherchant sur le net je n'ai pas trouver mon bonheur je me dis que peut être je ne prend pas le problème du bon côté.

Si vous voulez une quelconque autre précision n'hésitez pas à me demander car j'ai l'impression d'avoir été un peu flou!

Merci d'avance.
__________________
Memento Quia Pulvis Es, Et In Pulverem ReverteriS
Pymento est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 14h46   #2
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
implementer une GED... sacré travail. parce que rien qu'un petit script pour faire de l'upload de fichier, c'est pas dur mais qu'est ce que c'est ***

j'avais supervisé une étude sur nuxéo et j'avais été ébloui, y faut un peu de temps pour la relooker mais c'est un produit qui fait tout... Si t'en es à te poser des questions existentielles sur contrainte d'integrité ou pas vaut mieux penser à un produit sur étagère.

D'ailleurs un wiki comme mediawiki intègre un p'tit côté ged qui peut suffire pour pas mal d'usages.
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 15h24   #3
Membre confirmé
 
Avatar de Pymento
 
Homme
Ingé. Info.
Inscription : janvier 2008
Messages : 338
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingé. Info.

Informations forums :
Inscription : janvier 2008
Messages : 338
Points : 273
Points : 273
Oui c'est un gros projet, j'ai 6 mois pour le mener à terme.Concrètement Je compte développer une ged simple et robuste pour le compte de mon entreprise.
Les solutions clef en main même open source ne correspondent ou correspondent "bcp trop" au cahier des charges.

Les specs se passent bien, mais je veut vraiment partir avec quelque chose de stable et cohérent au niveau de ma base de donnée.

Et puis si je prend une ged je n'aurais plus grand chose à présenter pour mon mémoire de fin d'étude !
__________________
Memento Quia Pulvis Es, Et In Pulverem ReverteriS
Pymento est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 15h52   #4
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
Stable et cohérent n'est pas compatible avec MySQL. Pour la stabilité c'est catastrophique, il n'y a qu'a voir les nombreux plantages rapportés dans ce forums comparé à du PG, du SQL Server ou du Oracle.
Quand à cohérent, là j'espère que vous plaisantez, car MySQL ne sait toujours pas faire des contraintes CHECK, (voir http://blog.developpez.com/sqlpro/p9...udre-aux-yeux/) ni d'ailleurs correctement de nombreuses autres contraintes et rigger et n'est même pas ensembliste... Ne parlons pas performances, là je rigole ! http://blog.developpez.com/sqlpro/p9...lles-en-sql-1/

Enfin pour de la GED, il serait souhaitable d'utiliser le stockage des fichiers à titre de DATALINK (norme SQL) que MySQL ne sait pas gérer.... Voyez ce qu'est un exemple de stokage de fichiers à travers le SGBDR avec SQL Server et son système appelé FILESTREAM : http://mikedavem.developpez.com/tuto...l-server-2008/
Par exemple en l'absence de ce dispositif, vous ne pourrez même pas faire de sauvegardes cohérente de la base avec les fichiers. Vous ne pourrez même pas faire de sauvegarde cohérente de la base à chaud, car MySQL ne sait toujours pas le faire....

Enfin une bonne GED c'est aussi de l'indexation Full text pour aller rechercher les bon, doc. Su ce sujet MySQL est plus que nul (voir : ) De p)lus il ne sait pas indexer textuellement les fichiers....
A lire : http://blog.developpez.com/sqlpro/p9...ext-search-no/

Et pour couronner le tout, n'oubliez pas que MySQL est PAYANT ! (soit en numéraire, soit sous forme de code).

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 16h33   #5
Membre confirmé
 
Avatar de Pymento
 
Homme
Ingé. Info.
Inscription : janvier 2008
Messages : 338
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingé. Info.

Informations forums :
Inscription : janvier 2008
Messages : 338
Points : 273
Points : 273
Merci tout d'abord d'avoir pris le temps de répondre et de m'éclairer,sur, je l'avoue une zone d'ombre.
J'ai peut être été un peu trop hyperbolique avec mes termes.
Je veux que ma ged soit simple et efficace et de par sa simplicité obtenir une certaines stabilité,
je sais bien que toute ces indexations/ check /filestream/ ect.. sont le nerf de la guerre quand on parle d'appli bdd et surtout d'une ged.
Mais si je ne me heurte pas moi même sur ce genre de problématique ça me dépasse un peu.

Je vais cependant lire vos liens avec attention.

En revanche mySQL, il me semble, à moins d'un usage commercial, reste gratuit.
Par contre oui, je vais m'orienter vers posgresql, je l'eu utilisé sur linux j'espère qu'il est tout aussi performant sous window.

Cependant ça ne répond pas à ma question initiale à savoir la création de relation(s) dans ma bdd.

Puis je profiter de votre expérience pour vous reposer deux de mes problématiques ?

La première assez simple j'en doute pas, mettre en place, si c'est vraiment nécessaire, une relation de type clef étrangère dans ma base. Ex: un dossier comporte plusieurs fichiers. Ou c'est simplement pour gérer par ex la suppression des entrées associées à la suppression de l'entrée ?

Et seconde question, je souhaite forcément rajouter pour chaque fichier/dossier des utilisateurs/groupes "autorisés" .
Je ne vois pas comment m'y prendre à moins de faire une table relationnelle du genre en clef primaire de deux clef étrangère du genre User01,fichier01
Mais ce qui voudrait dire qu'il faudrait une table au nombre d'entrées égales au nb de fichiers*le nb d'utilisateurs autorisés.

Dsl pour la longueur !
__________________
Memento Quia Pulvis Es, Et In Pulverem ReverteriS
Pymento est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 17h48   #6
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
Vous posez le problème du modèle de données, qui de toute façon est indépendant de tout SGBDR. Le mieux serait donc de poser ces questions dans le forum consacré à la modélisation. La question de l'intégrité référentielle étant subsidiaire. En effet si je fais de la base de données relationnelle et que je n'utilise ni les contraintes, ni les index, alors autant en revenir à Cobol, cela sera encore plus rapide....

Postez donc ici vos question avec un debut d'ébauche de votre modèle : http://www.developpez.net/forums/f62...sation/schema/

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/04/2011, 14h42   #7
Membre confirmé
 
Avatar de Pymento
 
Homme
Ingé. Info.
Inscription : janvier 2008
Messages : 338
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingé. Info.

Informations forums :
Inscription : janvier 2008
Messages : 338
Points : 273
Points : 273
Bonjour je reviens alimenter cette discussion, j'ai pas mal avancé vis à vis de la conception de ma ged, j'ai tout d'abord choisie posgres et une modélisation intervallaire de mon arborescence je règle ainsi tout les problèmes de requêtage, tant la méthode est peu gourmande.

Il me manque encore la "meilleure solution" pour traiter les fichiers eux même. Et c'est la ou vous pouvez m'être d'une grande utilité
sachant bien entendu que je ne peut pas me permettre de prendre un SGBD ni tout autre chose payant.
Voila pour point de chute au cas ou je peux mettre le contenu de mon fichier (word/pdf) dans un blob et l'url du fichier dans un champ. Mais je sais très bien que ce n'est pas optimisé du tout, à 4000 fichiers si je doit parcourir le champ contenu, ça va vite exploser.
Je cherche à obtenir un truc fonctionnel en premier temps, mais assez efficace.
D'après vous le meilleur rapport qualité/temps passé serait ?
__________________
Memento Quia Pulvis Es, Et In Pulverem ReverteriS
Pymento est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 17h46   #8
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
Stockez les en tant que fichier après anonymisation dans une arborescence.
Pour ce faire je stocke dans une table de paramétrage le répertoire racine de mon "filer". Par exemple D:\files\.
Avant tout j'estime le nombre de fichiers par unité de temps et projette sur la durée de vie du serveur, par exemple 5 ans.
Par exemple 100 fichiers jours => 180 000 fichiers.
A partir de la racine je vais créer une arborescence dans laquelle statistiquement je ne devrais pas avoir plus de 250 fichiers par répertoire.
Pour anonymiser mes fichiers je vais leur donner des GUID... Exemple :
0FF2F871-92E3-4FF7-BE02-141FEE15E204
83BEBF90-9A8C-47B7-A268-751D70C158FE
BC0F27D8-C757-499E-9FA6-1AC1162821CC
5F78D2FF-B364-4DEC-8A20-B6ADD1524ED1
270CE6F8-A1D0-43D2-A2EF-D021B38EB2D3

Ainsi le fichier "La Sainte Victoire par Cezanne.bmp" sera anonymisé 0FF2F871-92E3-4FF7-BE02-141FEE15E204 et son vrai nom stocké dans la table (avec sa taille en octet, sa date et tout un tas d'autres métadonnées si besoin est).

Pour l'arborescence des répertoires j'utilise les premiers symboles hexadécimaux du GUID.
Ainsi "La Sainte Victoire par Cezanne.bmp" anonymisé 0FF2F871-92E3-4FF7-BE02-141FEE15E204 sera stocké dans l'arborescence :
D:\Files\0\F\F\0FF2F871-92E3-4FF7-BE02-141FEE15E204

Apparemment il ne vous faut pas plus de 3 niveaux de sous répertoire à partir de la racine pour stocker tous vos fichiers :
1) la racine peut en contenir 250
2) sous la racine vous créez 16 sous répertoire de '0' à 'F' pouvant donc contenir 16 * 250 = 4000
2) sous ce premier niveau, vous créez 16 sous répertoire de '0' à 'F' dans chacun des sous répertoires, et cela peut donc contenir 16 * 16 * 250 = 64 000
3) en recommençant ce petit jeu, au 3e niveau vous avez 16* 16 * 16 * 250 = 1 024 000

Bien entendu il est inutile de créer tous les répertoires à l'avance, vous les créerez à la volée, à chaque demande de stockage....

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 08h53   #9
Membre confirmé
 
Avatar de Pymento
 
Homme
Ingé. Info.
Inscription : janvier 2008
Messages : 338
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingé. Info.

Informations forums :
Inscription : janvier 2008
Messages : 338
Points : 273
Points : 273
Merci à vous pour cette piste. Je vais m'y pencher sérieusement dessus, en revanche, je me suis sans doute mal exprimé, mais je souhaiterai en fait lors d'une recherche étendue de contenu ( càd trouver par exemple tous les fichiers word qui contiendrai le terme "toto") optimiser ce temps de recherche car la solution que j'envisage de faire n'est certainement pas la bonne.
Vous m'en aviez parlé au tout début (cf: datalink, filestream). Mais la dans le cadre d'une implémentation sur posgresql.
__________________
Memento Quia Pulvis Es, Et In Pulverem ReverteriS
Pymento est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 09h16   #10
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
Impossible avec PostGreSQL. Il ne sait pas faire de l'indexation textuelle de fichiers électronique ! Or pour faire cela vous avez besoin de cet outil.
Utilisez MS SQL Server qui sait indexer en Full text de tels fichier (plus de 60 types en standard et en rajoutant les ifilter appropriés, vous pouvez indexer d'aures typers comme du PDF - il existe un ifilter gratuit).
L'édition SQL Server 2008 R2 Express with advanced services est gratuite mais limitées à des bases de 10 Go. Au pire vous pouvez créer plusieurs bases et les voir comme une seule à l'aide des vues partitionnées (UNION ALL des tables interbases).

Lisez l'article que j'ai écrit au sujet de l'indexation textuelle : http://blog.developpez.com/sqlpro/p9...ext-search-no/

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 11h05   #11
Membre confirmé
 
Avatar de Pymento
 
Homme
Ingé. Info.
Inscription : janvier 2008
Messages : 338
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingé. Info.

Informations forums :
Inscription : janvier 2008
Messages : 338
Points : 273
Points : 273
C'est un peu flou dans ma tête, j'ai trouvé plein de personnes qui faisaient du full text search avec posgres

http://www.postgresql.org/docs/8.3/s...ch-tables.html
depuis la 8.3 apparemment.

Ou alors il y'a quelque chose que je n'ai pas bien saisi au niveau de l'indexage en lui même...?
__________________
Memento Quia Pulvis Es, Et In Pulverem ReverteriS
Pymento est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 18h15   #12
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
sur des données dans les colonnes des tables, pas sur des données contenues dans un fichier.

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 08h47   #13
Membre confirmé
 
Avatar de Pymento
 
Homme
Ingé. Info.
Inscription : janvier 2008
Messages : 338
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingé. Info.

Informations forums :
Inscription : janvier 2008
Messages : 338
Points : 273
Points : 273
Donc en utilisant PG, si j'insère le plain text de mes fichiers dans un champ, outre le fait d'augmenter la taille de la base, ça peut être une solution viable ?
(je laisserai par exemple à l'utilisateur le choix de pouvoir ou non, ultérieurement chercher dans le contenu du fichier en question)
__________________
Memento Quia Pulvis Es, Et In Pulverem ReverteriS
Pymento est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 18h34   #14
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 843
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 843
Points : 1 318
Points : 1 318
Salut, pour la recherche, tu as des solutions pour maintenir une liste de tags et la table de liaison qui la lie au documents

coté langage qui interroge le sgbd, tu vas extraire la liste des expressions contenu dans le document.tu fais donc :
  • Là tu appliques une liste de toutes les expressions que tu veux pas (articles, pronoms, etc...)
  • tu peux ensuite pour compacter encore remplacer les verbes conjgués par leur version à l'infinitif...
  • Tu supprimes les doublons
tu as obtenu la liste des tag de ton fichiers
tu indexes ton document et tu mets à jour ta liste de tag de ton ged
tu mets à jour la table de liaisons qui lie le document aux tags.

Du coup, pas de recherche dans du texte, quand tu cherches une expression tu ne joues que sur des recherches d'index donc très rapide et compact en taille malgré le nombre de fichier (le nombre d'expressions est forcément limité pour une langue, même si tu rajoutes les expressions numériques ou alphanumérique et les noms propres).

En appliquant le même algorithme d'extraction de tag à la requête de recherche tu as donc le résultat voulu

L'annonymation de fichier est en effet un préalable évidant pour faire cela mais un simple index suffit (un simple int(4) donne plus de 2 milliards de fichiers, vu que tu veux du simple)

En gros, tu transferts un lourd travail de recherche à finalement un lourd travail d'insertion...

Le stockage des fichiers en interne de la bd n'a de sens que si tu as un traitement bd à faire dessus
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h28.


 
 
 
 
Partenaires

Hébergement Web