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

PHP & Base de données Discussion :

Réorganisation des ID


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    QA
    Inscrit en
    Septembre 2022
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : QA

    Informations forums :
    Inscription : Septembre 2022
    Messages : 39
    Par défaut Réorganisation des ID
    Bonjour,

    J'aimerais savoir comment réorganiser mes données de ma Bd si je supprimes une donnée.

    Exemple: je supprimes ma donnée ayant le Id 2, j'aimerais que mes données suivantes change de id (la Id 3 devienne la #2, la id 3, la #4, etc).

    Merci

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 694
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 694
    Par défaut
    un identifiant doit rester unique et attaché à un seul objet.
    donc si vous avez besoin d'une autre information, vous devez la stocker dans un champ que vous rajoutez dans la table.

  3. #3
    Membre averti
    Homme Profil pro
    QA
    Inscrit en
    Septembre 2022
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : QA

    Informations forums :
    Inscription : Septembre 2022
    Messages : 39
    Par défaut
    Présentement j'affiche un div et je lui donne une position en fonction que ce soit un Id pair ou impair. Si je supprimes une donnée, dans mon affichage il y aura un vide. C'est pour éviter le vide que je veux réorganiser les id.

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 694
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 694
    Par défaut
    si c'est de la présentation, ce n'est pas une donnée donc ça n'a pas sa place dans la table.
    vous pouvez faire des effets alternées 1 sur 2 en css, regardez là :
    https://developer.mozilla.org/fr/doc...CSS/:nth-child

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 622
    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 622
    Billets dans le blog
    10
    Par défaut
    Bonjour

    Citation Envoyé par eiffel-mtl Voir le message
    Bonjour,

    J'aimerais savoir comment réorganiser mes données de ma Bd si je supprimes une donnée.
    1er point : la sémantique
    Dans une base de données, la réorganisation est une opération consistant à défragmenter les espaces physiques de stockage des données et des index.
    Pour les pages de données, il s'agit de les ranger selon la séquence de rangement définie par l'index cluster
    Pour les pages d'index, il s'agit de les ranger selon l'ordre des colonnes de l'index
    Aucune des deux opérations ne modifie les valeurs de quelque colonne que ce soit dans les tables !



    2e point : le rôle d'un identifiant
    Citation Envoyé par eiffel-mtl Voir le message
    Exemple: je supprimes ma donnée ayant le Id 2, j'aimerais que mes données suivantes change de id (la Id 3 devienne la #2, la id 3, la #4, etc).
    Cette expression de besoin est archi récurrente, elle est symptomatique de la méconnaissance du rôle d'un identifiant.
    Un identifiant au niveau conceptuel, qui devient clef primaire au niveau SQL n'a pour fonction que de permettre d'identifier de façon certaine une ligne particulière dans une table.
    Les caractéristiques d'une clef primaire sont d'être unique, stable, non "nullable" et irréductible.
    • Unique : comme son nom l'indique, chaque valeur ne peut exister qu'une seule fois
    • Stable : la valeur d'une PK (clef primaire) se propage dans les tables associées au travers des contraintes d'intégrité
    • Non "nullable" : la valeur est obligatoire, aucune PK ne peut être marquée "null"
    • Irréductible : une sous-partie de la PK ne peut suffire à garantir l'unicité.



    Dans votre demande, c'est le 2e point, la stabilité, qui pose problème : si l'on s'amusait à modifier les valeurs d'identifiants pour satisfaire une envie de valeur consécutives et sans trou (ce qui ne sert strictement à rien), on mettrait à jour toutes les valeurs de clefs étrangères (FK) associées.
    Ce qui, avec le phénomène de cascade, peut engendrer des millions, voire des milliards de mises à jour inutiles et mettre à plat la base de données.
    Tout ça pour quoi ?

    Par ailleurs, je rappelle que la valeur d'un ID ne préjuge en rien de son ordre d'arrivée dans la table, il est tout à fait possible que l'identifiant de valeur 100 ait été inséré dans la base de données après celui de valeur 150. Eh oui, c'est possible, et ce pour plusieurs raisons.

    Bref, ce type de préoccupations est un mauvais débat, il ne faut jamais tenter de boucher les trous ou de reséquencer les identifiants.
    Si vous voulez attribuer un numéro unique et sans trou pour un besoin particulier, utilisez la fonction ROW_NUMBER(), elle est faite pour ça !

    EDIT : J'ai profité de ce topic pour créer un billet dans mon blog, vous y trouverez des explications plus détaillées sur les identifiants
    C'est ICI

Discussions similaires

  1. [8i][9i] Réorganisation des bases
    Par Débéa dans le forum Oracle
    Réponses: 2
    Dernier message: 01/02/2006, 13h41
  2. [XSL] Réorganisation des données
    Par castaka dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 13/10/2005, 13h34
  3. [XSLT] Réorganisation des données
    Par castaka dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 27/06/2005, 18h24

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