Było już wiele dobrych odpowiedzi na to pytanie, które sprowadzają się do „Zależy od okoliczności” i nie mogę do nich niczego dodać.
Jedną rzeczą, o której nie wspomniano, ale myślę, że należy o tym wspomnieć, jest to, że nigdy nie powinieneś nigdy ponownie używać kluczy podstawowych, które zostały wygenerowane przez sekwencję lub system AUTO_INCREMENT.
Gdy usuniesz element, któremu przypisano klucz podstawowy przez taki system, w kolumnie klucza podstawowego pozostaną luki pozostawione przez usunięte dane. Istnieje wielka pokusa, aby przypisać te luki do nowych elementów w miarę ich dodawania, a nawet gorzej, aby przetasować istniejące dane, aby nadać im nowy identyfikator w celu usunięcia luk, ale spowoduje to problemy, które możesz nigdy nie będziesz musiał sobie z tym radzić, jeśli zostawiłeś klucze w spokoju.
Załóżmy, że przechowujesz bazę drukarek do zarządzania zamawianiem materiałów eksploatacyjnych. Drukarka 13, stara drukarka laserowa, psuje się poza ekonomiczną naprawą, więc ją wyrzucasz. Tymczasem z niezwiązanego powodu ktoś zamawia nową drukarkę termiczną do drukowania kodów kreskowych w magazynie, a ta drukarka zdarza się przed wymianą na drukarkę 13. Administrator rejestruje tę nową drukarkę w bazie danych, a ponieważ 13 jest teraz darmowa i przetwarzasz identyfikatory, nowa drukarka termiczna otrzymuje 13 jako swój identyfikator.
Teraz ktoś mówi ci, że w drukarce 13 prawie nie ma atramentu. Pamiętasz, że drukarka 13 jest drukarką laserową, więc nie zawracaj sobie głowy jej wyszukiwaniem w bazie danych i złożysz zamówienie na kasetę z tonerem. Tylko ty faktycznie musiałeś zamówić termiczny zestaw atramentów, ponieważ drukarka 13 nie jest już drukarką laserową. Gdy nadejdzie kaseta z tonerem, nie możesz jej użyć, ponieważ jest to zły wkład atramentu do drukarki, nie możesz wydrukować więcej kodów kreskowych i nie możesz wysłać żadnych zamówień oczekujących na wysłanie.
Co gorsza, co się stanie, jeśli usuniesz drukarkę 13 i przetasujesz wszystkie drukarki, które pojawią się po niej, aby wypełnić lukę? Drukarka 14 (niektóre zniszczona stara matryca punktowa) staje się drukarką 13, drukarka 15 staje się drukarką 14 i tak dalej.
Wszystkie drukarki mają na sobie etykiety, dzięki czemu można je odnieść do bazy danych, ale teraz wszystkie etykiety są nieaktualne. Musisz się obejść, zlokalizować każdą drukarkę w firmie (która może mieć setki!) I ponownie oznaczyć je etykietą. To nie jest efektywne wykorzystanie czasu. Jest to również proces podatny na błędy, a co się stanie, jeśli nigdy się nie uda? Ktoś dzwoni, by powiedzieć, że drukarka 14 zepsuła się i wymaga pilnej naprawy, więc sprawdź to i okaże się, że drukarka 14 jest drukarką atramentową w recepcji. Tylko dlatego, że przetasowałeś identyfikatory, tak naprawdę drukarka igłowa wymaga pilnej naprawy. Facet, który wezwał problem, pozostaje zawieszony, podczas gdy recepcjonistka ma faceta z działu pomocy technicznej, którego nigdy nie wezwała, aby naprawić drukarkę, która nie była zepsuta.
Powinieneś pomyśleć o identyfikatorach przypisanych przez system automatycznego przyrostu jako stałych, są one niezmienne i nie mogą być ponownie użyte, nawet jeśli rzecz, do której odnosi się identyfikator, przestaje istnieć. Niektóre osoby twierdzą, że nie chcą się martwić wyczerpaniem identyfikatorów, ale nawet w przypadku systemów 32-bitowych i podpisanych identyfikatorów nadal dostępnych jest około 2 miliardów identyfikatorów. Jeśli możesz sprawić, by kolumna ID była niepodpisana, liczba ta podwoi się do 4 miliardów, aw systemach 64-bitowych liczba dostępnych identyfikatorów jest dosłownie większa niż liczba gwiazd na niebie. Nie zabraknie ci identyfikatorów.