Rozdział 9. ♦ Podstawy MySQL 257
Pomiędzy tymi tabelami, a ściślej danymi w tych tabelach, występują wiążące je relacje. Jak wygląda pojedyncza tabela z danymi? Każdy, kto widział kiedykolwiek dowolny arkusz kalkulacyjny, może ją sobie z łatwością wyobrazić. Tabela składa się z wierszy i kolumn. Każdy wiersz opisuje jeden rekord, a kolumna — właściwości danego rekordu. Załóżmy na przykład, że chcielibyśmy przechować w bazie dane dotyczące osób. Interesuje nas zapamiętanie imion, nazwisk oraz dat urodzenia. Należałoby zatem utworzyć tabelę zawierającą trzy kolumny. W pierwszej kolumnie byłyby zapisywane dane dotyczące imion, w drugiej — nazwisk, a w trzeciej — dat urodzenia osób. Taką przykładową tabelę obrazuje rysunek 9.17. Zawiera ona trzy wiersze z danymi dotyczącymi trzech różnych osób.
Imię |
Nazwisko |
Data urodzenia |
Jan Andrzej Anna |
Kowalski Nowak Jabłońska |
1970- 01-01 1971- 02-02 1972- 03-03 |
Rysunek 9.17.
[ Przykładowa tabela zawierająca dane | dotyczące osób
Jeśli zastanowimy się nad strukturą tabeli przedstawionej na rysunku 9.17, zapewne dostrzeżemy, że ma ona poważną wadę. Otóż nie pozwala na jednoznaczną identyfikacje konkretnej osoby. Może się przecież zdarzyć, że w bazie trzeba będzie zapisać dane dwóch Janów Kowalskich urodzonych pierwszego stycznia 1970 roku. Użycie struktury z rysunku 9.17 spowodowałoby powstanie dwóch rekordów o takich samych danych, których nie można byłoby rozróżnić (sytuacja taka została przedstawiona na rysunku 9.18).
Imię |
Nazwisko |
Data urodzenia |
Jan |
Kowalski |
1970-01-01 |
Jan |
Kowalski |
1970-01-01 |
Andrzej |
Nowak |
1971-02-02 |
Anna |
Jabłońska |
1972-03-03 |
Rysunek 9.18.
I Nieprawidłowa struktura tabeli nie pozwala aa rozróżnienie m~*~których rekordów
Oczywiście w praktyce nie wolno do takiej sytuacji dopuścić, a zatem już podczas projektowania tabeli musimy stworzyć taką strukturę kolumn, aby każdy rekord mógł być jednoznacznie zidentyfikowany. W przypadku tabeli przechowującej dane osób moglibyśmy np. wprowadzić dodatkową kolumnę zawierającą PESEL danej osoby, który przynajmniej teoretycznie jest unikalny i niepowtarzalny. Najczęściej jednak do tabeli wprowadza się dodatkowe, abstrakcyjne (niemające odzwierciedlenie w rzeczywistych danych) pole identyfikujące każdy wiersz; mogłoby się ono nazywać np. Osobald. Tabela zawierająca takie pole została przedstawiona na rysunku 9.19. Jak widać, tym razem bez problemów możemy rozróżnić dwóch Janów Kowalskich, mimo że obaj urodzili się w tym samym dniu.
Taka kolumna, zawierająca wartość jednoznacznie identyfikującą każdy rekord, nazywana jest kluczem podstawowym (ang. primary key). Ogólnie rzecz biorąc kluczem możemy nazwać dowolnie wybrany zestaw kolumn, czyli np. Irai e. Nazwi sko to również klucz, niemniej klucz podstawowy powinien zawsze jednoznacznie identyfikować każdy