Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zamiast ID - unikalny ciąg znaków, jakie przeciw/za?, Nazwa urlowa jako klucz podstawowy
Apocalyptiq
post
Post #1





Grupa: Zarejestrowani
Postów: 230
Pomógł: 3
Dołączył: 8.01.2008

Ostrzeżenie: (10%)
X----


Zaczynam prace nad stronką, na której userzy będą mogli dodawać wykonawców, ich utwory itp.

Każdy wykonawca będzie identyfikowany (w urlu) poprzez przefiltrowaną do urla jego nazwę - na przykład zamiast Red Hot Chilli Peppers będzie Red_hot_chilli_peppers - link do wykonawcy: /music/Red_hot_chilli_peppers. Skoro każdy muzyk będzie miał unikalną tą nazwę, czemu by nie zastosować ją jako klucz podstawowy, pomijając w ogóle kolumne z numerami ID? Czy może to jakoś źle wpłynąć na wydajność bazy, szybkość wyszukiwania w niej wykonawców? Bo i tak wyszukiwani będą właśnie bo tej nazwie.

Proszę o Wasze rady.

Hehe, mam już jeden przeciw - jeżeli ktoś chciałby zmienić nazwę wykonawcy, należałoby również zmienić tą "nazwę urlową", a jeżeli poprzez nią są relacje z innymi tabelami (np. piosenki), tam też trzebaby pozmieniać te urle... Więc dam tabele z kluczem podstawowym jako id i unikalnym jako name_url :-)
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Raz, zmiana byłaby uciążliwa, dwa - wyszukiwanie po indeksach numerycznych jest szybsze.
Go to the top of the page
+Quote Post
sowiq
post
Post #3





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(Apocalyptiq @ 24.06.2009, 13:25:48 ) *
Hehe, mam już jeden przeciw - jeżeli ktoś chciałby zmienić nazwę wykonawcy, należałoby również zmienić tą "nazwę urlową", a jeżeli poprzez nią są relacje z innymi tabelami (np. piosenki), tam też trzebaby pozmieniać te urle... Więc dam tabele z kluczem podstawowym jako id i unikalnym jako name_url :-)
Ale zawsze możesz jako klucza głównego używać ID numerycznego i w ten sposób robić powiązania pomiędzy tabelkami. A nazwa tekstowa używana w linku byłaby zapisana w innym polu z założonym indeksem.

Zresztą, chyba nie będzie wielkiej różnicy jeśli zamiast /music/Red_hot_chilli_peppers link będzie wyglądał: /music/1234/Red_hot_chilli_peppers

Ten post edytował sowiq 24.06.2009, 13:40:23
Go to the top of the page
+Quote Post
phpion
post
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(Apocalyptiq @ 24.06.2009, 13:25:48 ) *
Skoro każdy muzyk będzie miał unikalną tą nazwę, czemu by nie zastosować ją jako klucz podstawowy

Powody podane przez poprzedników + pytanie: "co w przypadku dwóch zespołów o takich samych nazwach?".
Go to the top of the page
+Quote Post
qrzysztof
post
Post #5





Grupa: Zarejestrowani
Postów: 220
Pomógł: 19
Dołączył: 25.04.2009

Ostrzeżenie: (0%)
-----


Tak jak piszą poprzednicy. Absolutnie zrób Id. Szczególnie w relacjach między tabelami by to raziło.

1 jest chyba lepsze niż Red_hot_chilli_peppers

a 2 niż Superfajna_folkowa_kapela_ze_starego_grodu_kraka_w_krainie_nad_wisłą_miodem_i_ml
kiem_płynącej

Jeszcze niech w kilku tabelach to występuje - to już będzie zupełna masakra w bazie.

Takie rozwiązanie jest oczywiście możliwe, ale zupełnie nieekonomiczne i bardzo mało wydajne. Dla mnie id wygrywa w stosunku 100% do 0%.

Ten post edytował qrzysztof 24.06.2009, 18:51:48
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.09.2025 - 14:58