une question de debutant:
j'ai crée une table sous SQL Server 2005 et je me demande quelles sont les
'best practices' concernant les Clés primaires.
Quel est l'interet de creer une colonne AutoID column et la mettre en clé
primaire?
Sinon j'ai une clé primaire naturelle qui est formée par le n-uplet FUND_ID
+ CLASSE_CODE + FEE_ID
Je ne vois pas bien l'interet de creer une colonne AutoID car ca ne me
protegera pas de l'insertion de doublons?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
zoltix
Christophe Leroquais a écrit :
Bonjour,
une question de debutant: j'ai crée une table sous SQL Server 2005 et je me demande quelles sont les 'best practices' concernant les Clés primaires. Quel est l'interet de creer une colonne AutoID column et la mettre en clé primaire? Sinon j'ai une clé primaire naturelle qui est formée par le n-uplet FUND_ID + CLASSE_CODE + FEE_ID
Je ne vois pas bien l'interet de creer une colonne AutoID car ca ne me protegera pas de l'insertion de doublons?
Merci,
Christophe
Dans une clef primaire composé de plusieurs champs aucun ses champs ne peuvent être a null, Faut essayer d’éviter les clefs primaires composées pour une question de performance. Parfois, pour une question de pratique c’est quand même mieux une clef composé.
Ceci dit je ne vois pas l’inconvénient de mettre un champ avec id unique comme clef primaire et un index avec une contrainte d’unicité. Et des index de performance pour optimiser la where clause.
Christophe Leroquais a écrit :
Bonjour,
une question de debutant:
j'ai crée une table sous SQL Server 2005 et je me demande quelles sont les
'best practices' concernant les Clés primaires.
Quel est l'interet de creer une colonne AutoID column et la mettre en clé
primaire?
Sinon j'ai une clé primaire naturelle qui est formée par le n-uplet FUND_ID
+ CLASSE_CODE + FEE_ID
Je ne vois pas bien l'interet de creer une colonne AutoID car ca ne me
protegera pas de l'insertion de doublons?
Merci,
Christophe
Dans une clef primaire composé de plusieurs champs aucun ses champs ne
peuvent être a null, Faut essayer d’éviter les clefs primaires
composées pour une question de performance. Parfois, pour une question
de pratique c’est quand même mieux une clef composé.
Ceci dit je ne vois pas l’inconvénient de mettre un champ avec id
unique comme clef primaire et un index avec une contrainte d’unicité.
Et des index de performance pour optimiser la where clause.
une question de debutant: j'ai crée une table sous SQL Server 2005 et je me demande quelles sont les 'best practices' concernant les Clés primaires. Quel est l'interet de creer une colonne AutoID column et la mettre en clé primaire? Sinon j'ai une clé primaire naturelle qui est formée par le n-uplet FUND_ID + CLASSE_CODE + FEE_ID
Je ne vois pas bien l'interet de creer une colonne AutoID car ca ne me protegera pas de l'insertion de doublons?
Merci,
Christophe
Dans une clef primaire composé de plusieurs champs aucun ses champs ne peuvent être a null, Faut essayer d’éviter les clefs primaires composées pour une question de performance. Parfois, pour une question de pratique c’est quand même mieux une clef composé.
Ceci dit je ne vois pas l’inconvénient de mettre un champ avec id unique comme clef primaire et un index avec une contrainte d’unicité. Et des index de performance pour optimiser la where clause.
Fred BROUARD
Christophe Leroquais a écrit :
Bonjour,
une question de debutant: j'ai crée une table sous SQL Server 2005 et je me demande quelles sont les 'best practices' concernant les Clés primaires. Quel est l'interet de creer une colonne AutoID column et la mettre en clé primaire? Sinon j'ai une clé primaire naturelle qui est formée par le n-uplet FUND_ID + CLASSE_CODE + FEE_ID
Imaginons que : - Fund_id soit de type INTEGER - Class code soit de type CHAR(8) - FEE_ID de type INTEGER
Par rapport à une clef autoinc votre clef est au moins 4 fois moins rapide dans toutes les opérations et notamment dans les comparaisons qui sont la base des jointures. De plus, cette structure multi colonne de clef sera lente en recherche si un filtre WHERE porte sur class code ou fee id ou les deux sans fund_id.
Si cela vous intéresse, venez à mon cours d'optimisation sur SQL Server que je fais à Orsys... Il y a de belles démo, de ce genre !
Je ne vois pas bien l'interet de creer une colonne AutoID car ca ne me protegera pas de l'insertion de doublons?
Si, car vous pouvez créer une contrainte d'unicité avec les colonnes sus visées.
Merci,
Christophe
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Christophe Leroquais a écrit :
Bonjour,
une question de debutant:
j'ai crée une table sous SQL Server 2005 et je me demande quelles sont les
'best practices' concernant les Clés primaires.
Quel est l'interet de creer une colonne AutoID column et la mettre en clé
primaire?
Sinon j'ai une clé primaire naturelle qui est formée par le n-uplet FUND_ID
+ CLASSE_CODE + FEE_ID
Imaginons que :
- Fund_id soit de type INTEGER
- Class code soit de type CHAR(8)
- FEE_ID de type INTEGER
Par rapport à une clef autoinc votre clef est au moins 4 fois moins
rapide dans toutes les opérations et notamment dans les comparaisons qui
sont la base des jointures.
De plus, cette structure multi colonne de clef sera lente en recherche
si un filtre WHERE porte sur class code ou fee id ou les deux sans fund_id.
Si cela vous intéresse, venez à mon cours d'optimisation sur SQL Server
que je fais à Orsys... Il y a de belles démo, de ce genre !
Je ne vois pas bien l'interet de creer une colonne AutoID car ca ne me
protegera pas de l'insertion de doublons?
Si, car vous pouvez créer une contrainte d'unicité avec les colonnes sus
visées.
Merci,
Christophe
A +
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
une question de debutant: j'ai crée une table sous SQL Server 2005 et je me demande quelles sont les 'best practices' concernant les Clés primaires. Quel est l'interet de creer une colonne AutoID column et la mettre en clé primaire? Sinon j'ai une clé primaire naturelle qui est formée par le n-uplet FUND_ID + CLASSE_CODE + FEE_ID
Imaginons que : - Fund_id soit de type INTEGER - Class code soit de type CHAR(8) - FEE_ID de type INTEGER
Par rapport à une clef autoinc votre clef est au moins 4 fois moins rapide dans toutes les opérations et notamment dans les comparaisons qui sont la base des jointures. De plus, cette structure multi colonne de clef sera lente en recherche si un filtre WHERE porte sur class code ou fee id ou les deux sans fund_id.
Si cela vous intéresse, venez à mon cours d'optimisation sur SQL Server que je fais à Orsys... Il y a de belles démo, de ce genre !
Je ne vois pas bien l'interet de creer une colonne AutoID car ca ne me protegera pas de l'insertion de doublons?
Si, car vous pouvez créer une contrainte d'unicité avec les colonnes sus visées.
Merci,
Christophe
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************