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

Développement SQL Server Discussion :

Créer une clé ID avec 3 fois rien [2008R2]


Sujet :

Développement SQL Server

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Analyste de données
    Inscrit en
    Février 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Analyste de données

    Informations forums :
    Inscription : Février 2016
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Créer une clé ID avec 3 fois rien
    Bonjour,

    Je dois creer un ID pour une bdd d'emails envoyés. Aujourd'hui, cette bdd comporte 3 colonnes (date d'envoi, email, corps du mail). En l'etat, une ligne = un email unique.

    J'ai pensé à creer une colonne qui serait un hashbytes('md5',@colonne) apres avoir concatene les 3 colonnes,retiré les caractères inutiles et converti en varchar(max). Cela devrait créer un code unique, non ?


    A l'heure où je vous ecris, je ne sais pas si le hashtag tient compte du null et si c'est fiable.


    Que pensez vous de cette methode pour creer une clé/index ?Je suis ouvert à toutes propositions.

    Bonne fete de fin de match et merci d'avance

    (Excusez moi si je ne respecte pas le format habituel de jeux de données, je suis encore au stade reflexion et brouillon)

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 561
    Points
    38 561
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Vous vous compliquez la vie pour rien et surtout vous ne respectez pas les règles d'or pour une colonne PK : la valeur doit être stable et concise
    Votre solution fait dépendre la clef primaire de la valeur des colonnes, donc si une valeur change, votre clef change
    De plus un hashbytes MD5 vous renvoie une valeur sur 128 bits soit 16 octets, alors qu'une colonne de type integer n'en prend que 4
    Utilisez tout simplement une identity column, le SGBD se chargera de calculer la valeur, il fait ca très bien

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 577
    Points
    52 577
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Taranis70 Voir le message
    Bonjour,

    Je dois creer un ID pour une bdd d'emails envoyés. Aujourd'hui, cette bdd comporte 3 colonnes (date d'envoi, email, corps du mail). En l'etat, une ligne = un email unique.

    J'ai pensé à creer une colonne qui serait un hashbytes('md5',@colonne) apres avoir concatene les 3 colonnes,retiré les caractères inutiles et converti en varchar(max). Cela devrait créer un code unique, non ?
    Absolument pas unique et totalement débile comme approche !
    1) le traitement pour calculer la clef est long et complexe.
    2) en cas de modification (UPDATE) il faudra recalculer la clef
    3) le résultat est un exadecimal de 16 octets, soit 128 bits... C'est une clef énorme. À moins que vous n'envisagiez de dépasser 9223372036854775807 lignes dans votre table...
    4) en cas de NULL, hashbytes plante
    ...


    A l'heure où je vous ecris, je ne sais pas si le hashtag tient compte du null et si c'est fiable.


    Que pensez vous de cette methode pour creer une clé/index ?Je suis ouvert à toutes propositions.

    Bonne fete de fin de match et merci d'avance

    (Excusez moi si je ne respecte pas le format habituel de jeux de données, je suis encore au stade reflexion et brouillon)
    Prenez un simple auto incrément (IDENTITY) avec un INT si vous n'envisagez pas de dépasser 2 milliards de lignes, sinon un BIGINT.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Analyste de données
    Inscrit en
    Février 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Analyste de données

    Informations forums :
    Inscription : Février 2016
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Merci
    J'ignorais l'existence d'Identity ca me simplifie la vie.
    Merci pour vos retours

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 577
    Points
    52 577
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Taranis70 Voir le message
    J'ignorais l'existence d'Identity ca me simplifie la vie.
    Merci pour vos retours
    Cela fait partie de la norme SQL !!!!

    Quelles études avez vous fait ? Dans quelle école ??

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Analyste de données
    Inscrit en
    Février 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Analyste de données

    Informations forums :
    Inscription : Février 2016
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Aucunes études ni écoles (ca existe des écoles en SQL?)
    Ca évitera le débat du spécialiste qui écrase le néophyte

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 577
    Points
    52 577
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Taranis70 Voir le message
    Aucunes études ni écoles (ca existe des écoles en SQL?)
    Ca évitera le débat du spécialiste qui écrase le néophyte
    Hach Zooo...

    Petit conseil... Formez vous !
    1) livre sur le langage SQL :
    Nom : Couverture SQL Synthex 4e ed - 500.jpg
Affichages : 72
Taille : 77,8 Ko
    2) livre sur SQL Server
    Nom : Couverture livre SQL server Eyrolles.jpg
Affichages : 78
Taille : 105,0 Ko
    3) livre sur la modélisation:
    Nom : Soutou Brouard Modélisation bases de données.jpg
Affichages : 70
Taille : 40,3 Ko

    Etant donné que je suis co auteur des trois, si vous avez un problème, une remarque, revenez me voir...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer une bd access avec un fichier SQL
    Par delma dans le forum Access
    Réponses: 2
    Dernier message: 03/10/2006, 17h19
  2. Créer une Tâche Outlook avec ASP
    Par Hamdi dans le forum ASP
    Réponses: 3
    Dernier message: 04/04/2006, 17h00
  3. Es-ce possible de créer une table MySQL avec MS Excel
    Par pierrot10 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 16/10/2005, 06h30
  4. Créer une base Access avec Delphi
    Par Oluha dans le forum Bases de données
    Réponses: 3
    Dernier message: 11/10/2005, 16h55
  5. [JTable] Créer une JTable vide avec des noms de colonnes.
    Par Cyborg289 dans le forum Composants
    Réponses: 2
    Dernier message: 27/09/2005, 15h54

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