IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Base de données


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 114
    Par défaut Base de données
    Bonjour,

    je dois actuellement faire application qui doit recuprer des infos sur des comopsants elctronique dans des fichiers textes puis les stockés.

    je pensais faire ça grâce à deux fichier xml (un pour stocké les infos propre aux composant (valeur, nom, etc) et l'autre avec des infos liés au composant mais qui peuvent changé (fabricant, prix, etc.)

    Je me suis renseigné sur le xml que je ne connaissais pas (et je suis content de connaitre ça maintenant) mais je commence à avoir des frayeurs car j'ai l'impression qu'une base de donnée serait plus adapté à mes besoin ...

    enfaite, pour preciser un peu, je reutilise ces infos pour faire des nomenclatures qui sont visualisables à l'ecran, modifiable, et imprimable.

    j'ai aucune notion dans les bases de données et ca me fait donc peur de me lancer dans ça.mais j'ai aussi peur que le xml ne soit pas adapté...



    Enfin pour infos je programme avec C++builder 6.

    Qu'en pensez vous ? Devrais je continuer sur le xml ou changer pour une base de données ?



    Merci pour vos idées et indications.

  2. #2
    Membre expérimenté Avatar de Kujara
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 262
    Par défaut
    Ca depends du nombre maximum de composants

    Si tu n'en a pas beaucoup ( genre 1000 max), une base de données n'est pas forcement utile. Fichiers textes + std::map ça devrait suffire.

    Par contre, si tu tape dans les millions, base de données obligatoire.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 114
    Par défaut
    ok, donc va falloir que je me renseigne.

    car un des fichiers accumule les composants mais pour l'autre c'est un nouveau fichier à chaque nouveau projet.

    Donc je vais opter pour l'xml pour celui ci et voir combien de composant vont etre stocké dans l'autre.

    je pense que ca peut depasser facilement depassé le 1000 mais pas attteindre des millions ... lol.


    merci de ta reponse Kujara,

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 114
    Par défaut
    voila ce que sera mon fichier xml (cleui qui est unique a chaque projet) je voudrais savoir si c'est trop gros ou pas. et donc si c'est mieux d'utilier une base de donnée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    <?xml version="1.0" encoding="UTF-8"?>
    <projet>
    	<composants>
    		<composant>
    			<partname/>
    			<componentname/>	
    			<variante num="1"/>
    			<variante num="2"/>
    			<type/>
    			<face/>
    			<commentaire/>
    		</composant>
    		<composant/>
    	</composants>
    	<nomenclatures>
    		<nomenclature/>	
    		<nomenclature>
    			<choixvariante/>
    			<refcomposant>
    				<composant>
    					<componentname/>
    					<reffabricant/>
    					<fabricant/>
    				</composant>
    				<composant/>
    			</refcomposant>
    			<historique>
    				<modif>
    					<date/>
    					<versioncsa/>
    					<versionpre/>
    					<versionpro/>
    					<versionind/>
    					<objet/>
    					<priseencpte/>
    					<personnecreation/>
    					<personnevalidation/>
    				</modif>
    				<modif/>
    			</historique>
    			<kitsmontage>
    				<kit num="1">
    					<composant>
    						<repere/>
    						<quantite/>
    					</composant>
    					<composant/>
    				</kit>
    				<kit num="2">
    				</kit>
    			</kitsmontage>
    			<mecanique>
    				<fonctionmeca num="1">
    					<composant>
    						<repere/>
    						<quantite/>
    					</composant>
    					<composant/>
    				</fonctionmeca>
    				<fonctionmeca num="2">
    				</fonctionmeca>
    			</mecanique>
    		</nomenclature>
    	</nomenclatures>
    </projet>
    je precise que la où c'est en rouge, c'est pour dire qu'il y aura plusieurs autre balise du meme type.
    par exemple :

    <composant> : se repetera plus d'une centaine de fois je pense.

    <nomenclature> : se repetera 3 ou 4 fois

    <composant> (dans <refcomposant>) : se repetera 20 fois à peu pres

    <modif> (dans historique) : se repetera une vingtaine de fois aussi.

    etc...

    le num 1 et 2 sont à titre indicatif, il peut y en avoir plus!


    est ce que ca ne fait pas trop chargé ensuite pour xml ?


    sachant qu'ensuite je vais me servir de ses infos pour les affiché à l'ecran. Je devrais donc aller les cherchers une par une ...


    Qu'en pensez vous ?

    vos avis m'interesse enormement car je ne vois pas trop dans quoi je m'entraine avec le xml. j'ai peur que ca soit lourd à manipuler !


  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Je ne suis pas tout à fait de l'avis de Kujara... Tout dépend de ce que tu veux faire avec tes données... Après que tu en ais 10,1000 ou 1000000 c'est pareil...

    Je m'explique...

    Si le but est uniquement d'avoir une liste de données, et de les traiter séquentiellement, le fichier texte (ou xml) est adapté.

    Si par contre, le but est de pouvoir accéder à n'importe-quelle donnée (accès aléatoire), à partir d'une information variable (par exemple "ref-fabricant" dans ton exemple), une base de donnée, avec les index corrects associés sera d'une énorme utilité.

    A noter que certaines DB utilisent des fichiers XML pour le stockage des données, c'est juste que tu n'auras pas à te palucher le code pour l'indexation, la recherche optimisée, le row-locking en cas de modification, les "foreign-keys", etc... Quand on parle de DB, c'est pas forcément une DB oracle ou SQL-Server... Ca peut être une hsqldb ou encore un fichier Access !

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 114
    Par défaut
    le truc c'est que j'y connais vraiment rien du tout en base de données !

    j'ai peur que je perde du temps à apprenre à manipuler ça.

    Je sais que c'est pas une perte de temps en soit et que le xml va etreplus galere donc peut etre plus long au bout du compte mais je commence a peine à maitriser le xml qu'il faut que je l'abandonne .

    j'ai plus que 3 mois et demi pour faire mon projet...


    je vaisrgrdé vite fait les base de données ... pour voir si c'est super dur.

    pour ta reponse nicroman

  7. #7
    Membre expérimenté Avatar de Kujara
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 262
    Par défaut
    Si par contre, le but est de pouvoir accéder à n'importe-quelle donnée (accès aléatoire), à partir d'une information variable (par exemple "ref-fabricant" dans ton exemple), une base de donnée, avec les index corrects associés sera d'une énorme utilité.
    Lecture du fichier en mémoire, puis std::map pour les recherches par clef.

    Si t'a pas trop de données, une bd est plus lourde, plus compliquée a mettre en place, etc ....

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 114
    Par défaut
    qu'est donc est ce std::map ?


    enfaite je pensais utilisé l'outils qui permet de faire la "liaison de données de xml" que propose builder. Apres grâce à ça on peut aller modifier et retrouver les valeurs directement... je crois!

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 114
    Par défaut
    le Xpath ca marche avec le XMLDocument que propose builder ?

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 114
    Par défaut
    personne n'a d'idée ?

  11. #11
    Membre éclairé
    Avatar de Floréal
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    456
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 456
    Par défaut
    XPath facilite les recherche, en effet. Après pour la vitesse d'exécution de ton application (ou plutôt de la recherche d'un élément), cela dépend de la taille de ton fichier XML. S'il n'est pas destiné à occuper plusieurs dizaines de Mo sur ton disque je ne pense pas que cela pose problème. En suite il faut savoir ce que tu compte faire de ce fichier, est-ce qu'il sera utilisé en tant que ressource pour plusieurs applications différentes? Plusieurs personnes sont succeptibles de le modifier en même temps?

    En gros:
    - si c'est pour une application mono-poste et qu'il n'est pas nécessaire que le volume d'information soit important, un fichier XML est un bon choix.
    - Si plusieurs personnes peuvent être amenées à avoir accès et à modifier, en même temps, tu devrais plutôt te tourner vers une base de données type MySQL, ou PostgreSQL.
    - Si tu dois traiter un grand volume d'information, dans le cadre d'une application mono-poste, tu devrais plutôt utiliser une BDD type Access ou SQLite.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 114
    Par défaut
    oki merci de tes informatiosn floreal, elles sont claires et précises je trouve!

    Je n'ai pas encore toutes les informations pour choisir. Je vais donc me renseigner.

    J'espere ne pas a avoir à utiliser une base de données, quoique ça doit etre interessant, mais je n'y connais rien et je ne pense pas avoir le temps d'apprendre à m'en servir.

    j'ai peur d'y etre obligé pourtant...

    ça me fait bien peur !

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 114
    Par défaut
    j'ai une autre question.

    Vous allez trouver ça bete je pense mais bon ...


    enfaite comme je disais, le logiciel doit faire des nomenclatures. Ces nomenclatures sont faites avec des composants qui sont soit disponibles dans mes fichiers, soit il faut les ajouter si ils sont nouveaux.

    un des fichiers est général avec tous les composants, l'autre est specifique a chaque projet de l'application.

    Il y a trois personnes qui font des nomenclature à des postes differents.

    Comme seul un fichier est general, si je le mets en lecture seul quand un des trois postes l'utilise et que j'informe que qqun l'utilise alors il n'y aura plus de probleme ?

    je sais c'est un peu nul comme solution mais ca permet de pas avoir de probleme !!!

    Mais de toutes facon le probleme est le meme pour une base de données. si qqun modifie une infos les autres ne peuvent pas y avoir acces... si ?


    Merci de votre aide encore une fois

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 15
    Par défaut
    Pour la base de donnée, c'est géré directement par le SGBD. C'est lui qui va faire tout ca pour toi

    Mais ce n'est plus du C++

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 114
    Par défaut
    Citation Envoyé par Bruno Gillet Voir le message
    Pour la base de donnée, c'est géré directement par le SGBD. C'est lui qui va faire tout ca pour toi

    Mais ce n'est plus du C++
    ok, mais pour l'utilisation d'un fichier xml, ma solution marcherait ?

  16. #16
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    ta solution est completement foireuse.
    plusieurs utilisateurs = base de donnée

    un fichier xml n'est pas une base de donnée, c'est principalement un format d'echange.

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 114
    Par défaut
    lol

  18. #18
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Les bases de données fonctionnent toutes plus ou moins sur le mode "transactionnel"...

    C'est à dire:

    1. Début de transaction
    2. Demandes de modification des données de la base
    3. Fin de transaction

    Toutes les modifications ne sont vraiment appliquées (visibles pour les autres utilisateurs) QUE au moment du 3. Et les données ne sont "lockées" QUE pendant le 3.
    En cas the modification simultannée de la même donnée, le 3 échoue (il est d'ailleurs possible de faire échouer la modification en (2)).
    Si une erreur survient pendant (2), alors aucune modification n'est apportée (3).

    Tout ça est entièrement géré par la base de donnée. Et c'est vraiment très simple.

    Parceque bon... multiple utilisateurs sur un fichier.... ca devrait donner ça:
    (a) On passe le fichier "BASE" en read-only
    (b) On modifie les données
    (c) On écrit un fichier "TEMP"
    (d) On renomme le fichier "BASE" en "BACK##" (avec un ## pour un fichier non existant)
    (e) On renomme le fichier "TEMP" en "BASE"
    (f) On détruit le fichier "BACK##" (le même qu'en d)

    Avec gestion des exceptions et des crash pour retrouver un état stable ("BASE" accessible et writable).

  19. #19
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    sans compter toutes les facilités du SQL

    SELECT * from MATABLE WHERE MONCHAMP = MAVALEUR AND ... OR ...
    ORDER BY

    etc...

    c'est beaucoup plus difficile a faire tout ca en xml
    sans compter la gestion des lock etc

    comme je disais le xml n'est pas une DB, c'est juste un format d'echange.

    si t'essais de refaire tous les mecanismes de lock (meme le plus simple) t'es deja dans le mur avant meme de commencer ton projet

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 114
    Par défaut
    le probleme c'et que les bases de données j'y connais rien ... à part que ca permet de stocker ! lol


    et puis j'en ai parler à monmaitre de stage, il me dit qu'il fadurait installer un base de donnée serveur, ce qui est chiant m'a-t-il dit!

    On a donc optez pour un fichier qui n'est accesible en ecriture que si il n'est pas ouvert par qqun d'autre.

    L'utilisation du fichier etait que tres ponctuel, on pense que ca ne posera pas de probleme (... ou pas trop )

    Je pense qu'une base de donnée aurait été mieux ( et vous aussi mais le fihcier partagé est jsute une liste de composant donc pas tre utile d'avoir une base de donné pour ça m'a-t-on dit!

    vous allez dire que je suis obstinez mais je pense pas avoir le temps pour apprendre à utiliser une base de données et je pense que l'utilisation d'un fichier fera l'affaire... du moins je l'espere !

    Je sens que ca va etre un grand n'importe quoi,

Discussions similaires

  1. Problème Base de données et CRecordSet
    Par LE CHAKAL dans le forum MFC
    Réponses: 3
    Dernier message: 20/08/2002, 11h59
  2. connexion base de donné
    Par saidi dans le forum MFC
    Réponses: 3
    Dernier message: 07/08/2002, 22h22
  3. [Concept] Stabilité d'une base de donnée
    Par lassmust dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 03/07/2002, 16h16
  4. Bases de données
    Par dev dans le forum C++Builder
    Réponses: 4
    Dernier message: 01/07/2002, 22h55
  5. associer une base de données(access) a un dbgrid
    Par ange1708 dans le forum MFC
    Réponses: 3
    Dernier message: 11/06/2002, 12h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo