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 :

problème dans la création des tables et leurs clés primaires et etrangères


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 72
    Points : 43
    Points
    43
    Par défaut problème dans la création des tables et leurs clés primaires et etrangères
    salut
    j'ai 5 tables client , adresse , facture , dossier , litige
    un client a une adresse et une ou plusieurs dossier , dans chaque dossier il y a un ou plusieurs factures , il est possible de faire un ou plusieurs litiges sur une facture
    vous pouvez me donner la bonne solution , les avantages et les inconvénients des solutions suivantes :

    1 -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Client (ncli primary key , ref_adr foreign key,........)
    adresse ( ref_adr primary key,......)
    dossier(ndos primary key , ncli foreign key,.........)
    facture ( nfct primary key,ndos foreign key, ......)
    litige (nlitige primary key , nfct foreign key, .....)

    2- je regroupe mes clés dans une table pour minimiser le nombre de jointures

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Client (ncli primary key )
    adresse ( ref_adr primary key,......)
    dossier(ndos primary key ,.........)
    facture ( nfct primary key, ......)
    litige (nlitige primary key , .....)
    Ref(clef primary key , ncli foreign key , ref_adr foreign key , ndos foreign key , nfct foreign key , nlitige foreign key)
    3 -

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Client (ncli primary key , ref_adr foreign key,........)
    adresse ( ref_adr primary key,......)
    dossier(ndos primary key , ncli foreign key,.........)
    facture ( nfct primary key,ndos foreign key,ncli foreign key ......)
    litige (nlitige primary key , nfct foreign key,ndis foreign key , ncli foreign key .....)

    ou il y a autre solution

    merci d' avance

  2. #2
    Membre régulier Avatar de Doracle
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2010
    Messages : 60
    Points : 74
    Points
    74
    Par défaut
    La première solution semble la plus propre et celle qu'on retrouve le plus souvent : facilité de lecture, juste assez de contraintes d'intégrités pour tes besoins, pour moi c'est la soltion idéale.

    La deuxième est bizarre, une table pour stocker uniquement tes clefs ? j'ai jamais vu ça ... c'est pas pour rien

    La troisième est intéressante car elle t'offre plus de paramètres, notamment pour l'affichage, en effet tu auras la facture numéro 1, du client 1, et son litige 1 etc ... et la facture 1 du client 2 aussi. Pourquoi pas. C'est complet, reste a savoir si tu en as le besoin car au niveau des contraintes d'intégrités ca va vite devenir lourd, tu seras plus souvent obligé de vérifier les contraintes pour tes ajouts/suppressions. Donc a utiliser que s'il y en a un réel besoin, car ca peut vite devenir lourd autant pour toi que pour le serveur.

    Donc solution 1, propre, facile et efficace.

  3. #3
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 72
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par Doracle Voir le message

    La deuxième est bizarre, une table pour stocker uniquement tes clefs ? j'ai jamais vu ça ... c'est pas pour rien

    merci pour la réponse , pour la deuxième solution , c'est pour minimiser le nombre de jointures , si je veux trouver le client qui a le litige numéro X par exemple , j'accéde directement à la table client via la table ref au lieu de faire des jointures avec tous les tables ..

  4. #4
    Membre régulier Avatar de Doracle
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2010
    Messages : 60
    Points : 74
    Points
    74
    Par défaut
    Oui je connais un minimum, c'est le principe des star transformations ... encore une fois c'est une utilité vraiment spécifique plutôt orientée pour les datawarehouses.
    Explique nous la charge que devra supporter ta base, nombre de connections, ou le nombre de lignes produites, peut-être on t'aidera mieux comme ça.

  5. #5
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 72
    Points : 43
    Points
    43
    Par défaut
    actuellement , une seule connexion avec quelques lignes pour tester l'application
    mais l'application est orienté vers une entreprise , donc des millions de lignes peuvent être stockées avec plusieurs postes clientes connectées avec la base

  6. #6
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 72
    Points : 43
    Points
    43
    Par défaut
    pour l'insertion dans la table Ref , je fais un trigger qui récupère la clé primaire à chaque insertion dans les autres tables ...etc

Discussions similaires

  1. Problème création des tables en SQL-Server
    Par pizzaman dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 10/02/2012, 22h58
  2. Réponses: 5
    Dernier message: 25/05/2010, 21h58
  3. Problème d'apostrophe dans les noms des tables
    Par anaranjado dans le forum Débuter
    Réponses: 2
    Dernier message: 11/03/2010, 18h16
  4. probléme avec la création des tables
    Par lila23 dans le forum Développement
    Réponses: 1
    Dernier message: 15/02/2009, 18h12
  5. Création de table avec plusieurs clés primaires
    Par jeanjean0403 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 31/12/2007, 15h10

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