Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak tworzyć w bazie hash'e jak YT ma np. watch?v=ncs0-7n_2kE
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
nylon
Cześć,

Czy wiecie może jak po stronie bazy (najlepiej w momencie dodawania INSERT'a) zrobić generowanie unikalnych hashów (które od razu będą unikalne dla danej kolumny oczywiście) coś w stylu jak ma YouTube, czyli np. watch?v=ncs0-7n_2kE

Oczywiście nie szukam rozwiązań typu, że w PHP generuje sobie losowo znaki i wstawiam do BD i sprawdzam, czy jest unikalne.

Z góry dzięki za pomoc.
IceManSpy
Ale czcionka biggrin.gif Musiałem odsunąć się od monitora.

Jak chcesz, aby DB robiło unikalne hashe to:
1. Dla dalej kolumny nadaj index UNIQUE.
2. Stwórz procedurę generującą losowe znaki
3. Napisz triggera, który przy dodawania rekordu wywoła wcześniejszą procedurę wstawiając dane do kolumny.

Łatwiej to zrobisz w PHP + pkt 1 z powyższej listy.
erix
Ktoś na forum już poruszał ten temat, ale nie pamiętam, jak go szukać.

W każdym razie, filozofia identyfikatorów na YT opiera się na chyba 48-znakowym systemie liczbowym. Co to jest system liczbowy, to już sobie znajdziesz.
nylon
Cytat(IceManSpy @ 4.01.2012, 18:58:32 ) *
Ale czcionka biggrin.gif Musiałem odsunąć się od monitora.

Jak chcesz, aby DB robiło unikalne hashe to:
1. Dla dalej kolumny nadaj index UNIQUE.
2. Stwórz procedurę generującą losowe znaki
3. Napisz triggera, który przy dodawania rekordu wywoła wcześniejszą procedurę wstawiając dane do kolumny.

Łatwiej to zrobisz w PHP + pkt 1 z powyższej listy.


Pomysł z trigger'em jest fajny, ale jak wygenerować od razu jakiś ciąg znaków, żeby spełniał tego unika?
Co w momencie kiedy trigger wygeneruje ciąg znaków, który już w bazie jest (naruszy unikalność).
Zakładam, że kwerenda nie przejdzie. Jak w takim razie zadbać w triggerze o unikalność? Jak ją sprawdzić?
solificati
Sekwencją wypełniasz kolumnę - mechanizm dba o unikalność sam. Najlepiej gdy jest to id.
Podczas wyświetlania zmieniasz system dziesiętny na system o bazie 36, czy ile chcesz.

Gdy chcesz wyszukać - po prostu w aplikacji zmieniasz z systemu o bazie 36 na klasyczny system dziesiętny.
cojack
Miałem ten sam pomysł co solificati, wg mnie jest b.dobry. Polecam, stosowałem go już.
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.