Przechowywanie w bazie danych informacji z pliku xml.

0

Mam plik xml zawierający informacje na temat produktów z hurtowni. Mniej więcej wygląda to tak


 <produkt id="DZUTOSH250080" nazwa="TOSHIBA HDD STORE E.CANVIO ALU 2,5&quot; 1TB BLUE" producent="TOS" grupa="DZU-H25" gwarancja="F024M" cena_netto="225.06" vat="23" magazyn_zewnetrzny="N" dostepny="10" data="2015-03-03" na_zamowienie="N" oferta_specjalna="N" mala_paleta="N" large="N" raportowany="T">
      <zdjecia>
        <zdjecie plik="/Pictures/DZU/H25/DZUTOSH250080/1.jpg" domyslne="1" data="2015-03-12" />
        <zdjecie plik="/Pictures/DZU/H25/DZUTOSH250080/2.jpg" domyslne="0" data="2015-03-12" />
      </zdjecia>
      <technika>
        <parametr nazwa="Kod Producenta" opis="HDTH310EL3AA" jm="" typ="varchar" />
        <parametr nazwa="Typ" opis="Zewnętrzny" jm="" typ="varchar" />
        <parametr nazwa="Format" opis="2,5" jm="cale" typ="varchar" />
        <parametr nazwa="Interfejs" opis="USB 3.0" jm="" typ="varchar" />
        <parametr nazwa="Pojemność" opis="1000" jm="GB" typ="int" />
        <parametr nazwa="NCQ" opis="False" jm="" typ="bit" />
        <parametr nazwa="Obroty na min." opis="Nie dotyczy" jm="obr/min" typ="varchar" />
        <parametr nazwa="Waga" opis="180" jm="g" typ="float" />
        <parametr nazwa="Złącze" opis="USB" jm="" typ="varchar" />
        <parametr nazwa="Zasilanie" opis="USB" jm="" typ="varchar" />
        <parametr nazwa="www" opis="http://www.toshiba.pl/hard-drives/portable/canvio-alu/hdth305er3aa/" jm="www" typ="varchar" />
        <parametr nazwa="Orientacyjna waga brutto" opis="302" jm="g" typ="int" />
        <parametr nazwa="Orientacyjna waga brutto opak. zbior." opis="1405" jm="g" typ="int" />
        <parametr nazwa="Ilość w opakowaniu zbiorczym - orientacyjnie" opis="4" jm="szt." typ="int" />
      </technika>
    </produkt>
 

Informacje z pliku trzeba jakoś sensownie umieścić w bazie danych. Zdjęcia są nieistotne. Jedyne co mnie zastanawia to te paraemtry wewnątrz

<technika> </technika>
 

W całym pokaźnym pliku jest mnóstwo różnych nazw tych parametrów, ich ilość też jest różna. Jak wspomniałem trzeba to umieścić w bazie danych. Czy dobrym pomysłem byłoby wrzucenie tych informacji do dwuwymiarowej tablicy, użycie funkcji serialize i wtedy wstawienie do bazy danych..?

1

W całym pokaźnym pliku jest mnóstwo różnych nazw tych parametrów, ich ilość też jest różna. Jak wspomniałem trzeba to umieścić w bazie danych. Czy dobrym pomysłem byłoby wrzucenie tych informacji do dwuwymiarowej tablicy, użycie funkcji serialize i wtedy wstawienie do bazy danych..?

Moim zdaniem lepiej utworzyć tabele na elementy <parametr> , gdzie atrybuty mapujesz na kolumny: nazwa, opis, jm, typ itd., w relacji z <technika> typu 1:n.

0

Mógłbyś bardziej wyjaśnić co masz na myśli pisząc : "w relacji z <technika> typu 1:n." ?

0

Przez 1:n rozumiem relacje jeden do wielu. Jeśli element <technika> służy tylko do grupowania elementów <parametr> to może być to relacja bezpośrednio z produktami.

0

W MySQL masz coś takiego LOAD XML https://dev.mysql.com/doc/refman/5.5/en/load-xml.html

0

Jeżeli dobrze rozumiem masz na myśli takie rozwiązanie, które wymagałoby stworzenia tabelki o następujących kolumnach : IDProduktu, nazwa(parametru), opis, jm, ? Zastanawiam się też co z tym atrybutem typ. Czy można go pominąć? Chyba nie jest potrzebny w bazie danych..?

0

@Mostek87: Dokładnie o to chodzi. Ja osobiście bym zostawił "typ", niczemu nie wadzi a może się okazać że kiedyś będziesz musiał np. formatować wartość parametru (atrybut "opis " jak się domyślam) w zależności od niego.

0

Super, dziękuję za pomoc

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.