Datenbanken und GIS

Werbung
1
Datenbanken und GIS
Carsten Busch
Überblick (i) GIS und DB
Geschichte, Vor- und Nachteile von DatenbankManagement-Systemen (DBMS)
Aufbau und Architektur von DBMS
Datenbanktheorie
– Datenmodellierung
– Normalformenlehre
– Nutzung von CASE-Tools (Computer Aided Software
Engineering)
SQL
– Erzeugen neuer Datenbanken (Überblick)
– Änderung von Dateninhalten (Überblick)
– Datenabfrage
Verknüpfung von DBMS und CAD/GIS
2
3
Überblick (ii) GIS und DB
OpenGIS Spezifikation (Simple Feature
Definition for SQL)
PostGIS / PostgreSQL
– Speicherung von Geometriedaten (ESRI Formate)
– Raumbezogene Abfragen (spatial SQL)
Kartenserver
– Layoutdefinition
– Visualisierung der Daten aus PostGIS/ESRI
Formate)
4
CAD/GIS und Datenbanken
Trends
– Gruppenorientierte Entwicklungsarbeit,
gleichzeitige Bearbeitung einer
Zeichnung/GIS-Daten durch mehrere
Anwender
– Bearbeitung einer Zeichnung/GIS-Daten
an unterschiedlichen Standorten
– Übergang vom Datei- zum
Datenbanksystem
Produkte
– Oracle
• Geodatenserver für ORACLE unter Nutzung
der Spatial Cartridge
– ESRI (ARC View/ARC Info)
• Spatial Database Engine (SDE)
– Geotask
• Geotask Server für DB2, Oracle
– PostgreSQL (open source)
• Erweiterung PostGIS
• Geotools.org
• Sourceforge.org
5
Historische Entwicklung der Datenbanken
6
1. Generation (Zeitraum: fünfziger Jahre)
– Bearbeitung von Daten (rechnen, zählen) im Batch Betrieb, jedes Programm
mit eigenen Datenbestand, nur sequentiellen Zugriff, Datenträger:
Lochkarten oder Magnetbänder
2. Generation (Zeitraum: sechziger Jahre)
– Dialogbetrieb und Direktzugriff möglich, Magnetplatten, Dateisysteme
3. Generation (Zeitraum: 1965-1975)
– Unterscheidung zwischen logischen und physischen Informationen,
Datenmodelle: hierarchisches Modell, Netzwerkmodell
4. Generation (Zeitraum: 1975 bis heute )
– Klare Trennung zwischen logischen und physikalischen Datenmodellen,
Übergang von satz- zu mengenorientierter Verarbeitung der Daten, Theorie
relationaler Datenbanken
5. Generation (Zeitraum: 1990 bis heute)
–
Objektorientierte Datenbanken, Grundlage: Objektorientierte
Programmierung
Grundlegende Anforderungen an
Datenbanken
Redundanzfreiheit
Vielfachverwendbarkeit
Unabhängigkeit
Konsistenz
Persistenz
Strukturflexibilität
Benutzerfreundlichkeit
Organisation des Mehrbenutzerbetriebs
Leistungssteuerung
Hohe Verfügbarkeit
7
Anwendungsprogramme im
Zentrum
Dateien 1
Dateien 2
AP1
AP2
Lohn
Konstruktion
AP3
Bestellwesen
Dateien 3
8
9
Vorteile:
geringe Anfangsinvestitionen
keine Vernetzung notwendig
für kleine DV-Anwendungen
ausreichend
physische Datenverwaltung kann selbst
geplant werden
Nachteile:
Unkontrollierte Datenredundanz
Inkonsistenzen, fehlende Integrität
Geringe Datensicherheit /
Zuverlässigkeit
Mehraufwand für Erfassung und
Wartung
Größerer Speicherbedarf
Schlechter Datenschutz
Datenabhängigkeit
10
11
Daten im Zentrum
AP1
AP2
Lohn
Konstruktion
Datenbank-Management-System
(DBMS)
Dateien 1 Dateien 2
Dateien 3
AP3
Bestellwesen
12
Vorteile:
Vermeidung unkontrollierter Datenredundanz
Datenunabhängigkeit
Datenintegrität
Datensicherheit (Recovery)
Schutz der Daten vor unberechtigtem Zugriff
geringerer Aufwand bei der Datenverwaltung
kurze Entwicklungszeit der
Anwendungsprogramme
Nachteile:
Hohe Anfangsinvestitionen
DBMS oft sehr komplex
speziell geschultes Personal notwendig
Abhängigkeit von zentralen Funktionen
Bereitstellung des DBMS = Vernetzung
Übergang vom Dateisystem zum DBMS
verursacht oft hohe Kosten
13
Aufbau eines DBMS
Anwendungsprogramme/Datenbankanfragen
Datenbank-Management-System
Primärdaten
Sekundärdaten
14
15
Anwendungen von DBMS (i)
Client-Server Architektur
Anwendungen von DBMS (ii)
Applikationsserver-Architektur
16
Datenfluss/-verteilung
Services:
Geotiff
ECW
SRID
WMS
…
raster/grid data
Shape
DXF
Geo-SQL
DGN
…
vector data
Open GeoSpatial SQL (Geo-SQL)
Web Map Service (WMS)
Web Feature Service (WFS)
Web Coverage Service (WCS)
ArcGIS
Geomedia
Erdas
Grass
…
17
Desktop GIS
I-Explorer
gdlib, tiff, png,…
PostgreSQL
GEOS, GDAL
Apache
PostGIS
Mapserver
PHP
…
Unix/Linux
Windows XP + Cygwin
GIS Database Management Server
Mozilla
Firefox
Opera
…
Internet/Intranet
Tourist Info
GPS NAV
Env. Info
City Maps
…
CD-based-Information
Beispiel UMN / PostGIS Mehrschichten
2
1
3
18
SQL
19
Sprache zur Abfrage- und Verwaltung von RDBMS
SQL = Structured Query Language
aus System R von IBM hervorgegangen
1986 Verabschiedung des ersten
Standards SQL-86
1987 von ISO fast komplett
übernommen
1992 SQL-(9)2
200x SQL-3
20
Vorteile von SQL
auf Bearbeitung relationaler
Datenbanken zugeschnitten
alle wesentlichen Datenbankaktionen
werden durch SQL ausgeführt
"nur" Einarbeitung in Zusatztools
SQL-92 Standard in vielen Produkten
implementiert
21
Nachteile von SQL
Sprache ist nicht vollständig
oft herstellereigene SQL-Erweiterungen
gültige SQL-Standard bleibt hinter
gegenwärtigen Nutzeranforderungen
zurück
22
Einordnung von SQL
Sprache der vierten Generation (4-GL)
3.GL
open(buecher)
while(not eof(buecher))
{
read(buch)
if(buch.leihfrist>0)
print(buch.autor,buch.titel)
}
close(buecher)
4.GL
select autor,titel
from buecher
where leihfrist>0
23
SQL Befehlsklassen
Datendefinition
create table|view
Datengewinnung
select from where ...
Datenmodifikation
insert, update, delete
Datenschutz
grant, revoke
Datensicherheit
commit, rollback
Datenorganisation
create tablespace ...
24
Erstellen einer Datenbank
CREATE DATABASE name
CREATE TABLE tabellenname(
spalte_1
typ_1
[NOT NULL],
spalte_2
typ_2
[NOT NULL],
spalte_n
typ_n
[NOT NULL])
NULL, spezieller Datentyp
– Achtung: ""<>NULL<>0
...
25
Ändern/Löschen einer Datenbank
Änderungen
– ALTER DATABASE name
– ALTER TABLE name
Löschen
– DROP DATABASE name
– DROP TABLE tabellenname
26
Eingabe/Änderung der Daten
INSERT INTO
buecher(buch_nr,autor,titel) VALUES
(1,'Goethe','Kabale und Liebe')
UPDATE buecher SET autor = 'Schiller'
WHERE buch_nr = 1
DELETE FROM buecher WHERE
autor = 'Goethe'
27
SELECT-Befehl (1)
wichtigster Befehl von SQL
Datenabfrage
Änderungsbefehle (INSERT, UPDATE,
DELETE) nutzen SELECT-Befehl
ebenfalls
Realisierung von Zeilenselektion,
Spaltenauswahl und Tabellenverbund
28
SELECT-Befehl (2)
Tabelle 1
Tabelle 2
SELECT
Ergebnistabelle
Tabelle 3
29
Einfache Abfragen mit SELECT
Projektion von Tabellenspalten
ORDER BY
Selektion von Tabellenzeilen (WHEREKlausel)
AND, OR, NOT, BETWEEN
30
Projektion
SELECT Spaltenauswahl FROM
Tabellenname(n)
SELECT * FROM leser
SELECT
leser_nr,name,wohnort,ausleihzahl,anmelded
atum FROM leser
SELECT autor,titel FROM buecher
31
DISTINCT
Tabellen enthalten in SQL
Multimengen!
Unterdrückung von gleichen Zeilen mit
DISTINCT
SELECT DISTINCT autor FROM
buecher
32
Sortierung von Ergebnissen
ORDER BY
– SELECT autor,titel FROM buecher ORDER
BY autor ASC
– SELECT * FROM buecher ORDER BY autor
DESC
– SELECT autor,titel,ausleihzahl FROM
buecher ORDER BY autor,ausleihzahl
– SELECT autor,titel,ausleihzahl FROM
buecher ORDER BY 1,3
33
Selektion (WHERE-Klausel)
SELECT * FROM buecher WHERE
ausleihzahl=0
SELECT * FROM buecher WHERE
ausleihzahl=0 AND leihfrist<>0
SELECT * FROM buecher WHERE
ausleihzahl=0 AND NOT leihfrist=0
34
Logische Operatoren
AND, OR, NOT
– autor="Goethe" OR (autor="Schiller" AND
NOT leihfrist=0)
– autor="Goethe" OR autor="Schiller" AND
NOT leihfrist=0
– Prioritäten der Operatoren
– KLAMMERUNG!!
– de Morgansche Regeln
35
Alternative für den OR-Operator
IN
– SELECT * FROM buecher WHERE
autor="Goethe" OR author="Schiller"
– SELECT * FROM buecher WHERE autor
IN ("Goethe", "Schiller")
36
Alternative für den AND-Operator
BETWEEN
– SELECT * FROM buecher WHERE
leihfrist>=1 AND leihfrist<=14
– SELECT * FROM buecher WHERE leihfrist
BETWEEN 1 AND 14
37
Platzhalter für Strings
LIKE
– SELECT * FROM buecher WHERE autor
LIKE "A%"
– "%" beliebig viele Zeichen, "_" genau ein
Zeichen
– reguläre Ausdrücke können nicht
verwendet werden z.B. a(b)*a
38
Arithmetik
Grundrechenoperationen +,-,*,/
SELECT
einnahmen,ausgaben,einnahmenausgaben FROM finanzen
39
Skalare Funktionen
numerische Funktionen
– ABS(),COS(),ROUND(),FLOOR(),...
Datumsfunktionen
– GETDATE(),DATEADD(),DATENAME(),..
.
Zeichenkettenfunktionen
– LOWER(),UPPER(),REVERSE()
40
Aggregatfunktionen (1)
SQL-92 Standard definiert
Aggregatfunktionen
MIN,MAX,SUM,AVG,COUNT
DB-Hersteller integrieren oft weitere
Aggregatfunktionen
SELECT
SUM(einnahmen),SUM(ausgaben)
FROM finanzen
41
Aggregatfunktionen (2)
Zählen der Ergebniszeilen mit COUNT
– SELECT COUNT(*) FROM buecher
Unterdrückung von
Mehrfachaufzählungen
– SELECT COUNT(DISTINCT autor) FROM
buecher
42
Aggregatfunktionen (3)
möglich:
– SELECT MAX(ausleihzahl) FROM buecher
nicht möglich:
– SELECT autor,titel,MAX(ausleihzahl)
FROM buecher
43
Gruppierung von Ergebnissen(1)
faßt Zeilen der Ergebnistabelle nach
bestimmten Kriterien zusammen
– SELECT autor,SUM(ausleihzahl) FROM
buecher GROUP BY autor
Selektion der zusammengefaßten
Ergebnisse durch HAVING
– SELECT autor,SUM(ausleihzahl) FROM
buecher GROUP BY autor HAVING
SUM(ausleihzahl)>10
44
Gruppierung von Ergebnissen(2)
Falsch:
SELECT s1,s2,s3 FROM tabelle GROUP BY
s1,s2
s1
a
b
b
a
s2
x
y
y
x
s3
2
4
6
10
s1
s2
s3
a
x
2 ,1 0
b
y
4 ,6
45
Gruppierung von Ergebnissen(3)
Richtig:
SELECT s1,s2,f(s3) tabelle GROUP BY s1,s2
SELECT s1,f(s2),s3 tabelle GROUP BY s1,s3
f ist dabei ein Aggregatfunktion!
Herunterladen