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

Administration PostgreSQL Discussion :

Structure physique d'un héritage de tables


Sujet :

Administration PostgreSQL

  1. #1
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut Structure physique d'un héritage de tables
    Bonjour,
    Je viens de créer une table héritant d'une autre et je retrouve toutes les colonnes de la table mère dans la table fille.
    Cela veut-il dire que les colonnes existent physiquement dans les deux tables, et donc les données sont dupliquées ?
    La doc Postgresql laisse à penser que oui :
    Citation Envoyé par Doc_Postgresql
    Dans ce cas, la table capitales hérite de toutes les colonnes de sa table parent
    J'ai créé la clé primaire de la table fille, qui est bien entendu l'identifiant clé primaire de la table mère.
    Dois-je aussi recréer les clés étrangères de la table mère dans la table fille ? Les contraintes d'unicité sur les colonnes héritées de la table mère ?
    Citation Envoyé par Doc_Postgresql
    Toutes les contraintes de vérification d'une table parent sont automatiquement héritées par tous ses enfants. Néanmoins, les autres types de contraintes ne sont pas hérités.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    C'est la définition des colonnes qui est dupliquée et non le contenu. Voir cette discussion:

    http://www.developpez.net/forums/d83...ces-lheritage/

  3. #3
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Il me semblait bien que j'avais déjà participé à une discussion sur ce sujet !


    Citation Envoyé par estofilo
    Il suffit de partir de 2 tables vides dont l'une hérite de l'autre, d'insérer des données dans la table parente et de mesurer avec pg_relation_size() la taille de la table fille pour constater qu'elle reste à zéro, ou inversement d'insérer dans la table enfant et de constater que la table parent reste à zéro aussi.
    Ce que je comprends de ta réponse dans cette autre discussion :
    Si j'insère dans la table mère, la ligne ne figure que dans la table mère. Normal !
    Si j'insère dans la table fille, ce n'est inséré que dans la table fille, y compris toutes les colonnes qui appartiennent normalement à la table mère.

    C'est ça ?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Si j'insère dans la table mère, la ligne ne figure que dans la table mère. Normal !
    Si j'insère dans la table fille, ce n'est inséré que dans la table fille, y compris toutes les colonnes qui appartiennent normalement à la table mère.

    C'est ça ?
    Oui c'est ça. Pour moi on peut voir l'héritage comme apportant 2 fonctionnalités:
    1) les ajouts ou suppressions de colonnes de la table mère sont automatiquement répercutées sur les tables filles. Ca simplifie la vie quand on a plein de tables filles (cas du partitionnement)

    2) quand on se réfère au contenu de la table mère par select, update ou delete, implicitement ça se réfère en fait au contenu de toutes les tables, mère et filles, sauf si on met la clause ONLY.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Structure physique des cubes OLAP
    Par h_ismaili dans le forum Conception/Modélisation
    Réponses: 12
    Dernier message: 21/07/2009, 14h00
  2. héritage de table sous ORACLE, AIDE SVP
    Par gilardino dans le forum Oracle
    Réponses: 4
    Dernier message: 19/10/2007, 00h44
  3. Héritage de table dans un dataset
    Par fantasiiio dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 14/08/2007, 13h53
  4. Héritage avec tables liées à une autre base
    Par b_steph_2 dans le forum Access
    Réponses: 13
    Dernier message: 27/02/2007, 12h17
  5. Différencier physiquement deux enregistrements d'une table
    Par dcollart dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 25/07/2005, 07h55

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