Discussion: Diviser une table

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    août 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : août 2012
    Messages : 4
    Points : 3
    Points
    3

    Par défaut Diviser une table

    Bonjour,

    j'ai actuellemnt une table 'Excursions' qui contient un Id, start, end, ...

    En fonction du type d'activite un grand nombre de cellule sont vides et je voudrais diviser ma table en une table 'mere' qui contiendrait les elements communs a toutes excursions (start, end,...) et plusieurs tables filles, ex: exterieure (adresse, itineraire, .. ); sousTraitees (nomSousTraitant, prix,..), motorisees (permisNecessaire, itineraire,..), ...

    Dans mon idee je dois avoir une table 'activite', une table 'Type' (qui est une liste du type d'activite que nous proposons) et des tables 'exterieur', 'sousTrait', autres.

    Je ne trouve pas le moyen de lier ma table mere a une et une seule des tables filles.

    Merci de votre aide.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    janvier 2010
    Messages
    4 297
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : janvier 2010
    Messages : 4 297
    Points : 8 675
    Points
    8 675

    Par défaut

    Bonjour,

    Il vous faudra passer par des triggers : tout est détaillé dans l'article de SQLPro sur l'héritage

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    août 2008
    Messages
    2 440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2008
    Messages : 2 440
    Points : 4 687
    Points
    4 687

    Par défaut

    Sinon je pense qu'il est possible de créer une contrainte d'unicité sur (id_activite, id_type) de la table activite (ou de modifier la PK existante).
    Puis de rajouter l'id_type dans les tables filles référençant cette clé unique double de la table mère. Et enfin de rajouter une contrainte check sur l'id_type des tables filles.

    type (id_type, ...) (exemple 1=> exterieur, 2=> soustraitant ...)
    activite (id_activite, #id_type, ...) + UK(id_activite, #id_type)
    exterieur (#id_activite,#id_type, ...) + check id_type = 1
    sousTrait (#id_activite, #id_type, ...) + check id_type = 2

    # => FK
    _ => PK

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : juin 2002
    Messages : 332
    Points : 507
    Points
    507

    Par défaut

    Bonjour, tu peux généraliser encore plus le système.

    Tables:

    Excursion
    ExtraInfoType
    ExtraInfo



    Si tu as besoin d'information plus complexe, tu peux soit diviser tes types d'info extra en plusieurs type ou simplement sauvegarder des données complexes sous forme JSON ou XML.

Discussions similaires

  1. Enregistrements d'une table dans des divisions <div>
    Par mouadmagan dans le forum PHP & MySQL
    Réponses: 17
    Dernier message: 05/04/2011, 19h06
  2. Diviser une table en deux
    Par Aeltith dans le forum Modélisation
    Réponses: 3
    Dernier message: 30/10/2008, 21h26
  3. requete pour diviser une table sur plusieurs tables
    Par futurist dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 04/09/2008, 23h51
  4. Division d'une table Access 2003
    Par Troglo dans le forum Access
    Réponses: 4
    Dernier message: 11/01/2006, 20h55
  5. division d'une table
    Par libracom dans le forum Access
    Réponses: 5
    Dernier message: 30/11/2005, 10h33

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