Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jak tworzyć w bazie hash'e jak YT ma np. watch?v=ncs0-7n_2kE, Unikalny hash generowany przez BD
nylon
post 4.01.2012, 18:10:35
Post #1





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 30.10.2005
Skąd: Wrocław

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


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.


Ten post edytował erix 4.01.2012, 19:00:32
Powód edycji: [erix]: na przyszłość :P
Go to the top of the page
+Quote Post
IceManSpy
post 4.01.2012, 18:58:32
Post #2





Grupa: Zarejestrowani
Postów: 1 006
Pomógł: 111
Dołączył: 23.07.2010
Skąd: Kraków

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


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.


--------------------
Go to the top of the page
+Quote Post
erix
post 4.01.2012, 19:02:35
Post #3





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




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.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
nylon
post 9.01.2012, 18:33:44
Post #4





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 30.10.2005
Skąd: Wrocław

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


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ć?
Go to the top of the page
+Quote Post
solificati
post 26.03.2012, 09:48:42
Post #5





Grupa: Zarejestrowani
Postów: 26
Pomógł: 10
Dołączył: 17.03.2012

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


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.
Go to the top of the page
+Quote Post
cojack
post 5.04.2012, 08:52:39
Post #6





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

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


Miałem ten sam pomysł co solificati, wg mnie jest b.dobry. Polecam, stosowałem go już.


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 16:23