Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql]Używanie UserName kontra IDs
Forum PHP.pl > Forum > Przedszkole
konrados
Witam,

Dobrze, że moje ulubione forum wróciło smile.gif

Mam takie filozoficzne pytanie - dajmy na to system komentarzy do stron - użytkownicy mogą się rejestrować, logować i jako zalogowani wysyłać komentarze.

W jednym z moich skryptów, który już zrealizowałem, identyfikatorem był zawsze "UserName" (np. "Tomek") - tzn. w tabeli użytkowników też był unikalny id, ale skrypt posługiwał się głównie UserName - wyszukując komentarze danego usera, sprawdzając czy jest zalogowany etc robię WHERE username='jakis nick'.

Ale tak spojrzałem teraz na parę innych skryptów i widzę, że one posługują się (wewnętrznie) id's - czyli jeśli mają być na ekranie wydrukowane np. komentarze/posty usera "Tomek" to adres url wygląda np. tak: "pokaz_profil.php?user=tomek", po czym skrypt szuka "tomek" w tabeli userów by wydobyć ID (typ:int) , a następnie drukuje wszystkie komentarze zrobione przez ID tego usera.

U mnie to wygląda tak, że szukane są wszystkie komentarze gdzie username=tomek. Niby prostsze, więc czemu inni tak nie robią? Może to wolniejsze jest? Albo są jakieś inne przyczyny?

Podobnie teraz chcę dać możliwość dodawania załączników. Chcę to zrobić tak, że załączniki w tabeli "posts" to bedą po prostu nazwy plików odzielone np. średnikiem. A w tych skryptach widzę oddzielną tabelę "attachments" z id's i nazwami plików, i gdy user do swojego posta dodaje załącznik - wpierw skrypt dodaje go do tabeli "attachments" a w tabeli "posts" wrzuca tylko idenfyfikatory (int) tych załączników - a ja nie kumam po co tak komplikować?
ayeo
Indeksy liczbowe sa chyba szybsze niż stringi. Poza tym wyobraź sobie, że zmieniasz login z Tomek na Tomas biggrin.gif Jak masz na id to nie ma problemu...
konrados
Dzięki.
Możliwości zmieniania loginu z założenia nie przewiduję, więc to odpada - a wiesz może jak dużo szybsze jest używanie liczb?
ayeo
Możesz łatwo to przetestować. Wracając do tematu, to czego używasz zależy (w tym wypadku) od Ciebie. Warto jednak stosować w całym kodzie spójne rozwiązania. Mam na myśli, że jeżeli jakaś metoda zwarca jako wynik tablicę z id userów to możesz ten wynik bezpośrednio wykorzystać w metodzie pobierającej jego komentarze... Jeżeli w całym kodzie stosujesz login (co nie jest wydajne) to rób przez login.
konrados
OK, dzięki raz jeszcze. Przejdę na ID numeryczne.
jarek_bolo
Cytat
Podobnie teraz chcę dać możliwość dodawania załączników. Chcę to zrobić tak, że załączniki w tabeli "posts" to bedą po prostu nazwy plików odzielone np. średnikiem. A w tych skryptach widzę oddzielną tabelę "attachments" z id's i nazwami plików, i gdy user do swojego posta dodaje załącznik - wpierw skrypt dodaje go do tabeli "attachments" a w tabeli "posts" wrzuca tylko idenfyfikatory (int) tych załączników - a ja nie kumam po co tak komplikować?


Podstawy projektowania baz danych się kłaniają.
W przykładzie który podałeś i tak chyba jest źle, bo nie powinno się przechowywać id wszystkich załączników w tabeli posts i dalej rekordzie danego posta, a według mnie powinno się w tabeli attachments, dla każdego rekordu danego załącznika trzymać w nim id postu.
No chyba, że post może mieć tylko jeden załącznik.
Reasumując... relacje i jeszcze raz relacje się kłaniają. Sam czytam różne rzeczy na te tematy, bo dobrze zaprojektowana baza danych to połowa sukcesu w aplikacji PHP.
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.