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.
SELECT * FROM sys.syslanguages
SQL umożliwia tworzenie relacyjnych baz danych. Jednak nawet jeśli brzydko pachnie, nie jest przestępstwem robić potwornie nierelacyjnych rzeczy z bazą danych SQL, o ile jest to konieczne i można odróżnić; nie tylko to, ale także tylko wtedy, gdy zdajesz sobie sprawę z ryzyka i konsekwencji.
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.
... jeśli otrzymałeś ciąg JSON lub XML i musisz przechowywać go w bazie danych, wystarczy zadać sobie pytanie, w roli Anima notitia copia (dusza bazy danych) „czy ja mam zainteresowanie treścią tego elementu informacji? ”. Jeśli odpowiedź brzmi „nie!” Lub „nequequam! Zatem jest to wartość atomowa, jakkolwiek złożona może być.
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:
Oczywiście, nigdy świadomie nie stworzyłem bazy danych, na którą Codd by się skrzywił, ale na brzegach znajdują się interfejsy i kanały danych, które napisałem, które spowodowały syczące pasje wśród fundamentalistów Normalizacyjnych.
Czyż nie wszyscy?