Klucz główny w tabeli bazy danych

Kategoria: |
Przyjęło się, że tabele w relacyjnych bazach danych powinny mieć klucz główny (podstawowy), oznaczany symbolem PK. Co prawda nie jest on wymagany, aczkolwiek jego brak generować będzie wiele problemów w przyszłości, w tym problemów wydajnościowych.

Klucz główny zapewnia unikalność danych dla kolumny a to oznacza, że nie można dodać więcej niż jednego rekordu z tym samym kluczem. Dodatkowo, za pomocą instrukcji "INSERT... ON DUPLICATE KEY/ON CONFLICT... UPDATE" można wymusić aktualizację wybranych kolumn wiersza jeśli klucz już istnieje. Zwalnia to z konieczności stosowania polecenia SELECT celem sprawdzenia czy PK jest wolny.

Klucz główny w tabeli bazy danych

Dobrą praktyką, mającą wpływ na wydajność aplikacji bazodanowej, jest stosowanie atrybutów AUTO_INCREMENT (MySQL) / IDENTITY (PostgreSQL, SQLServer) w kluczach podstawowych. AUTO_INCREMENT/IDENTITY to inaczej autonumerowanie. PK każdego nowego rekordu otrzymuje nowy unikalny numer. Należy pamiętać, że autonumerowanie zastosować można dla tylko jednej kolumny tabeli i musi być to kolumna typu INTEGER.

Jak ustawić klucz podstawowy w SqlDBD?


Klucz podstawowy możesz dodać na dwa sposoby:

1. zaznacz pole tabeli typu INTEGER i we właściwościach pola włącz AUTO_INCREMENT/IDENTITY - czynność ta, oprócz włączenia automnumeracji, utworzy klucz podstawowy dla kolumny (o ile jeszcze nie istnieje).

Klucz główny przez AUTO_INCREMENT/IDENTITY

2. zaznacz tabelę i w oknie właściwości po prawej w sekcji "Indeksy i klucze" kliknij "Dodaj indeks" - zostanie dodany indeks, którego typ należy zmienić z INDEX na PRIMARY. Następnie w sekcji "Kolumny" (właściwości indeksu) należy kliknąć "Edytuj", wybrać kolumnę (lub kolumny) i zatwierdzić klikając ikonę obok.

Klucz główny przez definicję indeksu , cz.1

Klucz główny przez definicję indeksu, cz.2

Sposób drugi, choć wymaga nieco więcej czasu, umożliwia precyzyjne ustawienie kolumn klucza głównego. Aczkolwiek w większości przypadków sposób pierwszy jest wystarczający.

Tabele bez klucza głównego


Jak wcześniej zostało wspomniane, choć klucze główne nie są wymagane, warto je stosować. Dlatego SqlDBD wyświetla ostrzeżenia jeśli wykryje tabelę bez zdefiniowanych kluczy głównych. Więcej informacji na temat walidacji modelu można znaleźć tutaj.


Strona używa cookies - tzw. ciasteczek. Dowiedz się więcej o celu ich używania i zmianach ustawień cookies.
Korzystając z serwisu wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.