![]() |
![]() |
![]()
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:
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:
czy ktoś ma jakąś lepszą koncepcję jak to zorganizować? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 113 Pomógł: 5 Dołączył: 12.09.2006 Skąd: Pruszków/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Przede wszystkim unikalbym zapisywania w bazie w kolumnach jakiegokolwiek tekstu. Domyslam sie, ze przesylany XML ma z gory okreslony format i dane, ktore sie w niego wklada. Zatem nie
ale:
I poszczegolne ID pozapisywac w oddzielnych tabelach i joinowac. Dlaczego? W madrych ksiazkach wyczytalem, ze nalezy jak najwiecej rzeczy w zapytaniu wykonywac w modelu relacyjnym, dlatego tez takie zapytanie przedstawione przez Ciebie jest zle, bo musisz przeszukac WSZYSTKIE WIERSZE TABELI. A czy nie lepiej zrobic tak:
Jesli umiejetnie zrobisz generowanie takiego zapytania to nie potrzeba robic nawet warunkow WHERE, gdyz wszystkie warunki zmiescisz w warunkach zlaczenia, zgodnym ze standardem SQL92. Choc przyznaje, ze to co pisze to teoria, jak to w praktyce wyjdzie to juz pokombinuj. -------------------- "Człowiek dążący do swego celu może być skuteczny tylko w przypadku, jeśli każdą minutę swego życia wykorzysta z maksymalną korzyścią dla osiągnięcia zaplanowanego celu. Jeśli stworzył dla siebie system kar i karze sam siebie za każdą zmarnowaną minutę. Człowiekowi w zupełności wystarczą 3-4 godziny snu, cały pozostały czas może być wykorzystany dla osiągnięcia upragnionego celu." -- Wiktor Suworow
Java devBlog KulturalnyChlebik |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 177 Pomógł: 0 Dołączył: 8.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
tylko problem w tym że w tym pliku nie ma ID_PARAMETRU i ID_JEDNOSTKI tylko same wartości a produktów jest ponad 10000 i tych parametrów jest ponad 1100. dostaję gotowy plik i nikt mi nie powie czy doszły jakieś nowe parametry czy jednostki. poza tym nie mogę użyć pola typu varchar dla wartości cech bo często są tam opisy o długości większej niż na to pozwala ten typ pola. na chwilę obecną wymyśliłem coś takiego:
Kod id |id_produktu |kategoria |nazwa_cechy |wartosc_krotka |wartosc_dluga |jm | jeśli wartość danej cechy ma poniżej 15 znaków to wrzucam ją do wartosc_krotka (varchar) a jeśli jest dłuższa to do wartosc_dluga (text) na id_produktu, kategoria, nazwa_cechy, wartosc_krotka założę indeksy i już nie będę przeszukiwał całej tabeli tylko jak napisać zapytanie o monitory 17 cali z kontrastem 2000 i czasem reakcji matrycy 5? Ten post edytował Arek00 26.05.2008, 11:18:51 |
|
|
![]()
Post
#4
|
|
![]() 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. -------------------- Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 03:42 |