Na poziomie logicznym e-mail jest naturalnym kluczem. W fizycznym poziomie , biorąc pod uwagę, że korzystasz z relacyjnej bazy danych, klucz naturalny nie pasuje do klucza podstawowego. Powodem są głównie problemy z wydajnością wspomniane przez innych.
Z tego powodu projekt można dostosować. Klucz naturalny staje się kluczem alternatywnym (UNIQUE, NOT NULL), a kluczem zastępczym / sztucznym / technicznym jest klucz podstawowy, który może być w twoim przypadku automatyczną inkrementacją.
zapytał systempuntoout,
Co jeśli ktoś chce zmienić swój adres e-mail? Czy zamierzasz również zmienić wszystkie klucze obce?
Po to jest kaskadowanie .
Kolejny powód używania numerycznego klucza zastępczego jako klucza podstawowego jest związany ze sposobem indeksowania na Twojej platformie. Na przykład w InnoDB MySQL wszystkie indeksy w tabeli mają wstępnie przypisany klucz podstawowy, więc chcesz, aby PK był tak mały, jak to możliwe (ze względu na szybkość i rozmiar). Również z tym związane, InnoDB jest szybszy, gdy klucz podstawowy jest przechowywany w sekwencji, a łańcuch nie pomoże.
Inną rzeczą, którą należy wziąć pod uwagę, używając łańcucha jako klucza alternatywnego, jest to, że użycie skrótu rzeczywistego łańcucha, który chcesz, może być szybsze, pomijając takie rzeczy, jak wielkie i małe litery niektórych liter. (Właściwie wylądowałem tutaj, szukając referencji, która potwierdzi to, co właśnie powiedziałem; wciąż szukam ...)