Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Duża ilość cech danej kolumny, pseudo serializacja
rafalp
post
Post #1





Grupa: Zarejestrowani
Postów: 224
Pomógł: 18
Dołączył: 4.02.2003
Skąd: Częstochowa

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


Co sądzicie o takim rozwiązaniu problemu zapisu dużej ilość wariantów w kolumnie:

BAZA np. produkty
id
nazwa
cechy > VARCHAR(255)


cechy są zapisywane z duzej ilości pól checkbox czyli np. kolor, kształt, inne warianty (każdy wariant posiada swoje ID liczbowe i nie wykluczają się wzajemnie)
ale zamiast serializacji tych wartosci w bazie, zapisywać to tak:

taki zapis w bazie cechy >> np. "|1|23|43|25|22|7|"

po to aby mozna było wyszukiwać po tych cechach zastosować takie zapytanie

  1. SELECT * produkty WHERE cechy LIKE "%|10|%" AND cechy LIKE "%|12|%" AND cechy LIKE "%|25|%"
itd

Macie inne pomysły jak takie coś fajnie rozwiązać czy raczej tylko to trzeba zrobić z osobną tabelą produkty_cechy?
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Osobna tabela. Przedstawione przez ciebie zapytanie jest bardo nieoptymalne.
Go to the top of the page
+Quote Post
bpskiba
post
Post #3





Grupa: Zarejestrowani
Postów: 340
Pomógł: 49
Dołączył: 3.07.2009
Skąd: Rzeszów

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


tabela produkt(id_produkt, nazwa,.....)
tabela cechy(id_cechy, nazwa)
tabela cechyProduktu(id_cechyProduktu, id_produkt, id_cechy, wartosc)
Go to the top of the page
+Quote Post
rafalp
post
Post #4





Grupa: Zarejestrowani
Postów: 224
Pomógł: 18
Dołączył: 4.02.2003
Skąd: Częstochowa

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


No tak ale szukałem jakiś alternatyw..
chociażby jakiegoś matematycznego sposobu wyliczenia globalnej wartości z checkboxów (coś jak hash) tyle wynik moze zawierać jeszcze wartości które nie zostały dodane a mogą się znaleźć ale nie muszą.
Go to the top of the page
+Quote Post
wiiir
post
Post #5





Grupa: Zarejestrowani
Postów: 260
Pomógł: 34
Dołączył: 22.02.2010

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


Cytat(rafalp @ 2.02.2013, 16:37:36 ) *
No tak ale szukałem jakiś alternatyw..


To zapisuj tego stringa w pliku, a jak chcesz na bazie to korzystaj z jej relacyjności (IMG:style_emoticons/default/smile.gif)
Po co sobie robić pod górkę
Tym bardziej ze ciezko korzystać z indexów po like-u jak masz takie wartosci


Go to the top of the page
+Quote Post
bpskiba
post
Post #6





Grupa: Zarejestrowani
Postów: 340
Pomógł: 49
Dołączył: 3.07.2009
Skąd: Rzeszów

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


Z bazodanowego punktu widzienia to nie jest właściwe, ale skoro już kombinujesz to:
checkboxy mają dwa stany więc operatory binarne...
np ciąg 11010 może znaczyć (od końca) "
pierwszy nie zaznaczony
drugi zaznaczony
trzeci nie zaznaczony
czwarty zaznaczony
piąty zaznaczony

Mysql posiada binarne typy danych

Jakiś pomysł to jest, ale ja się pod nim nie podpisuję
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: 24.08.2025 - 15:09