Übungsdatenbank Angestellte & Projekte
Vorbereitung
Die Daten für diese Datenbank befinden sich im Stammverzeichnis des Projekt. Online sind die Daten in diesem Ordner und in dieser zip Datei zu finden.
Um die Daten zu laden, brauchen Sie das Kommandozeilentool
psql
.
Überblick
Die nachfolgende Abbildung zeigt die Relationen der Datenbank in UML.
Mithilfe dieser Datenbank können Mitarbeiter und Projekte einer Firma verwaltet werden. Dazu gehört auch die Zuteilung zu Projekten und die Verwaltung der Firmenhierarchie mittels Zuordnung eines Chef und die Gliederung anhand von Abteilungen.
Import der Datenbank und der Beispieldaten
Zur Erstellung der Datenbank und Import der Daten werden verschiedene Dateien benötigt. Nachfolgend eine Auflistung der Dateien:
AngProj/
|-- 0_runAllScripts.sql
|-- 0_runAllScriptsORA.sql
|-- 1_extensions.sql
|-- 2_schema.sql
|-- 3_copy.sql
|-- 3_inserts.sql
|-- 4_constraints.sql
|-- 5_queries.sql
|-- README.md
|-- run.bat
`-- WindowsConsoleSettings.reg
Der Datenimport wird durch die Datei
0_runAllScripts.sql gesteuert, welche mit dem
Programm
psql
interpretiert werden kann.
Folgende Schritte werden dabei durchlaufen:
-
Löschen der bestehenden Datenbank
angproj
und des zugeörigen Benutzeranguser
Es ist notwendig, dass keine aktiven Verbindungen zur Datenbank mehr bestehen, da sonst die Datenbank oder auch der Benutzer nicht gelöscht werden kann.
-
Erstellen des Benutzer
anguser
mit Passwortangproj
-
Erstellen der Datenbank
angproj
mitanguser
als Owner. -
Ausführen der Skripte in aufsteigender Reihenfolge. Bei grossen Importdaten empfiehlt sich die Verwendung des
COPY
anstelle desINSERT
- Befehls, da dieser von der Datenbank effizienter ausgeführt wird. -
Die Datei
5_queries.sql
beinhaltet Abfragen, welche den Inhalt der Datenbank in unterschiedlicher Form aufzeigen.
Datenimport PostgreSQL
-
Entpacken Sie das Archiv oder klonen Sie die Sourcen:
git clone https://gitlab.dev.ifs.hsr.ch/ifs/AngProj
-
Öffnen Sie eine Terminal/Konsole/Kommandozeile und wechseln Sie in das Verzeichnis mit den entpackten oder geklonten Dateien.
-
Stellen Sie sicher, dass Sie das Kommando
psql --version
ausführen können. Falls dies nicht funktioniert, vor allem unter Windows, können Sie entweder:- den Suchpfad ergänzen durch Angabe zum Verzeichnis worin sich
die Datei
psql.exe
(Windows) befindet mittelsPATH=%PATH%;C:\Program Files\PostgreSQL\9.6\bin
. Damit Sie dies nicht immer wieder anpassen müssen, empfiehlt sich die Erweiterung der PATH Umgebungsvariablen in den Systemeinstellungen von Windows. Suche nach Umgebungsvariablen resp. environment variables. - jeweils die absolute Pfadangabe zum Starten der PostgreSQL Tools
verwenden, bspw:
"C:\Program Files\PostgreSQL\9.6\bin\psql.exe" --version
- den Suchpfad ergänzen durch Angabe zum Verzeichnis worin sich
die Datei
-
Linux-/Ubuntu-Benutzer müssen je nach Installation des PostgreSQL Servers das Kommando mittels
sudo -u postgres
ausführen. -
Führen Sie nun das nachfolgende Kommando aus, um die Daten zu importieren (Queries müssen während der Importsequenz nicht ausgeführt werden):
psql -U postgres -f 0_runAllScripts.sql
-
Windows
Alternativ kann auch die Datei
run.bat
in der Konsole ausgeführt werden. Darin ist eine Anpassung der Konsolencodepage schon eingebaut. Sollten Fehler in der Darstellung von Zeichen auftreten (Umlaute etc.), kann man versuchen, dies mit der DateiWindowsConsoleSettings.reg
zu korrigieren. -
Linux / Mac OSX
Unter Linux wird in den meisten Fällen ein eigener Benutzer postgres für die Datenbankverwaltung angelegt. Daher muss in der Grundkonfiguration jeweils sudo verwendet werden, um Datenbankbefehle auszuführen.
sudo -u postgres psql -f 0_runAllScripts.sql
Alternativ kann man sich für den Linux-Login einen PostgreSQL-Superuser-Account einrichten, wonach die Verwendung von
sudo -u postgres
entfällt. Dies geschieht mit folgendem Kommando (LoginName durch den *nix-Account-Namen ersetzen):createuser -s -U postgres --interactive Enter name of role to add: LoginName
Hinweis:
Bei folgender Fehlermeldung
\connect: FATAL: Peer authentication failed for user "anguser"
gibt es zwei mögliche Lösungen:-
Die
psql
Kommandozeile ergänzen mit-h localhost
-
Die Datei
pg_hba.conf
muss dazu angepasst werden, weil das voreingestellte Authentifizierungsschema eine Verbindung über socket für andere Benutzer alspostgres
nicht zulässt. Die Datei befindet sich bei Debian/Ubuntu im Ordner/etc/postgresql/9.6/main/
, bei anderen Distributionen im Datenverzeichnis vonpostgres
, z.B./var/lib/postgres/data
.# peer durch trust ersetzen: # ALT: local all all peer # NEU: local all all trust
Oder mittels
sed
-Expression:# evtl. Pfad anpassen sudo sed -ie 's/^\(local *all *all *\)peer$/\1trust/g' \ /etc/postgresql/9.6/main/pg_hba.conf
Nach erfolgter Modifikation muss der Server neu gestartet werden:
# upstart Systeme sudo service postgresql restart # systemd Systeme sudo systemctl restart postgresql # init.d Systeme sudo /etc/init.d/postgresql restart
-
-
Sofern das vorangegangene Kommando fehlerfrei ausgeführt wurde, können Sie folgende Schritte ausführen, um auf vorhandene Daten zu prüfen:
# es kann sein dass anstelle des Benutzers anguser postgres verwenden müssen psql -U anguser -d angproj # auflisten vorhandener Datenbanken \l # anzeigen der Anmeldedaten zur aktuellen Verbindung \c # verbinden zur angproj Datenbank, falls nicht schon als anguser zur Datenbank angproj eingeloggt: \c angproj anguser # auflisten vorhandener Tabellen \dt # auslesen der Angestellten: select * from Angestellter; # verlassen von psql \q
Datenimport Oracle
-
Entpacken Sie das Archiv oder klonen Sie die Sourcen:
git clone https://gitlab.dev.ifs.hsr.ch/ifs/AngProj
-
Öffnen Sie eine Terminal/Konsole/Kommandozeile und wechseln Sie in das Verzeichnis mit den entpackten oder geklonten Dateien.
-
Stellen Sie sicher, dass Sie das Kommando
sqlplus -V
ausführen können. Auf der Oracle Seite finden Sie verschiedene Links, die Sie weiterführen. -
Führen Sie nun das nachfolgende Kommando aus, um die Daten zu importieren. Wichtig: Passen Sie das Passwort für den Benutzer
system
an, falls dieses – anders als im Folgenden angegeben – nichtadmin
sein soll!sqlplus system/admin @0_runAllScriptsORA.sql
-
Sofern das vorangegangene Kommando fehlerfrei ausgeführt wurde, können Sie folgende Schritte ausführen, um auf vorhandene Daten zu prüfen:
# Anmelden zur Datenbank als Benutzer anguser sqlplus anguser/angproj # auflisten vorhandener Tabellen select table_name from user_tables; # auslesen der Angestellten: select * from Angestellter; # verlassen von sqlplus quit
Import mittels SQLDeveloper
Wenn Sie den Import der Datenbank über das gewohnte SQLDeveloper GUI durchführen möchten, geschieht dies wie folgt:
- Melden Sie sich als
system
an - Öffnen Sie die Datei
0_runAllScriptsORA.sql
- Im neu geöffneten Fenster sehen Sie den Inhalt und den Namen der Datei
- Lassen Sie das Script mittels F5 ausführen
- Melden Sie sich ab (Disconnect) und und als Benutzer
anguser
wieder an.
Verbindungs-Parameter
Die SID (Oracle System ID, d.h. eindeutiger Instanzname) lautet orcl
(bei Express Edition ist die SID xe
); weitere Parameter sind
Host=localhost
, Port=1521
. Weiter Hinweise zum sogenannten Connect
String oder auch Net Service Name finden Sie im Guide: Erste
Schritte mit SQL
Plus
keywords:
- database
- sql
- postgresql
- plpgsql
- stored procedure
- trigger
- views
- arrays title: 'Übungsdatenbank Angestellte & Projekte'