Précédent   Forum du club des développeurs et IT Pro > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 22/02/2013, 17h01   #1
sxankow
Invité de passage
 
Homme
Inscription : août 2012
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2012
Messages : 4
Points : 0
Points : 0
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.
sxankow est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2013, 17h23   #2
aieeeuuuuu
Expert Confirmé
 
Inscription : janvier 2010
Messages : 1 696
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 696
Points : 2 672
Points : 2 672
Bonjour,

Il vous faudra passer par des triggers : tout est détaillé dans l'article de SQLPro sur l'héritage
aieeeuuuuu est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2013, 17h40   #3
skuatamad
Expert Confirmé
 
Inscription : août 2008
Messages : 1 690
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 690
Points : 2 813
Points : 2 813
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
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2013, 16h31   #4
Babyneedle
Membre éclairé

 
Inscription : juin 2002
Messages : 283
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : juin 2002
Messages : 283
Points : 363
Points : 363
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.
Babyneedle est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 12h18.


 
 
 
 
Partenaires

Hébergement Web