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 :

Sql Passe-Partout des données !


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    992
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 992
    Par défaut Sql Passe-Partout des données !
    Bonjour,
    depuis un certains temps j'ai posé ma question
    concernant la recherche d'une clés, de tel sorte qu'elle soit la meilleur clé
    pour ne pas altérer les données, (effacer ou augmenter les données).

    cela dit, j'ai eu une proposition de mon responsable,
    qui était de ne pas se prendre la tête :

    Si on a : data1/ data2/ ..... data 30 : Pas la peine de chercher une clé, mais faire : Data1 + data2...+data 30 = Clé Primaire (clé unique),

    mais je m'oppose à cela pour 2 raisons ou Hypothèses :

    1) Lenteur de la Sélection ou peut être de l'insertion des données.
    2) Que si la clé dépasse 3 attributs ce n'est plus une clé.

    Merci de me donner votre avis, en général sur la question,
    et surtout vôtre avis sur mes hypothèses.

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Une bonne clé primaire est de type entier non nul non signé et auto-incrémentée.

    Inutile de chercher autre chose.

    Mais je comprends peut-être mal le contenu de votre message ?

    la recherche d'une clés, de tel sorte qu'elle soit la meilleur clé
    pour ne pas altérer les données, (effacer ou augmenter les données).
    Une clé n'altère pas les données, elle en assure seulement l'identification unique.

    Si on a : data1/ data2/ ..... data 30 : Pas la peine de chercher une clé, mais faire : Data1 + data2...+data 30 = Clé Primaire (clé unique),

    mais je m'oppose à cela
    Et vous avez bien raison de vous y opposer !
    Une clé de 30 colonnes, ça devient ingérable, à la fois pour le programmeur et pour le SGBD.

    1) Lenteur de la Sélection ou peut être de l'insertion des données.
    Effectivement, ça risque de vite devenir très lent !

    2) Que si la clé dépasse 3 attributs ce n'est plus une clé.
    Ca par contre, c'est faux.
    Si vous avez dans le MCD une relation qui met en jeu 5 entités, vous aurez, pour la table issue de cette relation, une clé primaire composée des 5 identifiants des entités.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Une bonne clé primaire est de type entier non nul non signé et auto-incrémentée.
    Bof. Surtout vu ta dernière remarque sur les clefs composites.

    Inutile de chercher autre chose.
    Re-bof. Je suppose que faressam est ici pour trouver des arguments... et ne pas juste annoncer à son chef : "C'est pas bon, inutile de discuter"

    Effectivement, ça risque de vite devenir très lent !
    Hmmm, faut pas exagérer non plus. Faudrait faire le test... mais pour des accès ponctuels et très sélectifs, il n'y a pas de raisons que ça rame tant que ça (même si ça va probablement augmenter le niveau du b-tree).
    Même en modification, pour l'instant il ne s'agit toujours que d'un index à mettre à jour (certes il y a à chaque fois la contrainte d'unicité à vérifier)

  4. #4
    Membre émérite Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Par défaut
    Citation Envoyé par pacmann Voir le message
    Bof. Surtout vu ta dernière remarque sur les clefs composites.
    Bonjour,

    Je pense que ce que Cinephil voulait dire, c'est qu'à moins d'avoir une table qui est la résultante d'une relation n-n, la meilleure clef primaire est de type entier non nul non signé et auto-incrémentée.

    S'il s'agit d'une table issue d'une relation n-n, la meilleure clef primaire et l'ensemble des clefs étrangères.

    Arkhena

  5. #5
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Arkhena Voir le message
    Je pense que ce que Cinephil voulait dire, c'est qu'à moins d'avoir une table qui est la résultante d'une relation n-n, la meilleure clef primaire est de type entier non nul non signé et auto-incrémentée.

    S'il s'agit d'une table issue d'une relation n-n, la meilleure clef primaire et l'ensemble des clefs étrangères.
    C'est exactement ça !

    SQLPro avait je crois écrit de très bons arguments sur le fait qu'une bonne clé est de type entier non null et auto-incrémentée mais je ne retrouve pas l'article où cela figure.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Oui Cinephil, je sais que c'est à cela que tu faisais référence

    http://sqlpro.developpez.com/cours/clefs/

    En soit, je ne nie pas qu'une clé entière auto incrémentée soit une bonne idée.
    Mais là, c'était dans l'autre sens :
    Citation Envoyé par toi
    Une bonne clé primaire est de type entier non nul non signé et auto-incrémentée.
    Mais je suis toujours un tout petit peu interpelé par les règles intransigeantes et bues comme parole d'évangile. Je pense que nous devrions profiter du fait que nous ayons un cerveau pour évaluer ces axiomes / dogmes, peser du pour et du contre, rechercher des avis différents, ...
    En gros, même si les articles de SQL Pro sont souvent très bons et apportent beaucoup à la littérature SQL francophone du net, cela ne doit pas nous empêcher de penser de temps en temps par nous même !

    Et il y a plein d'autres exemples (pas par rapport à SQL Pro, mais de manière générale sur notre propension au moutonisme) : string aggregation, sélectivité et ordre des colonnes dans un index, les règles de performances (NOT) EXISTS / (NOT) IN / LEFT OUTER JOIN, ...

  7. #7
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !

    Les responsables... devraient se contenter de faire de la responsabilité

    1) Lenteur de la Sélection ou peut être de l'insertion des données.
    2) Que si la clé dépasse 3 attributs ce n'est plus une clé.
    Je ne sais pas si tes arguments sont vraiment bons...
    (en tous cas le second est à mon sens faux)

    Ton index de 30 colonnes va être énorme, et donc pour parcourir des sélections, ça va être plus long.

    Par ailleurs, à chaque fois qu'une donnée sera modifiée, ça mettra à jour l'index (perte de temps, donc).

    Si tes lignes doivent être référencées par une autre table, la référence sera plus petite, plus pratique, plus maniable si elle consiste en un identifiant (plutôt que l'ensemble des colonnes). Et bien sûr, toujours dans le cas des références externes, la modification d'une des données serait assez lourde (avec des violation de contraintes ou des cascades...)

    Petit argument supplémentaire : normalement, il y a un modèle de données. D'une manière ou d'une autre, on définit des élements, entités, qui correspondent à une certaine logique...
    Avec votre méthode, c'est comme si au lieu de t'appeler "faressam", je préférais dire : "Date d'inscription: janvier 2005", "Localisation: Maroc, Canada, France", "Âge: 25", "Messages: 898", ...
    => Ce n'est pas vraiment ce qui t'identifie...

    Enfin bref, si vous pouvez éviter cette méthode, faites-le !

  8. #8
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par pacmann Voir le message
    Avec votre méthode, c'est comme si au lieu de t'appeler "faressam", je préférais dire : "Date d'inscription: janvier 2005", "Localisation: Maroc, Canada, France", "Âge: 25", "Messages: 898", ...
    => Ce n'est pas vraiment ce qui t'identifie...
    D'autant plus que l'âge et le nombre de messages changent (au moins ces informations là) et en principe, on ne met jamais à jour une clé primaire.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    992
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 992
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    D'autant plus que l'âge et le nombre de messages changent (au moins ces informations là) et en principe, on ne met jamais à jour une clé primaire.
    Si je comprends bien, les éléments (3 ou 30) qui fabriquent
    une clé primaire, ne doivent pas être modifiés ?

    Pour la question d'altérer, je voulais dire, que si on met en place une clés pas optimale ou bonne, des données ne seront peut être pas prit en considèration
    ou même le contraire, des données en plus dont on en a pas besoin.

    exemple:
    Si on indexe le Forumiste par son pays, bein on aura le même utilisateur
    2 ou 3 fois : Faressam qui se balade entre Canada, Maroc et France.

    Faressam : Maroc
    Faressam : Canada
    Faressam : France

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

Discussions similaires

  1. script SQL qui réinsère des Données d'une BD dans une autre BD.
    Par kamaldev dans le forum Administration
    Réponses: 1
    Dernier message: 19/04/2007, 14h01
  2. Réponses: 2
    Dernier message: 30/01/2007, 09h01
  3. Réponses: 11
    Dernier message: 26/12/2006, 19h05
  4. Réponses: 5
    Dernier message: 12/12/2006, 16h24
  5. Utiliser SQL pour archiver des données de tables
    Par com-ace dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 20/08/2006, 18h53

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