Primary Key – Czyli słów kilka o id

Według modelu relacyjnego każdy wiersz w tabeli posiada swój jednoznaczny identyfikator. Tym identyfikatorem w warstwie użytkownika jest najczęściej kolumna, która posiada w nazwie id. Nazewnictwo kolumn oczywiście jest kwestią dowolną, ale dobrze trzymać się jakiś schematów. Jeśli by spojrzeć na tabele przyjaciele dobrze znaną z pozostałych wpisów na tym blogu, mamy tam kolumnę ID. Przeglądając różne gotowe systemy bazodanowe najczęściej spotkamy się z takim zapisem bądź zapisem poprzedzonym przedrostkiem. Przedrostek jest definiowany dla danej tabeli najczęściej jest pewnego rodzaju akronimem/skrótem. Jeśli mamy tabele przyjaciele i chcielibyśmy ją zapisać w konwencji z przedrostkiem kolumny by wyglądały np tak: przy_id,przy_plec,przy_wynagrodzenie. Stosowanie przedrostków na dłuższą metę jest bardzo korzystne. Wracając do tematu id. W naszej tabeli mamy kolumnę o takiej właśnie nazwie. Zapisujemy tam identyfikator każdego wiersza. ID mamy jedno dla każdego przyjaciela. Mimo iż możemy mieć wielu przyjaciół co nazywają się Jan Kowalski. Tak więc id jest unikalne. Takich numerów w naszym świecie obowiązuje całe mnóstwo. Numer gg,telefonu,pesel,nip itd.

Takie pole musi spełniać kilka właściwości.

Po pierwsze każdy wiersz musi mieć określoną wartość – czyli kolumna musi mieć właściwość not null,
po drugie każda wartość musi być unikalna czyli kolumna musi mieć właściwość unique.

Klucz główny może składać się z kilku kolumn. Wszystkie kolumny razem muszą tworzyć unikalny identyfikator. W praktyce jednak rzadko się stosuje takie rozwiązania. Należy pamiętać iż tworząc klucz dla wielu kolumn, klucz obcy musi posiadać taką samą ilość kolumn.

Nadanie klucza głównego praktycznie zawsze skojarzone jest z utworzeniem indeksu.

Indeks jest swojego rodzaju spisem treści dla danej tabeli. Pozwala on systemowi bazodanowemu na szybkie poruszanie się po tabeli i pobieranie tylko interesujących nas wierszy.

Patrząc z przykładu tabeli przyjaciele, zakładając że pol id jest właśnie PK (primary key)

select * from przyjaciele where id = 454

staje się zadaniem bajecznie prostym. Otwieramy spis treści i wchodzimy w miejsce gdzie jest przyjaciel o takim id.
W przypadku braku indeksu, musimy przeglądać tabelę rekord po rekordzie (full scan table). W najgorszym przypadku szukany przyjaciel może być ostatnim rekordem jaki znajdziemy.

Leave a Reply

Your email address will not be published. Required fields are marked *

three + 10 =