sql >> Databáze >  >> RDS >> Sqlserver

Bude mě SQL Server 2005 penalizovat za použití nvarchar(50) jako primárního klíče místo celého čísla?

Narazili jste na jednu z hlavních „svatých válek“ návrhu databáze. Debata, o které se zmiňujete, je argument „náhradní vs. přirozený klíč“, který zuří tak dlouho, dokud existují RDBMS (takřka, jak mohu říci).

Debata se v podstatě scvrkává na to, zda by měl být použit reprezentativní klíč (náhradní, například sloupec IDENTITY) oproti použití skutečných dat, která jedinečně popisují záznam (přirozený klíč).

Řeknu, že neexistuje žádná „správná“ odpověď. Měření výkonu jsou artefaktem platformy a měla by být posouzena experimentem, ale výkon pravděpodobně nebude tím hlavním problémem.

Co považuji za primární argument pro náhradní klíče, je neměnnost primárních klíčů. Pokud se rozhodnete použít přirozený klíč, vzdáváte se možnosti tento klíč po jeho vytvoření změnit. Vzdáváte se také možnosti, že se někdy v budoucnu může stát nejedinečným. Z těchto důvodů obvykle (ne vždy) používám náhradní klíče pro většinu svých tabulek.

Nicméně, jak jsem již zmínil, existuje velmi dlouhotrvající debata plná diskusí o strategiích indexování a dodržování normálních forem, které si můžete přečíst, pokud jste tak nakloněni.

Vygoogloval bych "náhradní vs. přirozené klíče". Zde je několik odkazů, jak začít:

Systémové inženýrství a RDBMS

Techrepublic

Blog Tonyho Rogersona

Doufám, že to pomůže.



  1. Potíže se znaky UTF-8; co vidím, není to, co jsem uložil

  2. mysql_connect VS mysql_pconnect

  3. Příkaz IF uvnitř klauzule where v SQL

  4. Přístup odepřen uživateli „[email protected]“ (s použitím hesla:NE)