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

MS SQL Server Discussion :

Diviser une table


Sujet :

MS SQL Server

  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
    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,

    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 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    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 : 502
    Points
    502
    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. [MySQL] Enregistrements d'une table dans des divisions <div>
    Par mouadmagan dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 05/04/2011, 18h06
  2. Diviser une table en deux
    Par Aeltith dans le forum Modélisation
    Réponses: 3
    Dernier message: 30/10/2008, 20h26
  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, 22h51
  4. Division d'une table Access 2003
    Par Troglo dans le forum Access
    Réponses: 4
    Dernier message: 11/01/2006, 19h55
  5. division d'une table
    Par libracom dans le forum Access
    Réponses: 5
    Dernier message: 30/11/2005, 09h33

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