Rinumerare ID Tabelle

di il
5 risposte

Rinumerare ID Tabelle

Buongiorno
ho un dubbio a livello di studio sulla utilità o meno all'interno di un database access di rinumerare gli Id numerici delle tabelle quando vengono eliminati i record.
Studiando un libro, tempo fa, con esempi di programmazione mi sono imbattuta in questo codice che serviva per eliminare il vuoto nella numerazione lasciato da un record eliminato e mi sono chiesta se fosse utile/necessario e ogni quanto possa essere utile/necessario eseguire l'operazione (dopo ogni eliminazione?)
Nel caso, ad es., del db su cui lavoro io in ufficio gli ID sono spesso utilizzati per creare relazioni tra tabelle e quindi mi viene da pensare che non questa procedura è inutile ma che sarebbe assolutamente dannosa.
Vorrei però capire, come detto a livello di teorico di studio, perché possa venire proposta questa procedura.
grazie mille

5 Risposte

  • Re: Rinumerare ID Tabelle

    Non solo inutile ma dannoso. Non toccare gli ID
  • Re: Rinumerare ID Tabelle

    Credo che la discussione non sia legata alla Progettazione database. Crodino...ricordo che tu usi Access...direi che avresti dovuto postare lì. Segnalo ai moderatori per spostamento.
    Intanto provo a dire qualcosa che so io.
    Sul discorso online non metto bocca perchè sono totalmente inesperto.
    In passato io ho applicato spesso una relativamente lunga procedura per rinumerare tutti i "vuoti" numerici progressivi. L'operazione è abbastanza delicata e va fatta con molta cura: sbagliare è molto facile. Succede anche che lo facevo quando il database era semplice con poche tabelle. Oggi ho vari database molto più complessi, spesso mi capita di cancellare record (a malincuore...consapevole della creazione di vuoti). Voler rimettere tutto a posto...manca tempo e si rischia un bagno di sangue: morale ci rinuncio quasi sempre.
    Non sono sicuro di quello che dico: avere le tabelle con le numerazioni integre significa avere un database più leggero. Le numerazioni bacate occupano comunque spazio all'interno del database che si appesantisce inutilmente.
    Se hai pochi record bacati, lascia perdere. Se ti è capitato di mettere in moto inutili query di accodamento, può darsi che hai avuto dei salti giganteschi...non so, se hai voglia/tempo...facci un pensierino.
  • Re: Rinumerare ID Tabelle

    OsvaldoLaviosa ha scritto:


    In passato io ho applicato spesso una relativamente lunga procedura per rinumerare tutti i "vuoti" numerici progressivi. L'operazione è abbastanza delicata e va fatta con molta cura: sbagliare è molto facile. Succede anche che lo facevo quando il database era semplice con poche tabelle. Oggi ho vari database molto più complessi, spesso mi capita di cancellare record (a malincuore...consapevole della creazione di vuoti). Voler rimettere tutto a posto...manca tempo e si rischia un bagno di sangue: morale ci rinuncio quasi sempre.
    E' un'operazione del tutto inutile e va in contrasto con il vantaggio di avere un campo autoincrement (ovvero che tu NON sai o NON vuoi o NON puoi avere una chiave primaria con un significato specifico. Esempio : la Partita IVA è un campo chiave univoco per definizione, se vuoi puoi usarla nel tuo DB oppure puoi decidere di usare un autoincrement lasciando la P.IVa come campo univoco ma non primario).

    OsvaldoLaviosa ha scritto:


    Non sono sicuro di quello che dico: avere le tabelle con le numerazioni integre significa avere un database più leggero. Le numerazioni bacate occupano comunque spazio all'interno del database che si appesantisce inutilmente.
    Hai preso una strada totalmente sbagliata ... avere dei buchi nella numerazione automatica NON ha alcun impatto sulle dimensioni delle tabelle (ovviamente a seguito di cancellazioni di records è buona norma compattare il DB - operazione che va fatta a prescindere dal tipo di campo chiave)
  • Re: Rinumerare ID Tabelle

    Mi hanno già anticipato altri sull'assurdità della cosa, ma soprattutto sulla pericolosità di sbagliare, nonchè sulla necessità di RIMUOVERE lato server le relazioni in quanto non potrai RINUMERARE nulla con il vincolo Integrità refereinziale inserito.

    Detto questo, il campo PK(Counter) non deve essere scambiato con un campo Numerico Progressivo ordinale... è un'altra cosa.
    Se ti serve un Progressivo, specifico, si aggiunge un campo che verrà usato allo scopo, se il progressivo è usato solo in Stampe o in visualizzazione 9 volte su 10 si realizza con un Calcolato in query o nel Report con una semplice textbox.

    Quindi come già ti ho detto, prima si ragiona, poi si opera..., ma soprattutto si deve contestualizzare quello che si legge.
    Noi l'articolo di cui parli non lo abbiamo letto quindi è impossibile darne un giudizio contestualizzato.
  • Re: Rinumerare ID Tabelle

    Vi ringrazio per le opinioni, sono allineate con quello che pensavo io, mi ero solo interrogata su una eventuale utilità a cui io non riuscivo ad arrivare ma che mi pare in effetti non ci sia visto che ho preferito impostare tabelle con Chiavi primarie del tutto indipendenti che vengono principalmente utilizzate per relazioni referenziali tra tabelle.
    Quando serve in stampa o visualizzazione utilizzo già il metodo suggerito da Alex di una textbox con il conteggio dei record.
    Grazie mille ancora.
Devi accedere o registrarti per scrivere nel forum
5 risposte