Klassenhierachie zur Struktorierung einer Datenbank

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
TobiM
User
Beiträge: 15
Registriert: Mittwoch 10. März 2021, 09:06

Hallo Zusammen,

ich hätte eine Frage zur Strukturierung von Daten.

Ich habe eine inhomogene Datengrundlage entsprechend folgenden Beispiels:

Individuum - Rasse - Art - Gattung - Lebensraum - usw..
Bello - Labrador - Hund - Säugetier - Landlebewesen - Wirbeltier - Tier
Mia - Langhaarkatze - Katze - Säugetier - Landlebewesen - Wirbeltier - Tier
Blubbi - Forelle - Fisch - kein Säugetier - Wasserlebewesen -Wirbeltier - Tier
usw.

Jede Ebene hat verschiedene mögliche Inhalte mit jeweils eigenen Attributen und Funktionen. Die Frage ist nun wie kann ich diese Grundmenge an Daten sinnvoll strukturieren ?

Mein Ansatz wäre nun ein Klassenmodell aufzubauen, dass durch Vererbung die Hierarchie repräsentiert. Gibt es noch andere sinnvolle Möglichkeiten zur Strukturierung ?

Wie kann man die Daten in der Datenbank als Instanz einer Klasse nutzen bzw. abspeichern ?

Wie große Datenmengen lassen sich mit dieser Methode strukturieren ?

Liebe Grüße

TobiM
Benutzeravatar
__blackjack__
User
Beiträge: 13003
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@TobiM: Wenn Du Datenbank schreibst, meinst Du dann eine relationale Datenbank? Und existiert die schon, oder entwirfst Du die auch gerade?

Falls relationale Datenbank, schau Dir mal SQLAlchemy und dessen ORM an.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
TobiM
User
Beiträge: 15
Registriert: Mittwoch 10. März 2021, 09:06

@ __blackjack__: Vielen Dank für deine Antwort.

Bis jetzt sind die Daten in einer xlsx-Datei gespeichert. Da dies aber keine geeignete Art der Datenspeicherung ist, möchte ich eine Datenbank dazu aufbauen.

Da ich wenig bis keine Erfahrung in Datenbanken und Python habe (komme von Java/Matlab) suche ich vor allem Konzepte, Einschätzungen zum Thema bzw. Techniken zum Umsetzung. Ich denke ORMs bringen mich da ein gutes Stück weiter.

Zu Datenbanken habe ich SQLite und MySQL gefunden. Da MySQL eine dahinterliegende Serverarchitektur benötigt und SQLite so läuft denke ich, dass SQLite in dieser Anwendung vorteilhafter ist ?!

Wie hängt SQLAlchemy damit zusammen ?

In welcher Form muss die Datenbank vorliegen damit ich damit arbeiten kann ??

Liebe Grüße
TobiM
Benutzeravatar
__blackjack__
User
Beiträge: 13003
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@TobiM: SQLAlchemy ist a) eine Abstraktionsschicht für verschiedene relationale Datenbanken und b) bringt auch ein ORM, also ein Rahmenwerk um Objekte in Python und Relationen in der Datenbank aufeinander abzubilden, so dass man am Ende deutlich weniger Code schreiben muss um Datenbank-Inhalte in Objekte und Objekte in die Datenbank zu bekommen. Was es einem allerdings nicht abnimmt beide Domänen, also Klassen/Objekte und relationale Datenbanken zu verstehen. Klassen/Objekte kennst Du ja von Java. Relationale Datenbanken sind eventuell Neuland für Dich‽

Neben SQLite und MySQL sind noch die MySQL-Abspaltung MariaDB und PostgreSQL zwei beliebte, verbreitete DBMS.

Ob SQLite für Deine Anwendung vorteilhafter ist als ein DBMS mit Server kommt ziemlich darauf an wie die Datenbank genutzt wird.

Bei relationalen Datenbanken ist neben den Grundlagen was man mit SQL machen kann, das Thema Normalisierung/Normalform(en) etwas das man sich mal angetan haben sollte.

Für den Datenbankentwurf ist in der Regel neben dem Wissen welche Daten gespeichert werden, und wie die zusammenhängen, noch wichtig wie die Abfragen/Zugriffsmusster aussehen.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Antworten