Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql] zaawansowana wyszukiwarka, struktura bazy
Arek00
post
Post #1





Grupa: Zarejestrowani
Postów: 177
Pomógł: 0
Dołączył: 8.11.2005

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


dostaję taki plik xml z opisami produktów:

  1. ...
  2.  
  3. <produkt id="MONASUL170006" nazwa="MONITOR ASUS 17" LCD VB172T" producent="ASU" grupa="MON-L17" gwarancja="F036M">
  4. <technika>
  5. <parametr nazwa="Kod Producenta" opis="VB172T" jm="" typ="varchar" />
  6. <parametr nazwa="Format obrazu" opis="5:4" jm="" typ="varchar" />
  7. <parametr nazwa="Przekątna ekranu" opis="17" jm="cale" typ="float" />
  8. <parametr nazwa="Rozmiar plamki" opis="0.264" jm="mm" typ="varchar" />
  9. <parametr nazwa="Nominalna rozdzielczość" opis="1280 x 1024" jm="" typ="varchar" />
  10. <parametr nazwa="Jasność" opis="300" jm="cd/m2" typ="int" />
  11. <parametr nazwa="Kontrast" opis="2000" jm=":1" typ="int" />
  12. <parametr nazwa="Czas reakcji matrycy" opis="5" jm="ms" typ="float" />
  13. <parametr nazwa="Kąt widzenia w pionie" opis="160" jm="Stopni" typ="varchar" />
  14. <parametr nazwa="Kąt widzenia w poziomie" opis="160" jm="Stopni" typ="varchar" />
  15. <parametr nazwa="Ilość wyświetlanych kolorów" opis="16,7" jm="mln" typ="float" />
  16. <parametr nazwa="Gniazdo D-Sub" opis="1" jm="szt." typ="int" />
  17. <parametr nazwa="Gniazdo DVI" opis="1" jm="szt." typ="int" />
  18. <parametr nazwa="Wejście audio" opis="1" jm="" typ="varchar" />
  19. <parametr nazwa="Czytnik kart" opis="brak" jm="" typ="varchar" />
  20. <parametr nazwa="Głośniki" opis="1Wx2stereo,RMS" jm="" typ="varchar" />
  21. <parametr nazwa="Wbudowany zasilacz" opis="True" jm="" typ="bit" />
  22. <parametr nazwa="Zgodność z normami" opis="Energy StarŽ,TCO03, UL/cUL, CB, CE, FCC, CCC, BSMI, Gost-R, C-Tick, VCCI, PSB, RoHS" jm="" typ="varchar" />
  23. <parametr nazwa="Kolor obudowy" opis="czarny" jm="" typ="varchar" />
  24. <parametr nazwa="Wyposażenie" opis="D-Sub cable, Power cord, Quick start guide, CD user guide, Warranty card" jm="" typ="varchar" />
  25. <parametr nazwa="Pobór mocy Wł./Wył." opis="40/2" jm="W" typ="varchar" />
  26. <parametr nazwa="www" opis="www.asus.pl" jm="www" typ="varchar" />
  27. </technika>
  28. </produkt>
  29.  
  30. ...


w jaki sposób zapisywać to do bazy danych aby móc stworzyć wyszukiwanie według cech czyli np. chciałbym wyszukać wszystkie 17 calowe monitory które posiadają jasność 300cd/m2.

wymyśliłem coś takiego:

Kod
id   |id_produktu   |kategoria|nazwa_cechy     |wartosc    |jm
-----------------------------------------------------------------
1    |MONASUL170006 |MON-L17  |Kod Producenta  |VB172T     |
2    |MONASUL170006 |MON-L17  |Format obrazu   |5:4        |
3    |MONASUL170006 |MON-L17  |Przekątna ekranu|17         |cale
4    |MONASUL170006 |MON-L17  |Rozmiar plamki  |0.264      |mm
5    |MONASUL170006 |MON-L17  |Jasność         |300        |cd/m2


i teraz mogę robić takie zapytanie:
  1. SELECT id_produktu WHERE kategoria='MON-L17' AND nazwa_cechy='Jasność' AND wartosc='300'



czy ktoś ma jakąś lepszą koncepcję jak to zorganizować?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sedziwoj
post
Post #2





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


Jeśli chcesz zrobić to dobrze, to nie możesz ot tak wrzucić do bazy, byś musiał trochę przeanalizować. Do tego jak mogą być różne jednostki, to nie wyszukasz po danym polu, no chyba że skonwertujesz.
Do tego każdy produkt powinien mieć jeden wpis w bazie, tzn. chodzi o nazwę itp. cechy które są dla niego unikalne.
Jeśli nie chcesz tego robić dobrze, to niech każda cecha będzie osobną kolumną. A jeżeli różne produkty mają różne cechy to rozdzielenie tych informacji na więcej tabel.
Go to the top of the page
+Quote Post

Posty w temacie


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: 17.10.2025 - 13:24