2. Über uns
IT-Beratung, Training, Web-Design, Programmierung
Thomas Siegers ts@interwerkstatt.net
Diese Präsentation ist frei zugänglich auf:
http://www.slideshare.net/thomasjs
Dieses Werk bzw. Inhalt steht unter einer Creative Commons
Namensnennung - Weitergabe unter gleichen Bedingungen 3.0
Unported Lizenz.
Siehe mehr unter: http://creativecommons.org/licenses/by-sa/3.0/deed.de
2
4. Motto
"Sage es mir und ich vergesse es,
zeige es mir und ich erinnere mich,
lass es mich tun und ich behalte es."
Konfuzius, chinesischer Philosoph, 551-479 v. Chr.
4
5. Warum Datenbanken?
Daten strukturiert speichern
Daten sicher eingeben
Daten schnell finden
Beliebige Daten abfragen
Verschiedene Datenquellen miteinander verbinden
Beliebig große Mengen an Daten verwalten
Daten beliebig fein unterteilen
Beliebige Berechtigungen für Daten vergeben
Daten beliebig ausgeben
Benutzer gleichzeitig mit Daten arbeiten lassen
Daten im- und exportieren
5
9. Normalisierung
Eliminierung / Reduzierung von Redundanz
Wikipedia
Wikipedia
Erste bis fünfte Normalform (1NF - 5NF)
Nr Name Firma Nr Name Fa-Nr
1 Willy AEG 1 Willy 1
2 Walter IBM 2 Walter 2
3 Werner BMW 3 Werner 3
4 Anton BMW 4 Anton 3
5 Anna AEG 5 Anna 1
6 Agnes BMW 6 Agnes 3
Nr Firma
1 AEG
2 IBM
3 BMW
9
10. Beziehungen
Nr Name Fa-Nr
1 Willy 1 1 : n one-to-many
2 Walter 2
3 Werner 3 Nr Firma
4 Anton 3 1 AEG
5 Anna 1 2 IBM
6 Agnes 3 3 BMW
junction table
Nr Name
1 Willy Ma-Nr
1
Fa-Nr
1
n : m many-to-many
2 Walter
3 Werner 2 2
4 Anton 3 3
4 3 Nr Firma
5 Anna
5 1 1 AEG
6 Agnes
5 2 2 IBM
6 3 3 BMW
6 2
10
11. Schlüssel
Mithilfe von Schlüsseln werden die Beziehungen zwischen
Tabellen hergestellt.
Primärschlüssel (primary key, PK)
I.d.R. hat jede Tabelle einen PK.
Eine Tabelle kann nur einen PK haben.
Die Werte im PK müssen eindeutig sein.
Die Werte im PK werden i.d.R. automatisch vom DBMS erzeugt.
Fremdschlüssel (foreign key, FK)
Der FK enthält die Werte des PK der verknüpften Tabelle.
Eine Tabelle darf mehr als einen FK haben.
Die Werte im FK dürfen mehrdeutig sein.
Die Werte im FK werden i.d.R. vom Anwendungsprogramm erzeugt.
11
12. Indizes
Indizes werden verwendet, um
das Auffinden von Datensätzen
zu beschleunigen. Tabelle
Nr Firma Umsatz
Indizes können auf eine Spalte 1 AEG 123.456
oder eine Kombination von 2 IBM 987.654
mehreren Spalten gesetzt 3 BMW 456.789
werden.
Primär- und Fremschlüssel Index auf Umsatz
sind immer indiziert. Nr Umsatz
1 123.456
Wenn eine Spalte nicht indiziert 3 456.789
ist, muss bei einer Suche im 2 987.654
ungünstigsten Fall die gesamte
Tabelle durchsucht werden
(full table scan).
12
13. Integrität
Korrektheit, Vollständigikeit und Konsistenz der Daten
Primärschlüssel
muss eindeutig sein und darf nicht Null sein
Wertebereich
Daten müssen innerhalb eines bestimmten Bereiches liegen
Referentielle Integrität
“Die referentielle Integrität - auch Beziehungsintegrität besagt, dass
Attributwerte von einem Fremdschlüssel auch als Attributwert des
Primärschlüssels vorhanden sein müssen.”
http://www.wirtschaftsinformatik-24.de/datenbanken/referentielle-integritaet.php
Sperren
Soll eine Datenbank mehrbenutzerfähig sein, so muss ein Datensatz, der
gerade von einem Benutzer editiert wird, für andere Benutzer gesperrt
werden.
Transactionssicherheit Wikipedia
atomicity, consistency, isolation, durability (ACID) Wikipedia
13
14. Architektur
Client – Server
Client enthält Anwendungslogik.
Datenverkehr zwischen Client und Server ist relativ gering.
Multi-Tier
Client kümmert sich nur um Präsentation.
Client kann – muss aber nicht – nur aus Browser bestehen.
Datenverkehr zwischen Client und Server ist sehr gering.
Client
Web-Server Anwendung DBMS
Web-Browser
14
15. Hersteller
Server PC
Oracle Access
DB2 Paradox
MS SQL dBase
MySQL Foxpro
PostgreSQL
15
16. Datentypen
! Datentypen sind nicht einheitlich für alle DBMS.
http://w3schools.com/sql/sql_datatypes.asp
Numerisch
INT(6) – Ganzzahl mit 6 Stellen
TINYINT – 8 bit, 28=256, unsigned 0 bis 255, signed -128 bis 127
FLOAT(8,2) – Kommazahl mit 8 Stellen und 2 Nachkommastellen
Text
CHAR(25) – Zeichenkette fester Länge
VARCHAR(255) – Zeichenkette variabler Länge
Datum
DATE – Datum im Format YYYY-MM-DD
DATETIME – Datum und Zeit im Format YYYY-MM-DD HH:MM:SS
16
17. Feld-Eigenschaften
Datentyp, Länge
Standardwert (default) – 0, null, benutzerdefiniert
Collation – Code für alphabetische Sortierung
Attribut – signed, unsigned
Null – Feld darf nicht leer sein
Index – Primärschlüssel, eindeutig
Auto-Inkrement – Wert wird automatisch erhöht
17
18. Funktionen
Aggregatfunktionen
SUM(), MIN(), MAX(), AVG(), COUNT()
Numerische Funktionen
SQRT(), PI(), SIN(), RAND(), ROUND()
Zeichenketten
LIKE, SUBSTR(), TRIM(), UPPER(), REPLACE()
Datum und Zeit
DATE(), YEAR(), NOW(), ADDDATE(), DAYOFYEAR()
http://dev.mysql.com/doc/refman/5.0/en/functions.html
SQL Anweisungen
GROUP BY
HAVING
18
19. Live Demo
MySQL Demo Datenbank auf interwerkstatt.net
Server-Adresse
Datenbankname
Benutzername
Kennwort
Zugriff
lokal - phpMyAdmin
entfernt – MySQL Workbench, Access
LAMP-Umgebung lokal installieren
Linux, Apache, MySQL, PHP
XAMPP für Windows
19
20. SQL
Structured Query Language
Wikipedia
Wikipedia
Datenbank-Abfragesprache
Daten abfragen, einfügen, ändern, löschen
Verwaltung von Datenbanken
Beispiele
SELECT * FROM person;
SELECT name, telefon FROM person WHERE nr>3;
SELECT name, telefon FROM person ORDER BY name ASC;
CREATE TABLE person (
nr int(6) NOT NULL DEFAULT '0',
name varchar(12) DEFAULT NULL,
telefon varchar(12) DEFAULT NULL,
PRIMARY KEY (nr);
)
20
21. SQL – Beispiele 1
Abfrage über mehere Tabellen
SELECT
p.name AS Person, f.name AS Firma, a.name AS Abteilung
FROM person p
INNER JOIN abteilung a ON p.nr=a.pn
INNER JOIN firma f ON a.fn=f.nr;
Abfrage mit Bedingung und Sortierung
SELECT
p.name AS Person, f.name AS Firma, a.name AS Abteilung
FROM person p
INNER JOIN abteilung a ON p.nr=a.pn
INNER JOIN firma f ON a.fn=f.nr
WHERE p.name LIKE 'W%'
ORDER BY p.name ASC;
21
22. SQL - Beispiele 2
Abfrage mit Berechnung
SELECT f.name AS Firma, SUM(u.umsatz) AS Umsatz
FROM firma f INNER JOIN umsatz u ON f.nr = u.fn
GROUP BY f.name;
Abfrage mit Berechnung und Bedingung
SELECT f.name AS Firma, SUM(u.umsatz) AS `Umsatz 2011`
FROM firma f INNER JOIN umsatz u ON f.nr = u.fn
WHERE YEAR(u.datum) = 2011
GROUP BY f.name;
Abfrage mit Berechnung und Bedingung
SELECT f.name AS Firma, SUM(u.umsatz) AS Umsatz
FROM firma f INNER JOIN umsatz u ON f.nr = u.fn
GROUP BY f.name
HAVING SUM(u.umsatz) > 30000000;
22
23. SQL – Beispiele 3
Einfügen
INSERT INTO person (name, telefon)
VALUES ('Anita', '0172-4387680');
INSERT INTO person (name, telefon) VALUES
('Anita', '0172-4387680'),
('Angelika', '');
Ändern
UPDATE person
SET telefon='02161-3462334'
WHERE name='Anita';
UPDATE person
SET stadt='MG'
Löschen
DELETE FROM person
WHERE name='Anita';
23
24. PL/SQL
Procedural Language/SQL
Datenbanksprache der Firma Oracle
Prozedurale Programmiersprache
Variablen, Bedingungen, Schleifen, Ausnahmebehandlung
Programme in der Datenbank gespeichert
stored procedures, trigger
Programme werden im DBMS ausgeführt
hoch performant
Bedingungen innnerhalb von SQL-Anweisungen
SELECT name,
CASE SUBSTR(name,1,1)
WHEN 'W'
THEN 'Mann'
ELSE 'Frau'
END AS geschlecht
FROM person
24
25. Daten-Validierung
Sicherstellen der Integrität – Wertebereich
Anwendung
Meist übernimmt die Anwendung die Validierung.
Benutzer Anwendung Datenbank
Daten- Daten- Daten-
eingabe validierung speicherung
nein ja
gültig
Datenbank
Validierung auch möglich mit stored procedures.
Access
Gültigkeitsregel für Felder definieren.
25
26. Access als Frontend für MySQL
Server
Datenbank anlegen
Adresse, Name, Benutzer, Passwort, Remote-Zugriff
Client
ODBC-Treiber für MySQL installieren
http://dev.mysql.com/downloads/connector/odbc/
ODBC-Datenquelle einrichten
Systemsteuerung > Verwaltung > Datenquellen (ODBC)
Benutzer-DSN hinzufügen
Leere Access Datenbank anlegen
Externe Daten > ODBC-Datenbank > Verknüpfung erstellen
Externe Tabellen verknüpfen
26
27. Access Datentypen
Memo
Texte mit bis zu 65535 Zeichen
Währung
AutoWert
Wert wird bei neuer Zeile automatisch inkrementiert
Ja/Nein
logisches 1/0 oder wahr/falsch
OLE-Objekt
OLE – object linking & embedding
Hyperlink
27
29. Übungen
Access 2010 für Windows
Grundlagen für Datenbankentwickler
Herdt Verlag
Übungsdateien herunterladen
http://www.herdt.de/artikel/ACC2010D/Access-2010-fuer-Windows/
Dateien ins Verzeichnis C:Übung kopieren
29