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

Requêtes MySQL Discussion :

Création d'une base de données pour la première fois


Sujet :

Requêtes MySQL

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Webmarketer
    Inscrit en
    Mars 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Webmarketer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Création d'une base de données pour la première fois
    Bonjour à tous
    J'espère que vous pouvez m'aider
    J'ai besoin de créer une base de données et de créer des requêtes assez compliquées (enfin pour moi qui est novice)


    Voici le travail que je fais en excel et maintenant je dois passer une BD par ce que c'est lourd.
    J'ai des fichiers excel avec un formatage différents : un document avec 14 colonnes, un autre avec 21, un autre avec 9, un autre avec....
    Les noms de colonnes ne sont pas identique, cependant il peut s'agir des même informations, exemple : une colonne dans un fichier qui s'appelle "tél" dans un autre qui s'appelle "téléphone" dans un autre qui s'appelle "phone". L'ordre des colonnes aussi n'est pas le même.


    La première chose à faire :


    Je dois à chaque fois fusionner ces fichiers et réorganiser les colonnes dans chaque fichier à part avant de les fusionner.


    La deuxième chose à faire :


    Je dois filtrer suivant plusieurs critères : quand j'ai un effectif >9, un num de tel, ....


    La 3ième chose à faire : (qui est la plus compliquée pour moi)


    J'ai dans le fichier une colonne "nom de domaine" et j'ai une colonne "num tél", dans la colonne "nom de domaine" le nom peut être le même plusieurs fois (redondant, doublon). Pour le "num tél" il est présent une fois. Ce que je veux c'est sélectionner tous les noms de domaines qui ont un num tél. Actuellement ce que je suis en train de faire avec excel c'est la formule "Recherche V" : je vais dans la colonne "Num tél" je filtre sur "blank" (sans num tél), je copie dans une nouvelle feuille et je créé une nouvelle colonne où j'applique la formule recherchev (recherche nom de domaine) pour aller chercher le num tél dans l'ancienne feuille, après je fusionne ceux qui ont un num tél et ceux pour lesquels j'ai trouvé le num tél

    Nom de domaine Num tél
    ABC 0023125489
    DEF 00215487232
    GHI 01235478996
    ABC
    MNO 12412365487
    PQR
    ABC
    VWU 21548796251
    GHI

    Ce que je veux avoir c'est

    ABC 0023125489
    DEF 00215487232
    GHI 01235478996
    ABC 0023125489
    MNO 12412365487
    PQR
    ABC 0023125489
    VWU 21548796251
    GHI 01235478996

    Help please, j'ai besoin des étapes de Aà Z, J'installe easyphp, pour le

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2020
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2020
    Messages : 32
    Points : 96
    Points
    96
    Par défaut
    Ce que je veux avoir c'est

    ABC 0023125489
    DEF 00215487232
    GHI 01235478996
    ABC 0023125489
    MNO 12412365487
    PQR
    ABC 0023125489
    VWU 21548796251
    GHI 01235478996
    Donc des doublons et de la redondance de partout

    1ere étape, la plus importante, avant de créer une base de données c'est de la modéliser.
    Identifier les tables à créer, les colonnes et leur type, les clés primaires/étrangères, les contraintes,cardinalités etc...
    Juste pour le cas ci dessus, obtenir.

    ABC 0023125489
    DEF 00215487232
    GHI 01235478996
    MNO 12412365487
    PQR
    VWU 21548796251

    Sous réserve que chaque domaine ne puisse avoir qu'un seul numéro de téléphone, dans le cas contraire il faudra créer une table pour enregistrer plusieurs numéro de téléphones pour un domaine etc...
    Etape 2 : création de la base
    Etape 3 : reprise des données des fichiers excel en fonction du modèle définitif
    Etape 4 : créer les requêtes dont vous avez besoin pour exploiter vos données

    Après si vous voulez charger vos fichier excel en créant X tables pour x fichiers excel et requeter directement dessus comme un bourrin libre à vous.... mais faudra pas s'étonner si les résultats sont, au mieux, hasardeux, au pire merdique.

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 134
    Points : 38 557
    Points
    38 557
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Ce qu'il faut faire, c'est identifier les informations présentes dans chacun des 3 fichiers en rédigeant un dictionnaire des données.
    Dans ce dictionnaire doivent apparaître le nom de chaque colonne, la description, le type, la longueur, le nombre de décimales le cas échéant, les règles relatives au contenu (plages de valeurs autorisées, "null" possible ou pas...)
    Attention : il faut chasser les homonymes éventuels. Ce n'est pas parce que deux colonnes portent le même nom dans deux fichiers qu'il s'agit bien du même attribut. C'est un élément très important.
    Quand cette collecte est terminée, il faut déterminer la ou les colonnes qui permettent de rapprocher les différents fichiers et les cardinalités (0,1; 0,n; 1,1 ou 1,n).

    À partir de là, vous êtes en capacité de créer le modèle tabulaire correspondant, il faudra simplement ajouter les identifiants primaires (asémantiques et concis, idéalement des integer attribués par le SGBD) et ajouter les index pertinents

  4. #4
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 380
    Points : 19 062
    Points
    19 062
    Par défaut
    Salut à tous.

    Citation Envoyé par yosrag
    La 3ième chose à faire : (qui est la plus compliquée pour moi)
    Voici un exmple de comment procéder pour remplir les colonnes ayant aucune valeur.
    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE IF NOT EXISTS `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `test`
    --------------
     
    --------------
    create table `test`
    (  `id`         integer unsigned not null auto_increment primary key,
       `domaine`    varchar(255)     not null,
       `telephone`     char(12)          null default null
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    insert into `test` (`domaine`,`telephone`) values
      ('ABC', '0023125489'),
      ('DEF', '00215487232'),
      ('GHI', '01235478996'),
      ('ABC', NULL),
      ('MNO', '12412365487'),
      ('PQR', NULL),
      ('ABC', NULL),
      ('VWU', '21548796251'),
      ('GHI', NULL)
    --------------
     
    --------------
    select * from `test`
    --------------
     
    +----+---------+-------------+
    | id | domaine | telephone   |
    +----+---------+-------------+
    |  1 | ABC     | 0023125489  |
    |  2 | DEF     | 00215487232 |
    |  3 | GHI     | 01235478996 |
    |  4 | ABC     | NULL        |
    |  5 | MNO     | 12412365487 |
    |  6 | PQR     | NULL        |
    |  7 | ABC     | NULL        |
    |  8 | VWU     | 21548796251 |
    |  9 | GHI     | NULL        |
    +----+---------+-------------+
    --------------
    commit
    --------------
     
    --------------
    update `test` as t1
      join (   select  domaine, any_value(telephone) as telephone
                 from  `test`
                where  telephone is not null
             group by  domaine
           ) as t2
        on  t2.domaine = t1.domaine
     
       set t1.telephone = t2.telephone
     
     where  t2.telephone is not null
    --------------
     
    --------------
    select * from `test`
    --------------
     
    +----+---------+-------------+
    | id | domaine | telephone   |
    +----+---------+-------------+
    |  1 | ABC     | 0023125489  |
    |  2 | DEF     | 00215487232 |
    |  3 | GHI     | 01235478996 |
    |  4 | ABC     | 0023125489  |
    |  5 | MNO     | 12412365487 |
    |  6 | PQR     | NULL        |
    |  7 | ABC     | 0023125489  |
    |  8 | VWU     | 21548796251 |
    |  9 | GHI     | 01235478996 |
    +----+---------+-------------+
    --------------
    COMMIT
    --------------
     
    Appuyez sur une touche pour continuer...
    Hormis la faisabilité, je rejoins mes collègues sur l'importance d'une bonne modélisation.

    Pour les autres questions, je vous conseille de vous informer sur "LOAD DATA INFILE" :
    --> https://dev.mysql.com/doc/refman/8.0/en/load-data.html

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. [AC-2007] Création d'une base de données pour gérer de la musique
    Par goldorak74 dans le forum Access
    Réponses: 1
    Dernier message: 22/05/2012, 09h45
  2. Création d'une base de données pour gérer des projets
    Par Rodrigue dans le forum Modélisation
    Réponses: 4
    Dernier message: 19/11/2010, 17h14
  3. [Entité-Association] Création d'une base de données pour site de rencontre
    Par cyreel dans le forum Schéma
    Réponses: 4
    Dernier message: 20/11/2009, 17h37
  4. Création d'une base de donnée pour la gestion des alertes
    Par Bandrax dans le forum Modélisation
    Réponses: 4
    Dernier message: 09/04/2009, 16h47
  5. Création d'une base de données pour gestion des stocks
    Par samaaantha dans le forum Modélisation
    Réponses: 8
    Dernier message: 08/05/2008, 21h13

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