@Osiris1
"best practice" ist, wenn möglich immer nur eindeutige Daten in einer eindeutigen Struktur mit konsistentem Datentyp vorliegen zu haben und das dann schön in normalisierten Datenbankstrukturen. Wenn das nicht möglich ist, sollte man zumindest zusehen, dass man in nicht vorhersehbare Datensätze eine Grundstruktur aufgezwungen bekommt. Der Ende dieses Posts enthält eine Möglichkeit Daten eine Struktur zu verpassen, obwohl die Datenformate nicht präzise vorhergesagt werden können.
Mitunter schreibt man so einen riesen Block an Logik die Eingaben auswertet und passend strukturiert, macht das Leben aber bei der restlichen Entwicklung deutlich einfacher.
Real gibt es Programme, wo sich an der Stelle keine Mühe gegeben wurde und wenn man den Scheiß dann administrieren oder gar weiter entwickeln soll... Naja, hat man wenigstens Gruselgeschichten für den IT-Stammtisch und Konferenzen -.-
----------------------------------------------
Objekte als Binärblob in eine Tabelle schmeißen geht bei den meisten Datenbanksystemen. Damit geht nur Struktur verloren und die Durchsuchbarkeit der Daten wird übel. An einem gewissen Punkt kann man sich dann auch sparen überhaupt eine Datenbank einzusetzen, man kann dann genausogut einen riesen Blob direkt ins Filesystem absetzen.
Das Problem ist, alles was du nicht an Struktur von Anfang an festschreibst musst du später zu Laufzeit inkl. aller möglichen Fehler selbst behandeln. Das geht normalerweise einfach nur schief.
Du kannst natürlich anstatt eines Binärblobs die Daten auch als XML bzw. ähnlich strukturieren und beispielsweise als Text (Datentyp in Sqlite) bzw. äquivalenten Datentypen in anderen DBS verwenden. Damit lassen sich die Daten dann auch suchen (wenn auch vergleichsweise langsam). Auch hier kann es durchaus die bessere Idee sein die Daten als XML einfach direkt dem Dateisystem anzuvertrauen.
Je Strukturierter du die Daten ablegst, desto eher lohnt eine Datenbank. Wenn ein Großteil der Namen sowieso eine oder mehr Telefonnummer und/oder Anschrift, Emailadresse, Geburtsdatum zugeordnet bekommen, dann sieh dafür Tabellen vor und schmeiß nur alle untypischen Erweiterungen in eine Tabelle, die XML Ähnliche Einträge aufnimmt.
Beispiel:
Dabei identifiziert Name.name_ID als Primärschlüssel die Person eindeutig. Über name_ID sind die Werte in Tabelle Ergaenzung zugeordnet. bezeichner enthält dann was es sein soll und inhalt den eigentlichen Datensatz. Könnte also so aussehen:
Ergaenzung.name_ID=1
Ergaenzung.bezeichner="Blutgruppe"
Ergaenzung.inhalt="AB"