Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dlaczego powinniśmy mieć kolumnę ID w tabeli użytkowników?

Nawet jeśli Twoja nazwa użytkownika jest unikalna, istnieje kilka korzyści z posiadania dodatkowej kolumny identyfikatora zamiast używania varchar jako klucza podstawowego.

  • Niektórzy ludzie wolą używać kolumny liczb całkowitych jako klucza podstawowego, aby służyć jako klucz zastępczy, który nigdy nie musi się zmieniać, nawet jeśli inne kolumny mogą ulec zmianie. Chociaż nic nie stoi na przeszkodzie, aby zmienić również naturalny klucz podstawowy, musisz użyć kaskadowych ograniczeń kluczy obcych, aby upewnić się, że klucze obce w powiązanych tabelach są aktualizowane zsynchronizowane z każdą taką zmianą.

  • Klucz podstawowy będący 32-bitową liczbą całkowitą zamiast varchar może zaoszczędzić miejsce. Wybór między kolumną klucza obcego int lub varchar w każdej innej tabeli, która odwołuje się do tabeli użytkownika, może być dobrym powodem.

  • Wstawianie do indeksu klucza podstawowego jest nieco bardziej wydajne, jeśli dodajesz nowe wiersze na końcu indeksu, w porównaniu z wstawianiem ich w środku indeksu. Indeksy w tabelach MySQL są zwykle strukturami danych B+Drzewo i możesz je przestudiować, aby zrozumieć, jak działają.

  • Niektóre frameworki aplikacji preferują konwencję, że każda tabela w Twojej bazie danych ma kolumnę klucza podstawowego o nazwie id , zamiast używania kluczy naturalnych lub kluczy złożonych. Przestrzeganie takich konwencji może uprościć niektóre zadania programistyczne.

Żadna z tych kwestii nie jest łamaniem umowy. Korzystanie z kluczy naturalnych ma też swoje zalety:

  • Jeśli wyszukujesz wiersze według nazwy użytkownika częściej niż szukasz według identyfikatora, lepiej wybrać nazwę użytkownika jako klucz podstawowy i skorzystać z magazynu InnoDB zorganizowanego według indeksów. Jeśli to możliwe, ustaw podstawową kolumnę wyszukiwania jako klucz podstawowy, ponieważ wyszukiwania kluczy podstawowych są bardziej wydajne w InnoDB (powinieneś używać InnoDB w MySQL).

  • Jak zauważyłeś, jeśli masz już unikalne ograniczenie dotyczące nazwy użytkownika, wydaje się, że marnowanie miejsca na przechowywanie dodatkowej kolumny identyfikatora, której nie potrzebujesz.

  • Użycie klucza naturalnego oznacza, że ​​klucze obce zawierają wartość czytelną dla człowieka zamiast arbitralnego identyfikatora liczby całkowitej. Dzięki temu zapytania mogą używać wartości klucza obcego bez konieczności łączenia się z powrotem do tabeli nadrzędnej w celu uzyskania „rzeczywistej” wartości.

Chodzi o to, że nie ma reguły, która obejmuje 100% przypadków. Często zalecam pozostawienie otwartych opcji i używanie kluczy naturalnych, kluczy złożonych i kluczy zastępczych nawet w jednej bazie danych.

Niektóre kwestie dotyczące kluczy zastępczych omawiam w rozdziale „Wymagany identyfikator” w mojej książce Antywzorce SQL:Unikanie Pułapki programowania baz danych .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd wstawiania JDBC

  2. Jak odróżnić te same nazwy pól dwóch tabel w zapytaniu wybierającym?

  3. Problem z instalacją Ruby on Rails - Jak korzystać z instalacji WAMP MySQL?

  4. MySQL wybierz nazwę kolumny i wartość jako pole

  5. Pobieranie zrzutu MySQL z wiersza poleceń