Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Elastyczne atrybuty - problem projektowy
FiDO
post 5.03.2006, 00:08:31
Post #1





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Problem ten jest bardzo podobny do problemu elastycznych cech do produktow w sklepach (tzn rozne kategorie lub nawet produkty majace zupelnie rozne zestawy cech), jednak jest pewna "subtelna" roznica.
Chodzi o to, ze prowadze sobie systemik do prowadzenia rankingow. Poki co jest tylko jeden rodzaj, wiec nie ma wiekszego problemu, ale w najblizszym czasie zamierzam to przerobic tak, zebym bez przeszkod mogl obsluzyc ich wiele. No ale do sedna.. kazdy z tych rankingow posiada pewne wspolne cechy, ale sa tez atrybuty specyficzne dla kazdego z nich.
Do tej pory jest mniej wiecej tak samo jak w przypadku cech produktow w sklepie..
Jednak u mnie problem polega na tym, ze podczas wyswietlania wynikow musze pobrac wspolne cechy kazdego wpisu oraz cechy specyficzne dla wyswietlanego rankingu za jednym zamachem (w przypadku sklepu cechy pobiera sie dopiero po "wejsciu" w konkretny produkt, a nie podczas samego ich listowania, co znacznie ulatwia sprawe). Wywolywanie osobnego zapytania dla kazdego wyniku, zeby pobrac te elastyczne atrybuty z oczywistych wzgledow odpada.
Malo tego musi istniec mozliwosc sortowania i filtrowania po tych specyficznych atrybutach, wiec raczej nie moge sobie ich trzymac w jakims jednym polu w postaci zserializowanej tablicy. Zeby jeszcze nie bylo za latwo to niekoniecznie kazdy z tych specyficznych atrybutow musi byc ciagiem znakow.. rownie dobrze moze to byc liczba (i tylko te 2 typy wchodza w gre), a w przypadku liczb sortowanie wyglada inaczej jesli pole jest typu liczbowego i inaczej jesli jest to string.

Narazie jedyne co wymyslilem to cos takiego, ze mam dodatkowe tabelki do tych atrybutow. Jedna z ich "definicją" (tj. nazwa, typ, jakis opis etc.), druga z wartosciami (id atrybutu z pierwszej tabeli, id wyniku i dwa pola z wartoscia - jedno liczbowe, drugie tekstowe) i trzecia to juz tylko tabela laczaca pierwsza tabele z tabela rankingow. Wybieranie wynikow odbywalo by sie poprzez zapytanie generowane przez php, co spodowaloby koniecznosc wykonania tylko dwoch zapytan. To do pobrania definicji atrybutow dla danego rankignu mozna dodatkowo cachowac, bo nie bedzie sie to zmieniac w trakcie.

Pytanie brzmi oczywiscie: czy ktos ma lepsza wizje rozwiazania tego problemu ?

Wczesniej nie mialem do czynienia z podobnymi przypadkami, wiec najlepsze co do tej pory udalo mi sie wymyslic to to co podalem wyzej. Za wszelkie uwagi do powyzszego oraz proby pomocy z gory dziekuje smile.gif


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tort
post 5.03.2006, 15:54:02
Post #2





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 15.09.2005
Skąd: Lublin

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


Gdybyś posługiwał się systemem bazodanowym, w który pole może byc tablicą (np. PostgreSQL coś takiego obsługuje), to nie miałbyś problemu, bo mógłbyś wtedy robić, co ci się żywnie podoba, włącznie z sortowaniem i filtrowaniem wg określonych warunków.


--------------------
tort
eX Blog
Go to the top of the page
+Quote Post

Posty w temacie


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: 20.06.2025 - 14:04