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

Bases de données Delphi Discussion :

Probleme de redondance


Sujet :

Bases de données Delphi

  1. #1
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut Probleme de redondance
    Bonjour je utilise une base de donnée Access comment je peux eviter la redondance dans le champ ID j'ai y indexé et compacté mais c'est pareil je le trouve plusieur fois sur le fichier .mdb que faire ?



    Merci

  2. #2
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 15
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    Tu as un champ ID d'une table avec des doublons ????

    Si tu as plusieurs "Libellé" correspondant au même IDentifiant alors tu auras une table dans laquelle on verra plusieurs fois cette identifiant (seul moyen à ma connaissance de savoir que ces "libellé" sont liés à cet IDentifiant).

    J'utilise le présent de l'indicatif du vraiment sûr et certain, mais peut-être ne t'ai-je pas bien compris .

    Veux tu rentrer dans le concret de l'imagé, STP.

    à suivre ...............
    Dans le vocabulaire des couturiers seulement, patron est synonyme de modèle.
    Aymond d'Alost

  3. #3
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 15
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    PS :

    Il y aurait bien un moyen aussi fantaisiste que moi, qui serait de crée la table "1024" et de faire une usine à Gaz pour générer tes requêtes d'extraction de données .
    Dans le vocabulaire des couturiers seulement, patron est synonyme de modèle.
    Aymond d'Alost

  4. #4
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Salut;

    petite solution à grand effet; indexer la table sur cet identifiant, créer une nouvelle table avec la même structure, extraire les données de l'ancienne table tout en utilisant une syntaxe SQL avec la commande magique "Distinct", enregistrer le tout dans la nouvelle table puis lors d'un nouvel enregistrement gérer l'exception de l'enregistrement en double.

    Bonne chance.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  5. #5
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    bonjour et merci pour cette réponse
    Il y aurait bien un moyen aussi fantaisiste que moi, qui serait de crée la table "1024" et de faire une usine à Gaz pour générer tes requêtes d'extraction de données
    Créer une table pour chaque valeur sur le champ ID qui peuvent atteindre des dizaines, centaines le pire beaucoup beaucoup plus n'est pas une idée génial je veux une autre structure de stockage j'étais obligé pour gérer cela avec du bricolage des listes chainées, pages...etc.
    je essaierai ta démarche Just-Soft

  6. #6
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    En fait ton problème n'est pas très clair. C'est quoi l'utilisation concrète de ta table et de tes champs ?

  7. #7
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    gérer l'exception de l'enregistrement en double.
    En fait ton problème n'est pas très clair. C'est quoi l'utilisation concrète de ta table et de tes champs ?
    Oui je veux dédoublonner le champ ID mais sans toucher ceux qui sont sur le deuxième je veux avoir un champ indexé qui accèpte les doublons mais sans qu'il les enregistre deux fois(pour économiser un peu d'espace )

  8. #8
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Bon je ne vois toujours pas l'application 'concrète'....
    Le plus simple est de tout mettre dans la même colonne et de dédoublonner !

  9. #9
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 15
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    Citation Envoyé par Montor Voir le message
    Oui je veux dédoublonner le champ ID mais sans toucher ceux qui sont sur le deuxième je veux avoir un champ indexé qui accèpte les doublons mais sans qu'il les enregistre deux fois(pour économiser un peu d'espace )
    Bonjour,

    Ce message est sans prétention.

    un bon disque Dur de 1 To vaut moins de 300 €.
    Dans une base de donnée un champ de type numérique prend la même place qu'il soit valorisé ou non. (n'hésitez pas à me contredire)
    Un facteur met une lettre en fonction de son adresse, sans adresse pas de courrier. (bon l'image vaut ce qu'elle vaut)

    Il faut que tu fasses des recherches sur la normalisation dénormalisation de base de données, car l'exemple que tu nous donnes semble déjà normalisé.

    Ou alors étoffe ton exemple, et tu auras des réponses plus pointues.

    à l'écoute ...
    Dans le vocabulaire des couturiers seulement, patron est synonyme de modèle.
    Aymond d'Alost

  10. #10
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    pour faciliter les choses
    <1024>
    <element1>
    <element2>
    <element3>
    <element4>
    </1024>
    <1046>
    <element1>
    <element2>
    <element3>
    </1046>
    As-tu des connaissances techniques approfondis sur les bases de données si oui tu me dire est ce que le rendement d'une BTree dans une situation comme la mienne d'ailleurs je ne pense pas que le BTree est disponible sur l'ADO.

  11. #11
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 422
    Points : 5 824
    Points
    5 824
    Par défaut
    salut

    dans l'exemple que tu donne l'identifiant est implicite
    le seul probleme c'est que c'est un fichier plat sans index
    le fait d'ajoute un meme idetifiant n'est pas en soit un probleme

    imaginon maintenant une autre structure de table

    Categorie (ID,LIBELLE,NUM)
    Exemple (1,'ASSURANCE VIE',1024)
    (2,'ASSURANCE SANTE',1046)

    Table Element (ID,LIBELLE)
    Exemple (1,'element1')
    (2,'element2')
    (3,'element3')
    (4,'element4')

    Table ASSOCIATION (ID,IDCAT,IDELEM)
    Exemple (1,1,1)
    (2,1,2)
    (3,1,3)
    (4,1,4)
    (5,2,1)
    (6,2,2)
    (7,2,3)


    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  12. #12
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    AAAAAAAAAAA c'était pour faire un arbre..............................
    Fallait le dire tout de suite !!!

    Et bien mauvaise nouvelle (ou bonne nouvelle !) ta structure de table d'origine est tout à fait adaptée à ça.
    Si tu changes suivant ton exemple 2 ou 3 tu vas galérer dès que tu veux faire évoluer ta base (insérer ou supprimer des enreg.).

    Donc : ne changes rien !

    Par contre si tu veux aller plus loin dans la notion d'arbre je te conseille cette lecture :
    http://sqlpro.developpez.com/cours/arborescence/

  13. #13
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 15
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    Citation Envoyé par philnext Voir le message
    AAAAAAAAAAA c'était pour faire un arbre..............................
    Fallait le dire tout de suite !!!

    Et bien mauvaise nouvelle (ou bonne nouvelle !) ta structure de table d'origine est tout à fait adaptée à ça.
    Si tu changes suivant ton exemple 2 ou 3 tu vas galérer dès que tu veux faire évoluer ta base (insérer ou supprimer des enreg.).

    Donc : ne changes rien !

    Par contre si tu veux aller plus loin dans la notion d'arbre je te conseille cette lecture :
    http://sqlpro.developpez.com/cours/arborescence/
    Sans doute un arbre ou peut être un fichier XML 'maître/Détail'.

    Sans peur de me répéter, la structure de ta base semble (pour le peu que tu veux bien nous dire) tout à fait adaptée.

    Ton problème serait dans la représentation de l'extraction de ces données ??

    a suivre ...
    Dans le vocabulaire des couturiers seulement, patron est synonyme de modèle.
    Aymond d'Alost

  14. #14
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    Un arbre avec qu’un seul fils
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table:array of array of string;
    Il ne faut pas te casser la tête Anapurna juste avoir l’idée pour utiliser trois champs va a l’encontre de ce que je veux mais bon ca ne veux pas dire que les participations étaient pour rien si on veut utiliser une arbre il y a des bases de donnés qui offres des structures pour cela je citerai par exemple SQlite3Btree je veux une solution technique voilas

  15. #15
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Citation Envoyé par anapurna Voir le message
    salut

    dans l'exemple que tu donne l'identifiant est implicite
    le seul probleme c'est que c'est un fichier plat sans index
    le fait d'ajoute un meme idetifiant n'est pas en soit un probleme

    imaginon maintenant une autre structure de table

    Categorie (ID,LIBELLE,NUM)
    Exemple (1,'ASSURANCE VIE',1024)
    (2,'ASSURANCE SANTE',1046)

    Table Element (ID,LIBELLE)
    Exemple (1,'element1')
    (2,'element2')
    (3,'element3')
    (4,'element4')

    Table ASSOCIATION (ID,IDCAT,IDELEM)
    Exemple (1,1,1)
    (2,1,2)
    (3,1,3)
    (4,1,4)
    (5,2,1)
    (6,2,2)
    (7,2,3)


    @+ Phil
    ça c'est une solution technique pourquoi ne pas l'exploiter ?
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  16. #16
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 422
    Points : 5 824
    Points
    5 824
    Par défaut
    salut

    en fait je comprend pas bien son problème
    je ne suis pas qu'il est correctement formulé sa recherche

    si son problème n'est qu'une restitution graphique
    je suppose qu'il ne doit rien changer, une simple boucle suffit

    par contre si tu veut une solution technique , on peut t'en proposer quelque dizaine

    en voila une autre

    une seul table
    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
     
      (ID,IDPARENT,IDFILS ,LIBELLE)
      (1,0,0,'1024')
      (2,0,0,'1046')
     
      (3,0,0,'element1')
      (4,0,0,'element2')
      (5,0,0,'element3')
      (6,0,0,'element4')
     
      (7,1,3,'')
      (8,1,4,'')
      (9,1,5,'')
      (10,1,6,'')
     
      (11,2,3,'')
      (12,2,4,'')
      (13,2,5,'')
    de cette façon tu n'as pas de redondance mais je ne suis pas sur que tu gagne en performance

    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  17. #17
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    je vais raconter toute l'histoire le but c'est pour optimiser les résultats du recherche en effet les requêtes traditionnels ne donne les bonnes résultats qu'avec les recherche statistique et cela ne me intéresse pas.
    je me suis tourner vers l'indexation automatique et manuel voilas j'ai un superbe combobox lier a un fichier binaire contenait des mots indexés lorsque on commence taper au-dessus il s'ouvre et affiche des mots similaire (comme un index d'un dictionnaire ou simplement comme Google fait)si je sélectionne un mot il me renvoie un identifiant opliquer sur l'ID du table qui suscite le problème je récupère une liste paginée des occurrences avec d'autres infos pour raffiner la recherche lorsque l'utilisateur choisit un élément de cette dernière liste là il va appeler a la réelle base de données
    Pour le combobox je ne peux pas le remplacer c'est la table d'occurrences que je veux remplacer par une table ADO si il n'a y une solution je serai obligé pour répéter l'ID pour chaque enregistrement ou simplement garder mes liste chainées.
    Il y a un autre problème comment je peux réaliser des template pour un nombre illimité de dialogues j'ai sur une autre table il y a deux champs voici leur type
    Templ_ID un integer identiffant du template à utiliser
    Buff un memo le contenu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Templ_ID=4
    Buff=
    [
      <pseudo>Montor</pseudo>
      <message>200</message>
      <date>2008</date>
    ]
    avec cette template il faute créer trois champs Tedit pour lecteur et écriture pseudo, message, date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Templ_ID=5
    Buff=
    [
      <composant>transistor</composant>
      <name>BC548</name>
      <use>uni</use>
      <type>active</type>
      <description>BB 300Mhz 0.5W b300 NPN ...</ description >
    ]
    avec cette dernière il faute créer cinq champs (un memo description, liste de choix pour active, des Tedit pour le reste)
    J’ai fais ces illustration avec XML mais moi je utilise une autre class parseur/codeur avec ces template je ne serai pas oblige ni pour changer la structure du base de donné ni créer des table ni taper de nouveau code alors docteur tu peux faire un diagnostic.

Discussions similaires

  1. probleme supprimer redondance dans un fichier
    Par Isabella83 dans le forum C
    Réponses: 5
    Dernier message: 06/02/2013, 11h07
  2. [MySQL] probleme de redondance d'enregistrement
    Par !NyThaX&& dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 16/01/2008, 08h27
  3. probleme hashcode redondant ds une hasmap
    Par Joe54 dans le forum Langage
    Réponses: 3
    Dernier message: 01/10/2006, 12h02
  4. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  5. [Kylix] Probleme de nombre flottant!!
    Par yopziggy dans le forum EDI
    Réponses: 5
    Dernier message: 02/05/2002, 10h13

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