ciembor
3.05.2010, 19:24:34
Tworzę bazę danych, w których mam tabelę z użytkownikami serwisu i tabelę ze stworzonymi przez nich projektami. Przypomniałem sobie, że kiedy ostatnio robiłem projekt na PHP, ćwiczeniowiec zwrócił mi uwagę na to, że ustaliłem jako klucz główny 'login', zamiast dodać każdemu użytkownikowi autoinkrementowanego 'id'. Ktoś może mi powiedzieć w czym takie rozwiązanie jest lepsze? Na dzień dzisiejszy wersja z loginem w roli klucza głównego tabeli 'users' wydaje mi się bardzo racjonalna, w końcu każdy login jest unikalny.
Mefiuu
3.05.2010, 19:26:45
rzeczywiście login jest unikalny, bo można sprawdzić przed dodaniem go do bazy czy już takiego nie ma. Ale za to numer id też najczęściej jest unikalny, bo przypisywany automatycznie i jest to kolejny numer. Ja myślę, że nie jest to kwestia lepsze-gorsze.
wookieb
3.05.2010, 19:27:10
Klucze główne powinny być numerami ze względu na szybkość ich przeszukiwanie, poza tym łatwiej innym tabelom przekazać id użytkownika niż jego login (który przecież może się zmienić).
jacusek
3.05.2010, 19:31:27
Ja też bym się skłaniał do id. Szybkość działania takiego indeksu będzie znacznie większa.
ciembor
3.05.2010, 20:55:32
A czy warto takie 'id' dodawać również w tabelach, których klucze nie są kluczami obcymi innych tabel?
//edit
Ok, zerknąłem na to i już nie mam więcej pytań

.
http://codex.wordpress.org/images/8/83/WP_27_dbsERD.png
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.