• Zielgruppen
  • Suche
 

Datenbankentwurf für Postgresql

Am Anfang einer Datenbank-Nutzung steht ihr Entwurf. Häufig fing die erste Datensammlung in einer Tabellenkalkulation an, die Größe der Daten oder die Auswertemöglichkeiten führen diesen Ansatz aber schnell an seine Grenzen. Es ist wichtig, rechtzeitig ein vernünftiges Design der Datenstruktur zu wählen. Besonderen Wert sollte man auf folgende Punkte legen:

  • nicht alles in eine Tabelle pressen wollen, nur weil man es von Excel kennt
  • lieber mehrere Tabellen, vermeiden Sie Aufzählungen in einem Text-Feld (s.u.)
  • Grundsatz: ein Datum / Datenwert = eine Spalte in einer Tabelle
  • wählen Sie richtige Spalten-Typen (nicht alles ist Text, es gibt auch Datum, Zeit, Zahl, ...)
  • verwenden Sie in jeder Tabelle Primärschlüssel (selbst wenn Sie es als unnötig sehen, ohne funktionieren viele Tools wie z.B. Access oder pgadmin nicht)
  • Querverweise von einer Tabelle zu einer anderen sollten als "foreign key constraint" angelegt werden, um Inkonsistenzen zu vermeiden

Sie können eine Datenbankstruktur unter Postgres mit SQL-Statements, grafisch aber eher zu Fuß in pgadmin oder komfortabler mit pgmodeler anlegen.

Beispiel: 1:n-Zuordnung in einer relationalen Datenbank

In einer Adressverwaltung werden einer Person (hier vereinfacht: natürliche) Adressen zugeordnet. Der einfache Ansatz geht erstmal von einem Wohnort aus, was natürlich schnell als unzureichend erkannt wird. Gut, dann werden halt mehrer Adressen für die verschiedenen Typen vorgesehen. Das geht alles in einer Tabelle:

 

PersonWohnanschriftHeimatanschriftDienstadresse
Name
Vorname
Straße
Ort
Straße
Ort
Straße
Ort

Dieser Ansatz kann in ganz einfachen Anwendungsfällen ausreichend sein, aber er führt schnell zu Problemen. Bei zu "engen" Datenbanken werden häufig Felder missbraucht (z.B. Eintragung einer Adresse im Straßen-Feld und einer weiteren im Orts-Feld), oder es werden Personen einfach doppelt angelegt, damit mehr Adressen untergebracht werden können. Dann wird die Auswertung natürlich schwierig. Aber auch bei korrekter Datenbefüllung: die Auswertung über alle Adressen hinweg (alle Personen, die mit mindestens einem Bein in Hannover sind) ist aufwendig.

Besser ist gleich die flexible Umsetzung, bei der einer Person beliebig viele Adressen zugeordnet werden können. Dabei benötigt man eine Tabelle für die Personen mit einem Primärschlüssel und eine Tabelle für die Adressen, in der neben Straße und Ort eigentlich noch die Adressart (privat, dienstlich, ...) aber vor allem der Rückverweis auf die dort erreichbare Person nötig ist:

DB-Struktur des Beispiels mit Tabellen Adressen und Personen sowie Schlüsselbeziehung

PgModeler

PgModeler ist eine grafische Software zum Entwurf der Tabellenstruktur einer Datenbank. Eine ausführliche Dokumentation finden Sie im PgModeler Wiki.

Die Software ist zwar eigentlich Open-Source, ausführbare Programmpakete sind aber nur kostenpflichtig von der PgModeler-Webseite erhältlich. Die Programmpakete sind günstig sowie für Windows, Linux und MacOSX erhältlich. Für Windows hat das Rechenzentrum aus den Quellen ein ausführbares Programm übersetzt und stellt das Installationspaket innerhalb des Universitätsnetzes zu Verfügung.

Installation und Konfiguration

Die Konfiguration von PgModeler ist schwierig. Allerdings ist das Verhalten von PgModeler beim Konfigurieren leider wenig intuitiv und schwer zu erklären. Es empfiehlt sich daher Konfigurationen direkt in der PgModeler Konfigurationsdatei vorzunehmen. Die Konfigurationsdatei findet sich unter:

%APPDATA%\Local\VirtualStore\Program Files\pgmodeler\conf\connections.conf

Durch hinzufügen eines XML Blocks kann dort, im Vergleich zur graphischen Konfiguration, sehr einfach eine Server Verbindung angelegt werden:

 

<connections>
<connection alias="luh_demo_ro"
host="psql.rrzn.uni-hannover.de"
port="5432"
dbname="luh_demo_ro"
user="luh_demo_ro"
password="passwort"
connect_timeout="6"
sslmode="verify-full"
sslrootcert="%APPDATA%\Local\VirtualStore\Program Files\pgmodeler\conf\root.crt"/>
</connections>

 

Auch hier wird die Zertifikatskette der UH-CA verwendet um die Verbindung zum Server mit SSL zu sichern, und das Serverzertifikat entsprechend zu überprüfen. Für die notwendige Konfiguration zur Überprüfung des Server Zertifikats benötigen Sie die Zertifikatskette der UH-CA, nach dem Download der Datei chain.txt benennt man diese in root.crt um und hinterlegt diese unter Windows in dem Verzeichnis %APPDATA%\Local\VirtualStore\Program Files\pgmodeler\conf\ und unter Linux in seinem Homeverzeichnis. Der Pfad ist in der Datei unter "sslrootcrt" anzugeben.

pgAdminIII und Datenbankstruktur

Ansicht der angelegten Beispiel-Datenbank in pgAdmin

Auch mit pgAdmin kann man die Datenbankstruktur anlegen. Als GUI-Tool fragt pgAdmin die benötigten Informationen über Fenster und Eingabefelder ab, bietet z.B. eine Auswahl aus möglichen Spalten-Typen an, aber letztlich ist es recht SQL-nah. Es ist also eine größere Kenntnis über Datenbanken nötig, aber dafür kann man auch mit SQL-Statements arbeiten bzw. die äquivalenten SQL-Statements sehen.

Nach dem Öffnen der Datenbank in pgAdmin und der Auswahl des Schemas (normalerweise "public") kann man über das Bearbeiten-Menü und den Eintrag "Neues Objekt" eine "Neue Tabelle" anlegen. Es werden in den Dialogen recht viele der möglichen Einstellungen abgefragt, es sind aber längst nicht alle anzugeben und häufig fragt pgAdmin bei fehlenden nötigen oder sinnvollen Angaben mit Hilfetexten nach.

Literatur / Links

Nicht jede große Tabelle ist automatisch eine "Datenbank". Eher besteht eine relationale Datenbank aus mehreren in Bezug stehenden Tabellen. Man muss nicht unbedingt eine Normalform erreichen oder Datenbankexperte sein, um von den Vorteilen einer relationalen Datenbank zu profitieren. Dennoch ist es hilfreich, Grundprinzipchen z.B. über die Umsetzung von 1:n-Beziehungen wie oben beschrieben oder auch zunächst ungewohnte Dinge wie Foreign-Key-Constraints und Indizes zu kennen und für sich zu nutzen. Einführungen ins Thema sind z.B.

  • LUIS Handbuch: SQL - Grundlagen und Datenbankdesign
  • LUIS Handbuch: Access 2013 DB - Grundlagen für Datenbank-Entwickler

Darüber hinaus bietet das Rechenzentrum in regelmäßigen Abständen Kurse an, z.B. zu Microsoft-Access.