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

 SGBD Discussion :

Migration de données vers un nouveau schéma


Sujet :

SGBD

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 114
    Points : 72
    Points
    72
    Par défaut Migration de données vers un nouveau schéma
    Bonjour,

    Je cherche a amélioré une base de donné existante. Elle est composé d'une unique table contenant toute les données. On y trouve donc des information redondante comme par exemple des nom éditeurs. J'ai donc réfléchie à un nouveau MCD.

    Je ne sais pas comment gérer la migration des données vers ce nouveau schéma.

    La nouvelle appli que je développe doit fonctionner avec l'ancienne table et le nouveau schéma jusqu'à que l'ancienne table soit vide ou je doit essayer de transférer toutes les données vers le nouveau schéma?

    Merci de votre aide

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Points : 1 745
    Points
    1 745
    Par défaut
    Je ne vois pas de solution miracle.

    1 export vers excel.
    2 aménagement des données.
    3 import avec excel.

    Si quelqu'un a une idée ?

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 114
    Points : 72
    Points
    72
    Par défaut
    C'est vers cette solution que je pensais m'orienter mais je voulais quelques conseil avant de me lancer tête baissée.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 270
    Points : 342
    Points
    342
    Par défaut
    Les base de données et les schémas communiquent !

    Création d'un nouveau schéma, écriture d'un ensemble de requettes ou de traitements qui lisent l'ancien schéma et qui chargent le nouveau.

    L'avantage de cette méthode, c'est qu'elle peut être rejouées... Le ménage sous excel !

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Points : 1 745
    Points
    1 745
    Par défaut
    Il n'est pas sur 2 schémas différents...Il veut juste transférer les données d'une table à l'autre. As tu de l'expérience sur une telle migration car cela ne me semble pas aisé par des requetes de separer le bon grain et le mauvais dans une table unique non normalisée. C'est pour ça que je proposais excel pour mettre de l'ordre...evidemment, si il y a 1 million de ligne, mieux vaut un script!

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 270
    Points : 342
    Points
    342
    Par défaut
    C'est un travail classique de migration de données.
    Il faut peut être des tables intermédiaires pour mettre de l'ordre.
    Le tout est de préparer un procédure automatisée de reprise de données "rejouable", surtout si la table unique évolue encore ce qui semble être le cas.
    Evidement, s'il n'y a que quelques centaines de lignes et que on peut arreter la prod te temps de mettre au propre sous excel...

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 114
    Points : 72
    Points
    72
    Par défaut
    Il y a environ 2000 lignes dans ma table de départ donc le travail sous excel me semble compliqué.

    Mon problème est de trouver les bonne requête pour remplir mes nouvelles tables.

    A la base une table contenant des livres avec un champ contenant le nom de l'auteur. Dans mon nouveau schéma j'ai pensé créer une table auteur qui contient un identifiant et un nom et ainsi dans ma table de livres avoir juste l'identifiant de l'auteur.

    Je vois comment extraire mes nom d'auteur pour créer ma table des auteurs mais pas comment recréer ma table livres avec l'id de l'auteur présent dans ma table auteur à la place de son nom.

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Ton dernier message nous donne un début de modélisation :
    Auteur -0,n----Ecrire----1,n- Livres
    Un auteur peut ou pas écrire jusqu'à plusieurs livres.
    Un livre peut être écrit par un à plusieurs auteurs.
    Il en résulte trois tables :
    Auteurs(AutId, AutNom, ...)
    Livres(LivId, LivTitre, ...)
    Ecrire(Ec_FK_IDAuteur, EC_FK_IDLivre, ...)
    Les colonnes soulignées représentent les clés primaires des tables.
    FK représente les clés étrangères (Foreign Key).

    Pour alimenter la nouvelle base de données à partir de la table unique :
    1) Trouver dans la table source existante les colonnes qui permettent d'identifier de manière unique chaque livre (Titre n'est peut-être pas suffisant) et chaque Auteur (le nom n'est peut-être pas suffisant).

    2)Faire une requête qui va lister de manière unique chaque livre et s'en servir pour alimenter la table Livres.

    3) Idem pour les auteurs.

    4) Faire une requête qui va, à partir des infos contenues dans la table source actuelle, constituer les couples (Ec_FK_IDAuteur, EC_FK_IDLivre) pour alimenter la table Ecrire.
    Un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT a.AutId, l.LivId
    FROM Auteurs a
    INNER JOIN (tablesource t 
      INNER JOIN Livres l ON l.LivTitre = t.Titre) ON a.AuteurNom = t.Auteur
    Le principe est le même pour les autres tables (potentiellement : Editeurs, Langues, Genres, ...) en commençant toujours par les tables qui n'ont pas de clé étrangère.

    Bon courage.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 114
    Points : 72
    Points
    72
    Par défaut
    J'ai une petite question toute bête, quel est l'interet de faire une table ecrire dans ton exemple?

  10. #10
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Arnich Voir le message
    J'ai une petite question toute bête, quel est l'interet de faire une table ecrire dans ton exemple?
    Tout simplement à cause de ça :
    Citation Envoyé par CinePhil
    Auteur -0,n----Ecrire----1,n- Livres
    Un auteur peut ou pas écrire jusqu'à plusieurs livres.
    Un livre peut être écrit par un à plusieurs auteurs.
    Sinon comment relier les livres et les auteurs ?
    S'il n'y a qu'un auteur par livre alors on peut supprimer la table Ecrire et mettre la clé primaire de la table Auteur en tant que clé étrangère dans la table Livre. Mais comme on a une association 0,n----0,n on ne peut pas faire autrement que de créer une table associative.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  11. #11
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 114
    Points : 72
    Points
    72
    Par défaut
    D'accord j'avais pas pensé qu'un livre pouvait etre ecrit par plusieurs auteurs car dans le fonctionement actuel lorsque plusieurs auteurs ont collaboré dans le champ auteur on a une liste de nom d'auteur.

    Je sent que cela va etre compliqué.

    Je me demande si mon appli va pas fonctionner sur les deux bases jusqu'a ce que l'ancienne soit vide même si je vais avoir des soucis pour trier mes resultats.

  12. #12
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Si tu as une appli qui fonctionne actuellement avec l'ancienne base, laisse là tranquille.

    1) Crée la structure de la nouvelle base.

    2) Importe les données existantes à un instant T en notant la manière dont tu importes et en enregistrant toutes les requêtes qui t'ont permis l'importation, de manière à pouvoir reproduire la procédure plus tard.

    3) Fait la nouvelle appli et teste-la avec les données que tu as importées et qu'il faut considérer comme des données mortes.

    4) Quand tout est prêt, tu annonces aux utilisateurs que tu vas procéder à un transfert vers la nouvelle version et tu bloques l'ancienne base de données et l'appli existante.

    5) Tu transfères la nouvelle appli sur la machine de production (celle à laquelle font appel les utilisateurs).

    6) Tu vides ta nouvelle base de ses données mortes et tu transfères la structure sur la machine de production.

    7) Tu refais l'import des données de l'ancienne base en reproduisant la procédure d'import que tu as déjà utilisée et cette fois tu auras les dernières données à jour.

    8) Tu testes sur la machine de production que tout fonctionne.

    9) Ça marche ? Tu rouvres les accès et tu deviens le héros du jour avec une appli magnifique qui répond au besoin et qui est mieux que l'ancienne !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. migration de données vers Oracle 11G
    Par ITParty dans le forum Import/Export
    Réponses: 1
    Dernier message: 11/10/2011, 20h26
  2. [XSLT] xml ancien schéma vers xml nouveau schéma
    Par kossistus dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 03/10/2010, 19h44
  3. Migration de données vers Oracle
    Par bnoir dans le forum SQL*Loader
    Réponses: 2
    Dernier message: 23/09/2008, 15h07
  4. [debutan] migration de données Oracle vers SQL SERVER 2000
    Par Mil00se dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 17/08/2005, 17h44
  5. Migration de données Oracle vers SQL server
    Par joul's dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 16/02/2005, 15h05

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