Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jaka jest najlepsza praktyka dotycząca kluczy podstawowych w tabelach?

Przestrzegam kilku zasad:

  1. Klucze podstawowe powinny być tak małe, jak to konieczne. Preferuj typ liczbowy, ponieważ typy liczbowe są przechowywane w znacznie bardziej zwartym formacie niż formaty znakowe. Dzieje się tak, ponieważ większość kluczy podstawowych będzie kluczami obcymi w innej tabeli, a także będzie używana w wielu indeksach. Im mniejszy klucz, tym mniejszy indeks, tym mniej stron w pamięci podręcznej będziesz używać.
  2. Klucze podstawowe nigdy nie powinny się zmieniać. Aktualizowanie klucza podstawowego zawsze powinno być wykluczone. Dzieje się tak, ponieważ najprawdopodobniej będzie używany w wielu indeksach i używany jako klucz obcy. Aktualizacja pojedynczego klucza podstawowego może spowodować efekt domina zmian.
  3. NIE używaj „klucza podstawowego problemu” jako klucza podstawowego modelu logicznego. Na przykład numer paszportu, numer ubezpieczenia społecznego lub numer umowy pracowniczej, ponieważ te „klucze naturalne” mogą się zmieniać w rzeczywistych sytuacjach. Pamiętaj, aby dodać ograniczenia UNIKALNE, jeśli jest to konieczne, aby wymusić spójność.

Jeśli chodzi o klucz zastępczy a klucz naturalny, odwołuję się do powyższych zasad. Jeśli klucz naturalny jest mały i nigdy się nie zmieni, może być używany jako klucz podstawowy. Jeśli klucz naturalny jest duży lub może się zmienić, używam kluczy zastępczych. Jeśli nie ma klucza podstawowego, nadal tworzę klucz zastępczy, ponieważ doświadczenie pokazuje, że zawsze dodajesz tabele do swojego schematu i żałujesz, że nie umieszczasz klucza podstawowego.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 11 najlepszych praktyk dotyczących indeksowania SQL Server w celu poprawy wydajności dostrajania

  2. Kopia zapasowa SQL Server 2017 -2

  3. Wyjaśnienie ANSI_NULLS programu SQL Server

  4. Jak włączyć kompresję w istniejącej tabeli w SQL Server (T-SQL)

  5. czy można wybrać bezpośrednio jako bit?