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

Langage SQL Discussion :

Une table dont la structure change entre 2 années


Sujet :

Langage SQL

  1. #1
    Membre du Club Avatar de Zineb2014
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 57
    Points : 45
    Points
    45
    Par défaut Une table dont la structure change entre 2 années
    Bonjour,

    je travaille avec une table composée d'un certain nombre de champs.Mais l'année prochaine la structure de la table va changer(un autre champ qui s’ajoutera suite à des besoins métiers), sachant que cette table est objet d'une relation récursive ( relation du genre père/fils avec plusieurs niveaux).
    bien-entendu je dois gérer ce nouveau champ et cette récursivité tout en maintenant l'ancien affichage sur 2018 et années antérieures. j’espère que mon problème est clair, je compte sur vos réactions !

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    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 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Si aucun traitement n'est prévu pour alimenter une valeur rétroactivement sur les lignes existantes pour la nouvelle colonne, alors il faudra gérer par traitement les cas d'antériorité (test de nullité...)
    Le fait que la requête soit récursive ne change rien.
    Si vous utilisez la table au travers d'un vue, ce qui est fortement recommandé, la vue prendra en charge l'éventuelle conversion (COALESCE par exemple)

    Par contre il s'agit d'une nouvelle colonne et non d'un nouveau champs, les champs sont les attributs d'un formulaire et non d'une table

    Pouvez vous communiquer le DDL CREATE TABLE avant et après modif ? (quitte à anonymiser si besoin)

  3. #3
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Je traiterais ça comme un cas d'héritage : aucune modification dans la table actuelle, mais ajout d'une seconde table héritant de la première et contenant les nouvelles colonnes.

    Comme indiqué par escartefigue, il serait alors préférable de passer par une vue faisant la jointure (externe) entre ces deux tables, et gérant le contenu des nouvelles colonnes pour les "anciennes" données en fonction de vos règles de gestion.

  4. #4
    Membre du Club Avatar de Zineb2014
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 57
    Points : 45
    Points
    45
    Par défaut
    Je vous remercie pour vos réponses.
    l'ajout de la nouvelle colonne en fait impacte la récursivité, puisqu'un nouveau niveau qui s'ajoute aux 3 niveaux existants et au milieu.!
    l'affichage des 3 niveaux en 2018 et antérieur mais sur 2019 il faut en afficher 4.
    (si comme on avait pays, région,ville) et on le modifie par( pays,région,province,ville).

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    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 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Zineb2014 Voir le message
    (si comme on avait pays, région,ville) et on le modifie par( pays,région,province,ville).
    Si l'exemple que vous donnez est représentatif, alors c'est une erreur de modélisation, il faudrait 4 tables distinctes, une pour chaque niveau géographique

  6. #6
    Membre du Club Avatar de Zineb2014
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 57
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    alors c'est une erreur de modélisation, il faudrait 4 tables distinctes, une pour chaque niveau géographique
    une erreur ... je ne pense pas ,mais il n 'a pas de modèle parfait , tout modèle a des avantages et des inconvénients ça d'une part. d'autre part, pourquoi créer 4 tables qui seront constituées des même colonnes !!! le mieux est d'avoir une seule table avec une colonne pour distinguer les types ( les niveaux) sinon à quoi peut servir la récursivité !

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Peux tu nous donner la structure de ta table, et ce qui change entre les deux années, parce que je crois que dans l'abstraction on risque de te donner des conseils erronés ou qui ne s'applique pas à ton problème ?
    Merci
    Soazig

  8. #8
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    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 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Zineb2014 Voir le message
    une erreur ... je ne pense pas ,mais il n 'a pas de modèle parfait , tout modèle a des avantages et des inconvénients ça d'une part. d'autre part, pourquoi créer 4 tables qui seront constituées des même colonnes !!! le mieux est d'avoir une seule table avec une colonne pour distinguer les types ( les niveaux) sinon à quoi peut servir la récursivité !
    Tout à fait d'accord, mais en ce cas on ne rajoute pas de colonne quand un niveau apparait, on ajoute une nouvelle valeur pour identifier ce niveau
    Donc
    - soit les attributs pour chaque niveau géographique sont différents, auquel cas on modélise autant de tables que nécessaire, et une requête non récursive permet d'assembler les morceaux
    - soit les attributs sont identiques, on identifie le niveau par une nouvelle valeur d'un attribut existant, et une requête récursive permet d'assembler les morceaux

  9. #9
    Membre du Club Avatar de Zineb2014
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 57
    Points : 45
    Points
    45
    Par défaut
    @ escartefigue : dans mon cas ,on a opté pour le 2eme scenario : une seule table avec une relation récursive.
    ma question est étant donné qu'un nouveau niveau va s'introduire en 2019, comment puis je faire pour préserver les anciens niveaux sur <=2018 et afficher la nouvelle structure sur 2019 et plus ?.

  10. #10
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Comme indiqué par soazig, si vous postiez la structure de votre table, tout serait plus clair pour tout le monde.

    Car tel que vous le présentez, tout comme escartefigue, je ne vois pas en quoi l'ajout d'un niveau supplémentaire pose problème...

    A moins en efet, que vous ayez une nouvelle propriété propre aux province (dans votre exemple) que l es autre n'ont pas.

    Dans ce cas, comme je le disais, mettez en place un héritage : une table "zone_geographique" regroupant tout, avec les propriétés communes, et des tables de spécialisation, contenant les propriétés spécifique à chaque type de zone.

    Ainsi, point de colonnes inutiles (capitale pour une province par exemple), mais vous gardez la possibilité d'effectuer vos requêtes récursives comme avant.

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/02/2015, 08h27
  2. IMPORT D'une table dont la structure a changé
    Par agdid04 dans le forum Administration
    Réponses: 4
    Dernier message: 23/06/2008, 17h16
  3. Réponses: 6
    Dernier message: 08/02/2007, 14h41
  4. Réponses: 2
    Dernier message: 08/03/2006, 22h06
  5. curseur sur une table dont on ne connaît pas le nom
    Par NPortmann dans le forum Oracle
    Réponses: 4
    Dernier message: 12/07/2005, 09h04

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