Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zamiast ID - unikalny ciąg znaków, jakie przeciw/za?
Forum PHP.pl > Forum > Bazy danych > MySQL
Apocalyptiq
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 :-)
erix
Raz, zmiana byłaby uciążliwa, dwa - wyszukiwanie po indeksach numerycznych jest szybsze.
sowiq
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
phpion
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?".
qrzysztof
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%.
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-2024 Invision Power Services, Inc.