W szkole nauczyłem się tylko SQL, który zapisuje dane w tabelach. Obecnie pracuję nad projektem, w którym dane są przechowywane w plikach XML. Dodatkowo każdy plik XML zawiera odniesienie do plików wizualnych (JPEG).
Sam plik XML zawiera ponad tysiąc punktów współrzędnych oraz dodatkowe informacje na temat danych.
Moim zdaniem przechowywanie tych informacji w tabelach nie ma sensu. Poza tym nie mogłem też przechowywać plików JPEG z SQL.
Jakie byłoby odpowiednie rozwiązanie, czy po mojej stronie występuje błąd w rozumowaniu?
Jak widać, jestem całkiem nowy w bazach danych. Wszelkie konstruktywne sugestie, linki i porady są mile widziane.
database-design
xml
チ ー ズ パ ン
źródło
źródło
Odpowiedzi:
Wszystko czego potrzebujesz to trwałość swojego XML. Użyj rozwiązania NoSQL lub systemu plików.
Korzystanie z RDBMS nie przynosi żadnych korzyści, chyba że chcesz go używać zamiast NoSQL lub systemu plików.
źródło
Dzisiaj dodałem do zakładek wpis na blogu Phila Factora „ Normalizacja” i „Anima notitia copia”, ponieważ starannie podsumowuje argumenty za i przeciw normalizacji niektórych rodzajów danych. Uruchom następujące zapytanie w instancji SQL i sprawdź, czy się zgadzasz.
Wspomniałeś, że plik XML zawiera „dodatkowe informacje o danych”. Czy jest jakaś korzyść z modelowania tych metadanych w relacyjnej bazie danych, być może do celów zapytania? Jeśli tak, może zaistnieć potrzeba wyodrębnienia odpowiednich danych i zachowania pozostałego XML jako typu dokumentu XML.
Argument Phila Factora jest taki, że nierelacyjne pola w relacyjnej bazie danych są całkowicie akceptowalne, jeśli pole jest traktowane jako atomowe, tzn. Nie zmienia się lub gdy zmienia się całe pole, a nie jego część składowa. Naturalnym rozszerzeniem tego jest to, że jeśli dokument zawiera elementy, którymi jesteś zainteresowany, zastosowanie modelu relacyjnego do tych elementów może mieć wartość.
Ostatni cytat z Phila, odnoszący się do pytania, ale przede wszystkim do frazeologii:
Czyż nie wszyscy?
źródło
Jeśli chodzi o bazy danych Oracle, odpowiedź brzmi: nie możesz . Wszystkie dane w bazie danych są przechowywane w tabelach, nawet metadane. Dane mogą być przechowywane w kolejkach, ale to tylko inny sposób korzystania z tabel. Pliki XML można przechowywać poza bazą danych, ale nie spełniałoby to wymagań „w bazie danych”.
Wychodząc poza zadane pytanie, pliki JPEG lub dowolne pliki w tym zakresie mogą być przechowywane w bazie danych. Wymagałyby tabeli i kolumny LOB (BLOB lub CLOB). XML można również przechowywać w ten sposób, ale import danych XML do bazy danych pozwoliłby na operowanie danymi w sposób, którego nie można teraz łatwo zrobić. Zapewniłoby to również inne korzyści z baz danych, w tym: zmniejszoną redundancję, dostępność, współbieżność, skalowalność, interoperacyjność, bezpieczeństwo, odzyskiwanie i wydajność.
Jeśli korzyści z bazy danych nie przyczyniają się do realizacji twoich celów, nie korzystaj z niej.
źródło
Wydaje mi się, że próbujesz wdrożyć przestrzenną bazę danych . Jest to rodzaj relacyjnej bazy danych (lub dodatku do istniejących produktów bazodanowych, np. Oracle Spatial, postGIS), który obsługuje funkcje typów danych przestrzennych i jest wykorzystywany do optymalizacji przechowywania i zapytań o dane dotyczące cech przestrzennych, takich jak granice wielokątów, punkty i warstwy. Kod XML, który masz, brzmi jak pary współrzędnych granicy, a powiązane obrazy brzmią jak zasoby grafiki do wyświetlenia na tej granicy. Jeśli dane pasują, zastanów się nad relacyjną przestrzenną bazą danych, która oferuje wbudowane modelowanie przestrzenne w celu zapewnienia funkcjonalności, której wdrożenie byłoby trudne lub czasochłonne.
źródło