Datenbanksysteme

Werbung
Datenbanksysteme
10.1.'
Den ersl
mithilfe
Erstellur
Daten st
10.1 Grundlagen
Festplati
Blindes
r
E
jn Datenb.nl,systern
(nachfolgend
Probte
lvz Datenbant
odet
DBS;il;_r* ,*;ffi
(
0".,
PC
,r,d.e§.m r.",r ddss
o;. "q i cr vur I wr._,,ir",ffi
- -*
v v rueßp'ucnen s]nd:
Herr t\,4eier
dessen wohnon in ejner AdresstabeJre
mit [4ünche;
angegeben is! darl nicht in der
Tabelle der Bestellungen
;::.[Tffi:f lly::il:.beder",
mt
dem wohnort Hamburg
Di\
DBS be\tel-r
Datea
,"i,."
I I
eirersprs äLs de. Ven^/dhJnq<rofrwal
c oerr Ddrenbänl-l\tdnage-lFnry5ren
andererselts aus dem eigentJichen DatensDeicher.
rle
kalenc
l;1x;:;1",
verknüpftsern.
(DB]\,,jS),
D'e varwarturqssoit\ /ä'e Teiclnpr
rer
dass
r
u1d
rri
das
Ao'pcnnel' 6p e"l"n u'""f#a;;;[;;i;;'"Ipnbdrk
ban\ DieaDr,dqpundverwd^ne+.0.*n..o,r,l,ill:,u;Ti;:#ffi::ä"rTri:srir"a,rdieDdrer-
ir
Dateni
chert.
den
el
Orten
DateDl
Das obigr
einJächer
abgelegl
beehllus
Durch Da
So,
\-ie
e
gralnmie.
Sturktuer
Eine
lteiti
einem Lh
unter and
WffiWffiWW
nutzer soi
1
Nahirli(
7.ß.
\tic
l0.l
10.1.1
Grundlagen
Die Aufgabe von Datenbanksystemen
(opifel 4 geknüpft: DoIt wurde
mithilfe eines Datenbanl$ontends (in dem Fall Openol[icqory Base) eine ersie Übunts zur
Elsielhrng von (verknüpflen) Tabellen durchgefüht. Wozu aber macht mar sich die Mühe,
Daten shuktu crt und effizietrt zu speichem, wo doch im heutigen Zeitalter der TerabFe
Festplatlen nahezu urbegrenzte Speichermenger zur Vefigung stehen?
Den ersten Kontakt zu Datenbänkon haben Sie bereiis in
Blindes Sammeln vDn Däten tubn itr kü.zestfl Zeit zu den folgenden Problemen:
I
Datenredundanz: Daten werden vielfach a]1 meherctr Stelletr gespeichert. Sie kennen das
Problem sicher aus del alt?iglichen ha.ris, wellfl Sie eine Adressbuchanwendung auf dem
PC verwendetr, eine Adressänwendtmg arf dem Handy und zusätzlich noch einen Taschenkale-nder1 Die Datensamnlungen werden in der Regel dcht slmchrcnisicrt, was dazr füht,
dass identische Infomationen an verschiedenen Ortetr vorliegetr.
r
Datuninkonsisterz: Werder Dater wie oben beschrieben an verschiedenetr Orter gespeichert, so kann es schnell zlr Unstimmigkeiten lommen: Eine Adresse, die im Taschen
adressbuch schell per Stift geändert wurdc, findet nltl selten sofort Eingang in die beiden elekuonischen Sammlungeo. Durch die Notwefldigkeit, Datensätze an me]üe-rer
Orten s5lnchron zu halten, schleichetr sich schell Fehler ein, die zrr unterschiedlichen
Dalanbammlungen an \prscbiedenen Oden ftilücn.
Das obige Beispiel lässt sich auch auf eine einfach kotrzipierie Daterbank auf einom Endgerät
ausweitcn: Stcllen Sie sich vor, itr einem kleitren Behieb wid eifle Autua8sliste in Form eirer
einfachen Tabelle [2.B. einer Excel- bzw. Op€trOffice.org Calc Datei) auf veßch;€denen PCs
abgelegt. Jeder, der etwas an dfl Datei ändert, tut dies nru lokal, ohe die änderea Kopien zu
beeinllussen.
Durch Datentukorcistenzen können hei der Abhage der Datenbanldaten naomalea auftreten, die zu Fehlinformationen ftihren können. Die AufEobe eines Dare-nbanksysfems isf es,
Redllndanzen zu minimiercn und Inkonsistenzen zu vermeiden.
So, wie eitr guter PrcglalnrnierEr sich nicht einfach an den Rechner setzt und drauflosprogrammiert (v91. ](apitel 7), müss der Datenbankcntwickler zunächst Stift und Papier au Hard
nehmen und cin Modell der geplantel Datenbank skizziereü. Bei der UmsetzüDg kDmplexer
Strukturen helfer ihm modeme DBMS.
Eine weitem Aufgäbo des DBMS ist die Verlvaltung mehrcrer Anwendex: ln der Regel wird in
eiflem Unternehmer von veßcüiedener Stelletr aus auf die Datenbank zugegriffen. Dabei ist
unter andercm ein ausgefeiltes Rechtesystem voü Bedeututrg, derm nicht jeder Datenbanlnutzer sollte Eitrsicht iIr alle Daten haben.
1
Natürlich sollten modemc McDschen ibr Hmdy mit den entspreche
eD
PM-Anwendungen wic
s}arhrodsierel D6 Ceze e ölst heute meistbequen perBlue
loolh. Aus BequemlicRcit bleibt es iedoch oftnubei s[tcn vorsätzcn.
z.B. Microsoft Oüllook au{ dcm PC
10.1.2 Grundbegriffe
Zum tiefe.gehe[deD Verst?indnis
von nraterbanlsystemc.n sind
fol8ende BeSri&b von Be.leutung:
r Etrtirät: Enritätcn sind OölFke ./e§
d p- in Fnrm \un bes.ru.aibpnripn
E,ppn-Lhahcr , ;.; r;;";;:'"::::::
'*"",
w^'d.n
"
t;D Bnis,,iFr ftj'' eine Enrirrr i.r
eir rundn. dc, 1".i,"'.i,;;;il:
::-pF',rhprr
t'!'urd"
Dcr Lnrirär des \undan \dnDeE
son \o,p,se .oH i" bi"r-;;;;l;;."'1"::
dc*
z,,peordnnr
\^propn. u;n. r,,eir",e enrirär v\.np.in rom KundFn
bdsrF rc, iT."cl],,",
a Datel]:
r
Das otomarc Elernent einer
Dt,
rPrbon( sind dic Fd(r^n. die Ln itü
dcn. Diese lönnun in r^,_ n-. -,.Bespcicbpft wer.
bckärnrpn rJ p^n rräIz" zdflan
und rr ieß(ornmrza_h te,. ,"l.;";J:
-:''8'amrLnrLDs
vodreSen' Die straße in welcher
*.t.,,, *,
ein K,ade
r)r
;"a*,*'
die Hausnummer eir Datum
"t"o"*"
"rvom Tvp Integer
Datenfeld: Eir Datenr",o
-'pFicbemdP<
"",orn
Aari6'l
oi" r'l"tonn"."."in-BcirpiFl u:irc
"r"' ':"
I1T
',,:]P\'zu o'" konraLlialormd'iunen
r
Dälensa,: zu
r
Tab;ll-Tabette: In einer Tabelle *".a",
anrbirr.
(undpn n"nnro'n"''un"""
Datensaiz'
der
die bekanrten hlbmationen
tw"r,""", p*,r"ii,Jr,-;ä;:"'"1:.1 :T"lefonl
zusanme
^'---*'
assi. Der Datensaiz
als zeile in ciret
eirp.
zusammenselasst.
r
wiral
IIr"
e]I,at besti-'nmten rhematik
rm\]*u"s".d"" B"I:i:, :1t.n:?tze.zD
r'*" oic! dic TdLFUp d", I\....ren.rrreo.
Darenbänk: cino Ddr^obdn(
,,.r'"0'"'
c jnem ccsajr.r.v.rem
Di^ rdbell. d^, _,,;";;;
zusanm"n
:,,:; ;jl"pt" ,rnb"thn.zu
die
?ibptta
gen artiker kannen in r;;;;;;;;;"";."-t:
der voüäti":' ""sterrrLngen "owre
,,"r,
' **:
"r,,"',r";:ä j;i;
:
o
i"^l;,il:
ü:
ilr ri iä,
":'""-*:1,
",.. .,-s..,"1",p"rä,;n,"
",
h;"rong
'u"g.n ,,s*,a,", ;,.r;;
I""::11; 1:.-':"' '"'en
,r"s,and"
ffi
v:,knüph,,;;.;*;;;r.ä:,:r:;",::1",T,"11
Abbildungll
Struktur
r
fdon
I
NerzwEEl
rarchisch
ten. Ein I
dp,-rabe,,e L,a r dsFf
10.1.3 Datenbankmodelle
Im Wesertlichen werden folgende
Daterbankmodelle unterschieden:
r Hierarchische Datenbanlen: Dieses
M
xs wurde im Rahmp. .r"" o-^,,-.,, .l,1"ll ,rhl, zu den ältesten Datenbanlmodellen:
n,"...",", n"'ä"i.,i'";.'""][]l:;1';.:""-pros'dmrn§ Fn'wi'i (n,r. Die srrur,ru pinFr
Ddie, ;D Br,.,,slrukru, il;
"msF\Phdnn Bdums DiF Darsrer,uns vo.
J,;".:;;':':s
rprn"nsprp,n, o"u-, *"ä
" ,K"l'1: in cesrart da' bin"Jco suLbbdums
;;;;;;"
.r.,(r.rr Firp§ BäLms jn r,nrereiarre.,".u'"n!-r'1ot'"it"n im Mnd.ll 8pmäß der DdieDoie,",chi.Lbc Da
,0 , zei8, pine
^nb.u.i.,-i'.;;
,1"::|,ilT.;1,'":1,,"8
Ahnlich der aus fdpneT gbekannten
Dir
D^zcicbn'{ n'ar di" \o1L"prcn
Dar'nobi'r'r' rrs
d';
f'än'^n sed.n.,rszeiBl re
är;ciprr. D,c ,;np,BF^dn^,pn ""1;l;;;'":l:l'urrur'aoum
K,.;;;;;f '" "i"]:\d'r.rc4
at'
Ltt
ntnotcn
rrnrP€'ordnere al Arnltaorpn bF,'Aicrmer ,'",*+."i"
o.,lil'n
hdben den Nä'hrpir. da.. <iF n.td,i\
:'bup, ^inz,,.iLhrpD .^j.;;l^;"1;"'*r"o
(eine a:m-Bcziob
hiPrdJcbi.Lhe Ddrpnbd,{pn
Lr,rppn ,uo,,o.^ ",',"n'''i"t
'j'öru'en
ffim.
#:;:;:l
K;;";
Abbildung
tl
haus gehor€n
&
schiedenek
ü
1:m- bzw.
mr}l
Eitr NacH
Eine kleir
sie zugrcl
den
Auh
forderlirJr
l0.r
/-l
Grundlagen
l .w
W \ TWWfl)M
w
\
_Ar',m .W.,
.W,,
---AM
d,n\,
r,&qnl w \ w
Abbildung r0.1: lm hierarchischen Datenbänkmodell werden
W
die Datenobiehe in weitere Untereinheiten zerlegt, die die
sttuktur feiner beschreiben.
r
Netzwerk-Dalenbatrketr: Das Netzwerk-Daterbankmodctl erläubt im Gegensatz zum hierarchischen Datenbankmodell die Zuordnung mehrerer nlternknoten zu ejnem Kindknotcn. fin Bei"piel /pi91 >Abbrldung 10.2:
Abbildung r0.2: ln einem Neuwek-Datenbankmodellkönnen Kindknoten mehrere Elternknoten haben.ln einem Kaufhäusgehören beispielsweise mehrere lvitabeitel zu einerAbteilunq. Einige Mitarbeiter gehören zul Eltemklasse,Verkäufer". Weiter können sich Kunden von mehßren Ve*äutem bedienen lassen bzw kann au.h ein und derselbeverkäufer ver
schiedene Kunden bedien-.n. vermittelndes Datenbankobleh
istdabeidie Kundenbindung Derartige Beziehungen werden
1:m bzw. m:n-Beziehungen genannt.
Ein Nachteil der Netzwerk-Datenbank ist die mangelhaft€ strukturelle Unabhängigkeit.
Eiüe kleine Atrderung an der Struktrl der Datenbank vexlangt eire Anpassutrg der auf
sie zugreifenden Pro$amme, der Clients. ldeal wife ein Systcm, das auch bei umfassenden Anderungen in der Datetrbankstruktü keine Ver:inderungcn in der ,,Außenw€It" erforderlich macht. Diese Bedingung erfüller relaliDnale Datenbanken
I
Relationale Darenbankenr Eine rel.iionale
Daterbanl besteht im Wesenttichen aus
thbel1e', die über rezieiuflBen miteinarder
verknüp{t werden. Die Tabetlen sinir
im
mathema_
tischen,Sinn zweidimemionate Fetder,
besreh*
2",t", ,"J.;d"".,];ä;0"n"
enthält.Dateßätze, dic durch einen primarsc,, "r* ",*
üsse_12 gckennzeich[et werde[
Typisches
Bpicpipt irr pi,,e rdbcrtp. dip R,ntn11n".n
oi".n",
r.,1."g";;;":;"i
,",:,""",-,
Fall der primärschlüsset, üter aie*" ti, ",r"arr.
k"h.,
k*,
"'*. ".;";;;äi,:: ;ä::::l;i::I;i:1ilää:111*'f,x,ä::ä",i,Tf, :;
verwiesen werden
.*
ff "H:T'*JJäJ1iT,ili:]:";r#L:::*il5
U.sr. tr ird o., Schtü..et in /ic."16 t
al Ftptnd<.htut"pt Er;; ir;; ;; ;.1,.
",.
getätigten Bestellungen
-ra enrhr t, über ilje I
ü;ä;
Abbildq
Ans.hdf
i
schreibt Pro
mießpr.d.
einer
b€di
I obi"h
obierü
der Vo
seheq
Bei+n
Ahbndung 10.3: h einn ß,drioid,en Dätenb"nr
wercen hend(htü.\etmd Drinijßchtü$eiunrp,scJ.,eden.
srn usset ßt das eindeutiqe lennzeichen
eines Datensäti'e' der
yemos.h,Ls(pr v;,-rnd".""
oo1ar.
dol
a,remosrhtr'.e
vn,nrh.ta^6"
r
labelc
Der prrrnär
einq diderFn laoelle r"nr d"nn mirnite des
r, il#:;;;ä;i:i,lIl""J;1:äl,lllfli1,i
0",;;,;;;
^-. - -..,
AL§
ER-Datenbanlnodelle: Das Enritv_Rplorr.ors,t+
Datenbankmodetl lku& Efi gellanntl
erweiterr däs retariomte Datenb;km.aar
i"""r",", ,r"-ä""":;";
.".
Datenbank letztendlich nur LLm die
konzeptionelle Beschreibung der Datenbanh
ki
lmem
muss-.In diesem Modeu werden objekc
1Entlt"t""r,_,il";;"8;;;;;;;;ä";ä" ._
gestetlt urd mithiltb eirer ertsprechenden
Software in eirle tunküonsfah;ge natenbänk
umsesetzt. Prinzipieu basiercr ane
derzeir im E"d"","".b";tJ;;;;;ää;ä.,.""
ä;;#ä".
[Microso{t Access, openOfEce.org Base unct
MySqrl
a"_ ;n_;,;;;. ;";;;är"*
entwickler elsteltt mithilfe der Softwarr
""r
-Diosy,mm (EpD). Bei.
spiere zu ,ren Bezieh,ng;;-,ä
;;;;-.""f6i,,,":::L:*ili,ä,*?
2
E\ Sibt anch zusrm,npnlFsptztp prim.itschti
mrr.rers,htt.rFtr.fne"i.ri"r,1or,,17,..''l/'Dahc'lHodpl'e'si'bun"in"\prlur'rtfrg\oa
vun |ind"r'| zu ilr, D L.ina-,n
\u,d, h", r nnu" , siF im öp";ö;":;,.
t, n.,
;:i.9:"8
i
thttp:
Mt.onoet'i.dF Zu ,o, ta"ne--',e".uro
. ,,,r.sc/ t.
t)t"rtr:ndt-
Abbild|.t'
buten
3
(l4t
Der
r
BL
10.1 Grundlagen
darqestellt Di€ verbindung ,Kunde hat
nur
eine
Ansch
fi. Die verbindung "Proqrammierer
Anschrift" ist vom Typ 11, denn ieder Kunde hai normaletueise
schreibt Programm" ist vom Typ 1:nr, denn ein Programmierer kann mehrere Prcgramme schrelben. Die Beziehung ,Pro-
Abbildung t0.4: lm
ER Diagramm werden unterschiedliche Verbindungs§pen
grämmierer beherrscht Programmie.sprache" ist vom Typ m:n, denn ein Programmierer kann einerseits mehrere Program
mießprachefl beherßchen; andereßeits $/ird es au.h eine Vielzahlvon Programmierern geben, die für ein Proiekt, das in
€iner bestimmten Sprache zu reaLisieren ist zurVerfügung stehen.
r
objektodentierte Darenhatrk€n: Obiektorientiets Datenbaiken setzeü die P nzipien der
Objekto eütierung [vg]. (dpjtel sl auf Daterbanksystemen u]n. Dabei spielt das Pdruip
der Vererbung eine wesentliche Rolle: Entitäten werden als Objekte einer Klasse ange
sehen, die ihre Eigenschal1en auf abgeleitete Klassen/Objekte übertmgen können Ein
Beispiel zeist >Abbildune 10.5.
Prinzlp elne r o bjektorientierten Datenbankstruktur:Die Elternklasse "Peßon' vere6t die Eiqenschaften
vorname Name und Adrcsse an die Kindklassen ,,Mitaloeiter'und,,Kunde". Die§e werden mit weiteren, spezl€llen Att
Abbildung 10,5:
buten (Lohn, Besre lunq)versehen.
3
Der Buchslahe ,,n" rNude der Mathematik entliehen
md
steht für ,,beliebig viele"
10.1.4 Datenbankanwendungen
Für den Zugriff auf den Datetrbestand einer Datenbank verwendet man eine Datenbankanwend[ng. Diese verhindet drei urte$.hiedliche Schichtenr
I Präsentationsschicht: Mit dieser Schiclrt kommt der Endanwerder in Kontakt. Sie bietet
Funktionen zur Erctelllrng von Berichten ünd Darstellutrg von Daten und ermögljcht das
Eingebetr von Daten in die Datenba*.
r
r
Geschäftsschicht: Die Geschäftsschicht legt die sogenanrten Geschäftsrcgeln fesi. wet,
che bcispielsweise die cülti8keit von eingegebenen Daten priift. Die Geschäftsschicht
sielli zudem Funktion€n tur Berechrungen und Abfragen bereit.
Datenbankschichti Diese Schicht bietet Funktioretr ftir das Speichern von Daten und
Algorithmen zur Datersrche.
Die besch ebeDeD Schichtetr der Datonbankanwendung lassen sich physikalisch auf uoter-
schiedliche Hardwarabereiche auslagern bzw. aufteilen. fe nach Anzahl der beteiligten
Hardwarebausteine spricht man von einschichriger, zweischichrigen oder r-schichtigen
Datenbankanwendungen. Iin Falle einer eirschichtigen Datcnbankanwendung laufen Prä
sentaiionsschicht, GeschäItsschicht und Datenbarkschicht auf eirer einzehen Maschine.
Diesc S;hiatior fitrdet man beim Einsatz von Äccess oder Operloffice.org Baso auf cioem
Rechrer im heimischen Be, e ich \or
lm Fall t
einem (
Server- I
als Dats
Bei eitts
und Dd
C,lient !
(Geschäl
Eine tJ4
Middb
Die lfia
bantsE
unabhä
bank
z
uDdnft
Ein Bei
I]odo}E
mieiE r
Dqitu
Zugrifi
102
(Präsental onssch cht, GeschäJt$ch chr)
In
ftl
smd
sä"*
rirtsd
S6rE
htum
Abbildung 10.5r lnternet-Datenbankanwendunqen
slnd in der Regel m e h rs.hichriq ausqelegt. Der Vorteitd€r Arbtndung
der Datenbank an einen Webseruer besteht darin, dass aulden clienß bis aul den Brows€r keine eg€nsiändige Software
zur NuEung der Datenbank innalliertweden mus.
10.2 Datenbankpraxk
Im Fa]] ciner zweischichtigen Datenbankatrwendung läuft z.B. die PdsetrtatioNschicht auf
einem Client-Pc, die Geschäfts- und Datenbänkschicht hingegen auf einem dedizieflen
Server. Dicsc Konstellation tifft män in kleitrercD Betrieben an, die einen kleinen Server
als Daterbankserver einsetzen.
Bei einer n-schichtigen Datenbankanwendulg werden Präsentationsschicht, C,€schätuschichi
und Datenbankschicht aüf mehrcrc Systeme verteilt. Typisch ist hicl die Komtellaiion mit
Cliert (P sertationsschichtl,
Anwendüngsserver (Geschäftsschichtl ünd Datetrbanlcerver
(Geschäftsschicht).
Eire typische lntemet-Daienbankanwetrdurg zeigi >Abbildung 10.6.
Middleware
Die Middlew.rre ist die Schnittstellc zwischen der Datenbankanwendutrg und dem Datetr
bankserer. Sie stellt dem Anwender bzw' dem Anwendungsprogramm ehfache, datenbankunabhängige Schnjttstellen zur Verfügüng, url1 unkompliziert aüf die hhä]te der Darenbank zuzugreifen. Bei Veränderungen är1 der Daterbank muss lediglich die Middlardir.
und nicht jeder Clietrt argepasst werden.
fiü eine Middlewareschnittstelle ist der von Micrasoft entwickelte ODBC lopen
Datobase Connectiviry) Standard. Mithilfe .licspx t\ogammierschnittstelle können Programmierer aul eine Vielzahl von Datenbanken zugreifen. Unter Java gleift man aul die /rBC (/ovo
Datrrbase Connectiviy)-Scbdttstelie zurück. Mehr zu diesem Thema efahren sie in Abschnitt
Zusrill ur
lovo-Pmsorn ppr DBC.
Eil1 Beispiel
"inp
10.2 Datenbankpraxis
Die Dätenbanksprache JOI \Sttuctured Quety language) wird zur Definition, Abfrage und Manipulation
von Daten in relationalen Datenbanken eingesetzt. lm folgenden Abschnitt wird SQL in Verbindung mit
dem frontend des lvysQt-Datenbankservers eingesetzt.
Im folgenden Abschnitt werden Sie praldsche Übunger in ejnem Datenbankmodcllsystem
vornehmen. Dabei verwenden wir das Open-Souce Däterbarksystem MySQI. das für alle
Bärgigen Plattlormen zur Verfügung steht. Däs System finden Sie vorkonliSuriert in ünsercr
vtutuellen Lemumgebutrg vor, sie körtretr aber auch den verwetrdeten MySQL Community
SeNer ftü Windows oder Mac OS X von lt.tl. amysq./.de herunterlader und installieren.
IDfomationetr zü Installation des DBS finden Sie ebenda.
EÖfu
10.2,1 DasLAMP-Modellsystem
alsB
ln ei
Das vorkonfigruierte MySQL DBS
in der virtuelen Lemmgebung ist Bestandteil eitrer vollwertigen LAMP(L]rI,. Apache-MySQL PHP) hstallation, d.h.. es ist in folgende Komporerten irtegdert:
r Linux: Das fteie Betiobssystem bildat die Grurdlage der Installation.
I
!
r
Apache: Der Apache-WebseNer Eestattet einen bequemen Zugdfr auf das Daienbanksystem per Browser. Der Apache-WebseNer wird in der vtutuellen Lemrmgebung über
das Pal(et apociez irstallie . Zusätzlich muss das Apache Modul .libapache2mod-phps
eingabunden werden.
näd
cetu
imF
E
BeF
hila,
MySQL: Das cigeniliche Datenbanksystem wird über die Seruemnwendung mysqlsefi,er
nisr
Sie I
installiort.
des
PHP und phpMyAdmin: Die Skriptspmche PHP (PHP Hwettert PEprocessor) erm.jglicht ir Verbindung mit dem bekannten Tool p,hpMl.,,ldmrn die bequeme Admidstatiotr
der MysQl-Datenbank via Browser Dazu müssen die Pakete plps,commofl sowie
phpmyodmi, installiert werden.
E
r
Ger
lettr
Die d€s
ben argt
Testen Sie zunächst die installierten Module auf FunktionsfäIigkeit:a
r
r
Rufen Sie im Browser die Adresse locollost
aul Damufhitr iollre sich der Apache-Web-
Testen Sie, ob Sie vom Brcwser alrs das Verwaltungstool phpMyAdmin aufrufen künrer.
Das geschieht durch Eingabe der Adrcsse localhost/phpmyadmin h der Adresszeile des
Brcwsers.
r
r
!
Loggen Sie sich als Benutzer root in phpMyAdmin eitr. Das Passwort tur sämttiche AdmidstatioNaulgaben in der vhtuellsn Lernumgebung lautet pearson.
Kontmlliereü Sie im Bercich Datenbanken, ob einc Datetrbank ftmens rnysgl exisrier Lr
dieser werdetr die Metadater des MySQL-Systems abgelegt.
Stelen Sie sicher dass der MySQL-Server läuft. Dazu begeben Sie sich auf ehe Kommando
zeile und geben folgenden Befehl ein:
ps äx
I
srep mysql
Daraufsollten eidge Pmzesse, die den SQL-Server betreffen, aüfgelistet $.erdcn.
Nach dieser Vo.aüeit können Sie die ersten Schritte
10.2.2
in de. Welt der Datenbanker unter-
Erste Schritte
Anlegen eines Benutzers
Obwohl die Datenbank stets über der A&rinistatorac.ount na]]lens roor verwalter werden
ka]rn, empfiehlt es sich, für die folgenden ÜDungen ein.n weiteretr Benurzer arzutegen. Dies
geschieht mithiue von ph pMyAtlminl
EI
L*t
EE
e
cl
c
4
Windows- oder Mac oS Arwcnder können altemativ das XÄMPP Palet insrallieren. siehe dazu
http :/ / w.opacheft iends. o ry/ de /xotnpp.html.
C
E
Öftuen Sie die Adresse lo.o/h ast/phpmyadn;n im Browser und loggen Sie sich dort
als Berutzer roof ein.
In einem jungfräulichen, d.h. selbst ifftallierter System besitzt der AdminishatDr zu
nächst nocll ein leeres Passü.ort. Das sollte in Prodrktivsystemen sclbstvc$tändlich
geändert werder (Sto.fmenü/Passwort dndem). Das Administmtorpasswort fiir das das
im Folgenden beschriebene Modcllsystem lautet pedr"sor.
E
Bcgcbon Sic sich
E
Gev/ährer Sie dem neu crslellten Benutzer über den Link Globole Rechte/A e auswaih
len desn VoIIzüg ffaufdas Datenbatrksystem.
ir das Menü fiecäre rnd fDigen Sie dort dem LinI Neuen Benurzel
äi"zulüger. wählen Sie als Benutzername nutzeroder einen anderen Namen und defi
nieren Sie ei. Passwort für der neuen Benuizer (>Abbildrng 10.71.
Sie könnon an dieser Stellc auch bereits eire Datenbank erstellen, die mit dem Namcn
des soeben generierten Beflutzels vemeher wild. Das utrierlassen wir züträchst.
Die dem Benutzer zugewiesenen Rechte könncn im vorliegcnden Menü späier nach Bclieben ansepasst werden.
Abbildung 10.7:
Rechte
E
I!4ithilfe des php[lyAdmin-Tools wird ein neuer Datenbänkbemrter
aigelegt dem zunächst alle globalen
gewähdwerden.
Ar*licken des Knopfes OK Daftuf
ffscheint dic Bestätigungsmeldurg, dass der neue Betrrtzer angelegt vi'rude. Zusätzlich
weder die dafih an das Datenbanksystem geschicken Befehle gezeigt:
,nutzeT,@.9, IDENTIFIED BY I***I;
CREATE USER
* T0 'nulzer'@'%' IDENTIFIED BY t***r I,ITH GRANT
GRANT ALL PRIVILEGES 0N *
Bestätigen Sic slle vorgenommenen Arderungen durch
OPTION }4AX QUERIES PER HOUR O MAX COI,INECTiONS PER HOUR
liAX UPDATES PER
HOUR
O MAX USER CONNECTIONS O
;
O
Insgesamt ü.UIden somit rwei Befehle, die jeweils mit einem Semikolon abgeschlossen u,urden, an das System geschickl In der ersten Zeile wird mithilfe des Befehls CREATE der reue
Benulzer erzeügt. Desser Passwort wird dümh *** maikierL Die Dächster Zeilen enrhalren
den Befehl zur Rechteveryabe: Dem Benutzer werden über GRANT ALL pRMLEGES alLe Rechre
zugewiesen. Zudem ist die Berutzün8 der Datetrbank Dicht timitiert: Die Zahl o bei den fol-
genden Optioner steht fiir unbegrenzten Zugiff, der Benutzer dalf beispielsweise beliebig
viele Abfragen pro Stunde duffhführen IGRANT oPTION t4AX QUERIES pER HoUR 01.
Mit dem neu angelegten Berutzer kann nun praktisch gearbeiiet werden. Alle nachfolgend
voryestellten Aktionen in der Datenbank können zwar auch bcquem mit dem Tool phpMyAdmin durchgeftilrt werden, zum tieferen Verständnis begebetr wir uns aber zünächst auj
nysql> s
luser()
+-
-
-----
---+lnutzen
1 roY ir
Hier win
ur
Die folg
croß-
die Kommalrdozeile.
Kontakt zur Datenbank herstellen
Zur Herstellung der Ve.rbindung mit dem MySQL-SeNer verwenden Sie nachtblgend das
flysql -Ctientpmgranm. Öhen Sie eine Konsote rnd geben Sie den Befehl mysqt <Benutzername> -p ein. Sie werden aufgefordert, Ihr Passwofi einzugeben, und sind anschließend im
System eingelo8gt.
pearson@pearson:-i mJsql -u nutzer -p
Enter password:
lilelcome to the MySQL
monitor. Comflands end
Your MySoL connection id is 122
Server version: 5.1.37-1ubuntu5.1 (Ubuntu)
Type'help;'or'\h'for
help.
with ; or \g.
:t
i'
t
{
:lI
Type'\c'to clear the current input statement.
mysql>
) signalisiert, dass das System nun auf Ibre Befehle wartet. Sie kötrnetr das
System jederzeit druch Eingabe des Befehls quit oder die Tastenkombhation l@+E
Der Pmmpt mysql
IJ€k n
AnleqE,
Beginnen wir damit, Befehle ai das System zu schicken. Das folgende Kommardo, gefolgt voII
der E-Taste, zeigi beispielsweise die Version dfl Sofrwarc sowie alas akruelle Darrm an:
mysql)
§ttECT VERSIollO,
Sie
einmal r
sirrd
CURREilT_DITE I
+---------- -----+---lvERSi0lro
ICURREI{T-DATE
+-------------+------- - ---+
| 5.1.37-1ubuntus.1 2010-02-27
+ - - - - - - - - - - - - - - - - -+| ,--------- +
l rou in set (0,00 sec)
I
rysql>
+------
|
|
An dieser Stelle werden bercits einige Spezifika von MySQL (bzw. auch SQL) ersichtlich:
Befehle müssen ill der Regel mit cinem Semikoloa abgeschlossen werdens, dic Ausgabe der
Abfrageergebnisse efolgt in der Regel itr iabellarischer Form. Sollten Sie das Semikoton
eitrmal vergessen, so begimt dsl Cliert eire rerc Zeile urd wartet auf die Eingabe weiterer
Befehle. Sie habcn dann die celegerheit, das Semikolon nachhäglich einzugeben. Beispiel:
5
Ltu
Es gibt einige AusnEhmen, z.B- den BeIeht qur't.
|
0atan
lnfoll
ry5qr
phF
3
rds
Bei
da
r*u{r
däs
I}
Il*
mysql> select usero
---,- ---- ---- +
)
I
--- ---- +
+----lnutzer@localhost
+ ---- ---- ---- +
l rovl in set (0,00 sec)
+
user (
|
I
nicht zwis.hen
Hier wird zudem eßichtlich, dass das System bei der Eingabe von Befehletr
crDß- ünd Kleirschreibung unterscheidet
Bcdeuturg zusammer:
Die folgende Tabelle fasst die wichtigstcn mvsql Prompts und ihre
Bereil'für einen neuen Befehl
mysql>
EMartet die nächste zeile einer mehrzeiligen B€lählseingäbe'
einfachen
Erwartet die nä(hste Zeile und die Vervollständigung eines S$ings, d€r mit einem
(")
begonnen wurde.
Anführungszeichen
der mit einem doppelten
En^i,artet die nächste Zeile und die Vervollständigung eines Strings,
Anführungszeich€n ( "') begonnen wurde.
miteinem
EMartet die nächstezeile und die Veruollständigung eines Bezeidneß' del
Bachick (") begonnen wurde.
der mit/* begonnen
EMartetdie nä.hste Zeile und dievervollständigung eines KommentaE
Täbelle
l0.l:
Dietypischen Prompts des mvsql-clienls' Quelle: http://deunvsqkon
Anlegen einer Datenbank
Zunächst schauen wir
Sie kdtroen üun leicht eine eigeüe Datenbank im System ariegen
bereits zu firden
einmat mittrilfe des Befebls sH;u DATABASES nach, welche Datenbanken
sind:
mysql
>
SH0I oATÄBÄsES:
+ ---- ---- ---- ---+
lDatabase
+---- ---- ---- ---- +
I
i
nfomati on
schema
flysql
phpnyadmin
+---- ---- --- ----+
3 ro\,{s in set (0,00 sec)
Um Pinc
Bei den obigeD Datenbanken händelt es sich zmächst nur um Systemdatenbarken
DATABASE' IIn Hinbli'k auf
neue DatenLank anzulegen, verwetrdct man der Befehl CREATE
für eine ArztPnxjs ani
das Beispiet des fblgenrlen Abschitts legen wir die Datenbank
> CREÄTE DATABISE arztpraxisi
ouery 0K, 1 rou affected (0,00 sec)
Im let*
System:
nysql> S[0I
eeschieü
mysql
DATAEÄSES'
---------+
I Database
i
a
nformati on
rztp raxi s
n\ysqt> |
Databä3
I
Zv
schema
mysql)
mysql
phpmyadnin
+
------------
BeC,A
Empty 5
--+
Legetr S
mysql>
-)
-)
ouery
0
mysql>
ouery (
PrüfeB
i
Bysql>
lTab-lr
'!0.2.3 Arbeiten mit Tabellen
Beirachten wir nun ein konkretes Beispiel: Ein Arzt möchte seiner Patietrtetrsramrn in
Form zweier Tabellen verwalten.6 Die erste Tabelle Porientefl enth:ilt den Kündenstamm,
in der zweiten Tabelle Tndikarronen werden Diagnosen ulrd Behandlungen zu den patietrten gespcichert. Folgende Abbildung zeigt die benötigte Sruktur der Datenbatrk im Rah,
m.n einec Fld'ionarF.r D" re n bdnlm od o I lr
I
indil
lPati'
+-----.
2 rüs
rysq'l>
I
FieI,
na-
1:m
gesa
ge§s
abg
5rG
rysql)
lFiel
DiI
Abbildung 10.8: lvlodelleiner einla.hen Parientendaterbank:
Die Täbellen
,a./br.e,und tndi,kation s\ehen nbet einl
1:m-Relatlon zueinander in Beziehung.
d.u
IEG
di.!
H.
6
Ein reales Slstem ist mit Sicherheit um einiges kompl.xel Zun pdnzipiellcn Verstijndnis genügt
al dieser Stelle aber das vorliescnde Beispiel.
i lilr
IL
IIn letzten Abschnitt wulde bereits die Modelldatenbank orztpraris erstellt. Nun muss dem
System mitgeteilt werden, dass diese für die kihftigen Allioner zu verwenden ist. Das
geschioht mithilfe des Befehls UStT:
mysq'l>
llSE arztpraxi
s,
Database changed
Zü Begirn ist die Datenbank leer. d.h , cs existieren noch keine Tabellen in der Datenhank:
> §HoI TIBLES;
tmpty set (0,00 sec)
mysql
Legen Sie also zunächst die zwei benöligten Tabellen an
mysql>
-)
-)
CRE^TE
T BLE patlenten (name
(vgl >Abbildung 10 8):
VÄRCHIR(20),
vorn.ne V^RCHAR(2o), geschlecht CHAR(1),
geburtstag
DÄTE, abgang DÄTt)i
Query 0K, 0 roHs affected (0,0I sec)
mysql>
-)
TIßLE lndlkatioien (nane llARC$4R(20),
datum DITE, hausbesuch B0{1, diagnose YIRCfiÄR(20)'
CREATE
-> behandlmg vlRcfllR(20))l
ouery 0K.0 roHs affected (0,00 sec)
P ifen Sie anschließend. ob die Tabellen koüekt eßtellt wud€n:
mysql>
SHoH
TlBLtSi
+ ------ --------Tables-in arztpraxi
I
+------ --------
s
llndikationen
lpatienter
+------- -------
2.oxs in set (0.00
mysql>
DESCRIEE
+
I
I
I
sec)
patlenten:
varchar(20)
varchar( 20)
geschlecht
geburtstag
char ( 1)
abqäng
date
date
+---------- +--------5
rol,./s
mysql
>
YES
YES
YES
I{U
LL
I,IU
LL
NIJ
LL
YES
YES
NULL
NULL
--+__----+___--+ -_--___-+_ __---+
in set (0,00
DESCRIBE
sec)
lndiktionen;
------- ---+--- ------+-- _-_+---_ +---___ -+-__-_ _+
I tlull I Kev I Default I Extra
I Type
I+ Field
------- --+----- ___-+-__ -+- -+_ - - - - - _+- - - - - -+
+
I
_ _ _
name
dätum
hausbesuch
di agnose
behandlung
7
varchar(
date
ti nyint(
värchar(
varchar(
20) IYES
r
I
YEs
) [ YES
YEs
20) |
20) IYES
_
_
_
NULL
NULL
IIU
IIU
LL
LL
NULL
Nach jeden Verlassen ales Systems muss erDeut duch der Befbhl
Datenhmk altuell a veMenden ist.
UsE
festgelegt wedeD, welr:he
Mthilfe des Befehls DESCRIBE können
Sn
uä!.gelnuns,hteFo.marautuoisen.srr,,l'lel"'bprülen'obd;FDatrnjpld"rdnrrabellen
!" hl gP\el7le werlP wprden äL,omäu{.h
sLhlü.sejwort
llu,Lg"l"-r.i, lr";,
mjt dpm
Nun gilt es die TahelJen lnit
Daien zu
*r",'""
3.";.1".:
iü
i"i""ffi "T':1":,#:L'i::#,1:H:11"11,i?H1?i;Xt:?!n:
,
XrsteUen Sie im Heimverzeichnis
des St3
ponpnrcn.t\t. oie ,,un;"b-'
Mayer
n
Herbert
ernp
",, ","" ,",," l^lflifen'rkPrs
7973-02-tt
Die eirzelnen Daten sin,t .1,,--L T^L-
rorrq6r.;
,;,
DlTl
ä;3,;.IOOO
,qecordsi 1
roctj.
lFrt
r
ps enten.rrc, rlT0 TtBrr paflenten;
OuerJ 0(,
Deleted:0 Skipped:0 l,llarnings:0
Mögijcberweise ist der pfad
zul Datei
sebuns seDü8, *. ,u. ,","i
s'"
^,s",
mysql)
FRoü
z
j ,"',,'.,", i .,,"", I
1.g:::'l::i:
-- -;-,"- - ---+-- -'- -j
i
Im
i :sz: 02 1l_l-_
i-.-'-i--'.-::'_" l'l
I NULL
- - -J
rolv in set (o.oo sF.,
Um nun reue Datensätze
in die Tabe
eEinzon sie
potjpntpn.t\t ,,
"'i."tus"l
"inrdLb di. TFxrdalpi
r",r*.
,'""ä'1,
)rp
drP
".,,"."
scärdpfle Dalei Fmeu, inporric'en. so rpD
sie zuoä.h\r 0", ,*,0",""-*,.'ioäu.
I
l
mysql>
/name
enzing
lZach
2 roHs'ln
Möchte
maßen
E
vc
nysql> 5E
+- -
------
lnahe
+--------.
Abraha.
t
rol{ affected (0,00 ser)
Entsprechende Tes abelien
finder Sie jim Begleitmaterial
sie können Datersätze auch
uueKr rm mysqtsystem
anlesen:
nJsql, IilSERT IilTo Datieiteh
0,".i olltTt"'"J'l?lln"'Pet".'.
SE
+---- ---
DEIErE FR0ll Datjenten:
Query 0t(,
lm
+--- ----
l
paHenten;
.1.1"13,,1
}4aver t tterbert
)
FRoM <Aüs
I{HERE <E
Schauetrr
l.':r
mysql
SELECT <I
SETECT
atrlupässp']. in de,
"1 s aniädbenu v;riue,rcn Lemumzprs abzurpepn über.
;;;:i'fi::"Hisdeq
+
zu arbeiro
Die Syate
1 roy affected
-ir a",.,.;.:r;;; *,i;,::1'*l'1
Sfl.ECT
r ------+-
h'.'reo'07-r2',ilurl);
Mayer
l',enzi ngt
Zach
4 ro*s itr
Beachten 5
Suche km
Aufähnliche Weise lasser sich
auch Datercätze ändem:
nusql >
ääil',1:'i':"1':;:::i:,'il B3'::::,.,=
Horvs marcheo: i c},urg"o,
i -triiirg., o
lname
5An
-),.
tsa|'07 12'l,HrRr näme=,,,/artDann,;
I
l.{enzi
nrr
lzach
+-
8
I
Nac.hdem
\N
BerrpDD,. DiF zeichenromt"ä", ä;;:; llri",::'^'*'chen voneinander
die'em
Ddienf.ld
mario,e,.'ur vprhigunt o"" o"ää-".
'/Lr
Eo.h lFine Inior
-1", "iPheo
r,r"r, a.. r"*,a,,,-.,ii. ä;ää"*j:;$ilTtT1:f:;;::1x,l,e Form auhvei+n Dcr
r,i".,i." r*
10.2.4
dpm \amen
-
-------
2 rows fn
Der Variabtentyp Bo0L (booteanl
wird in der rjatenbmk ats
ti
nyi nt [tiny Inieger] umgesetzt.
10.2 Datenbankpraxit
10.2,4 Abfragendurchführen
Nachdem Sie die Datenbank mit eiriger Wertfl geftillt haben, ist es an der Zeit, mit den Dater
zu arbeiter, sp ch: einige Abhager duchzuhihetr. Dies geschieht mit d€r SElEcT-AItweisung.
Die S].ntex des Befehls stellt sich folgendermallen dar:
so'll abgefragt werden?>
uelcher Tabel I e?>
IIHERE <l,lelche Bedingungen sollen erfüllt uerden?>:
SELECT ünd FRol'l sind zwingend erforderlich, die I,JHERE Bcdirgun8 ist optional.
SELECT <l,las
FRoM <Aus
Schauen wir uns zunächst cinmal alle weiblichen Patienten itr der Stammdatei an:
mysql>
SELECT
+
FRol,l
patienten
IHTRE
geschlecht-'t'i
+-----------+- -+- - - - - - - - - - - -+- - - - - - - - - - - -+ i
+
vorname I geschlecht I qeburtstag I abgang
lnane
I
- -+- - - - - - - - - - - -+- - - - - - - - - - - -+- - - - - - - -+
+ ---- +
Menzinqer
EIvira
I
I
Iv
| 1962-07-04 | NULL
Zach
Petra
r{
I
I
11976-11-07 INULL
- I - - - -+-----I
I
+ -2 rous in set (0,00 sec)
----
--
--
-+-
--
--
-+
Möchte man alle Patienten ausfitrdig machen, die trach 1s5s geboren w.UIden, so ist folgender
maßen vorzugehen:
nysql>
.
Inane
lvorname
SELECT
FRoll patlenten IHERE geburtstag>'1960-01-0f i
+- - - - - - - - - - -+- - - - - - - - -+- - - - - - - - - - - -+-
Peter
Herbert
Menzinger
Elvira iH
1984-01-03
1973-02-11
1962-07-04
Zach
Petra
1976-11-07
Abraham
l,4ayer
+-
- ----- +
geschlechL lqeburtsl-dg
---------
-+-
-------
4 rovis in set (0,00
m
m
-+-
----------
-+-
----------
I
+
abgang
I
NULL
NULL
-+
NULL
NULL
-+
sec)
Beachten Sie, dass wefte bzw. Zeichenketten stets in Ticks (') eingescblossen werden. Die
Suche kann mithilfe der logischen B€fehle A D bzw 0R eingesch*inkt oder €rv/eitert w€rdetr:
nysql >
_)
+-
SELECT
.
FR6l,l
patlenten IHIRE Seburtstag)=' 1950-01-01'
ÄllD geschlecht='r';
- - - - - - - - - -+- - - - - - - - -+-
lnane
-
+ ---- ----+--------+
I abgang
lvorname lqeschlecht lseburtstaq
I
Menzinser I Elvira I
| 1e62-07-04 | NULr
1976-11-07 NULL
I Zach I Petra I - - +-----------+----- -+- - - - - - - - -+-| - - - - - - - - - - -+-| - - - - - - -+
I
v,r
vr
2 rows in set (0.00 sec)
I
I
Die Abftage bestimmter Eigenschaften eirer Tabelle geschieht folgerdermaßenl
mysql>
SELTCT
nane,geburtstag
FR0l,l
pätlentei;
Der obige Befehl generiert die Gebutstagsliste aller Patienten. Sollen nü die Geburtstage
dff m:hnlicher Patienten ausgegeben werden, so geschieht das über folgenden Befeht:
mysql)
SELECT
na[e.geburtstag FR0ll p.tienten ]illERE geschlecht='m'i
Die Ausgaben der Befehle könncn aüch gcordnet clfblgen. Dies geschieht druch Verwendung
Wir int6
eine Abfi
nysql>
I
-)E
->r
lname
der Scblüssciwörter 0RDER BY:
Abralr.
Abrah.
mysql>
14enzit
-)
sEIECT nane,geburtstag FRol,i patienten
0R0ER BY
llenzir
geburtstag;
Zach
Funktionen verwenden
MySQL bietet eine Vielzahl von integ erten Funktionen. Ein Beispicl ist die nachfolgend
druchgetuhrte Berechnung des Alters der Patienten. Dabei wird übcr die Funktion CUR
DATE( ) zuaächsi das aktuelle Täh bestinnnt. Mithilfe der Funktion YEAR( ) wird die Differenz zwischen aktuellem lahr utrd GebutsjäIr ermittelt. Das Schlüsselwort As ordnet dabei
das luktionsergebnis dem sogenannien Alias iahre für die Ausgabe zu.
mysqr
+
'
SELECT
name, geburtstag.
CI,RDATE(
-) ytlR(CURD^TEO )-YEIR( geburtstag)
-) lS Jahre FR0l4 patlenten;
---
lname
-+-
----------
I
geburtstag
-+-
!
1984-01-03
Menzi nge
Habel äh
Za ch
r
-+- - - - - - -+
CURDATEO I jahre I
1935-06-06
1976 - 11- 07
2070 -42-24
t962-07-04
l94A-47-72
----
6 rows in set (0,00
-+-
.<Tabel-
oblekci
durrfud
gleicbDä
Patienls
dies ge'I
mysql>
-)1
----------
2014-02- 24
2014-O?-24
?010-02-?A
2014 -02- 24
t973-42-77
l,läyer
),
Auf die
D*ES
26
37
48
=:-=
75
34
2070-42-24
----------
->F
62
-+-
----
-
+
sec)
Dic obige Besti]rnnllllg des Alters ist zunädlst $ob, da die genauen Gebu,"tsdaten nicht bedcksichtigt werden.
|:=
Af,ü\trt
det
I*frri
s-anl
g@d6
llränll
a
10.2.5 Tabellen und Relationen
Eine relatiorale Datenbark ist, wie bereits in Abschnitt Grundbegrrfe erläuielt, düch Verknüptungen zwischen einzelren Tabellen gekenMeichnet. Sehen wir uns zuoächst einmal
an, wie n1an Informatioren aus zwci Tabellen gleichzeitig nrtzt. Dazu verwerden wir wieder die beiden Bcispieltabellen pdfieflterl und indikationen.
I
10.2 DatenbankpExis
Wir intercssiercn
ul1s daftü, welche Patienten bercits diagnostiziert
ü'urder. Dazu wtud
eitre Abftage über beide Tabellen duchgeftihrt:
mysq l
>
-)
SELECT
FRol,l
->
l ndl kntl onen
patienten,n6he=lndjkationen.name;
Ftlenten,
l{llERE
-------
+
patlenten,ndle, lndlkatioien.dlagnose
-+-
---------
-+
ldiagnose
- ---+
lname
I
+- - - - - - - - - - -+- - - - - - -
Abrahan
Abrahan
Menzinger
Menzinger
Grippe
l||i
ttel
ohr
Frakiur
Fraktur
Rheuma
+- - - - - - - - - - -+- - -
-
--+
Auf die Attribute der unte$chiedlichen
Tabellen
wird durch Arhängen der Ergihzurg
zurückgegriffel Die Schreibweise erhnert an die Verfahrensweise bei der
objektorientiertm Progranmierung. \tgl. Kapitel s. Was mit den obigen Befehlen de facto
duchgefiihrt wude, ist eine Ve*rtüptung (ein sogenannter /ojn). Dies lässt sich auch mit dcm
gleichnamigcn schlüsselwort erledigen: wenn Sie sich für eine komplette Übersicht über alle
.
<Tabel I ennane>
Patienien trebst de.n an ihne.n vorgcnomrnetren Behandlun8ea intercssiererl, dann geschieht
dies gemäß des Befehls:
mysql>
-)
SELECT
LEFI
+ FRllll patienten
JoIil lndikationen
-> pati enten. nanFi ndi kltl
oil
onen. nane;
Das Ergebnis des Befehls zeigt >Abbildüng 10.s.
tn*
tohtr
tleRr*h tsdufritas lab@ir
lffi
lctu
lhaBb.$h
I
däsmP lb.rrädtutrr
I
s+4.Blrur
lrb6h
1s{-61-§3 I {ulr
l^brdl'
re73'@'u lNr
I xulr
1§{r4 lrur
l&ulDger
1N-s7's lur
lhnzr{er
Ds'e'6 1:.1§'6-eT leLL
D75 r{7 le
I b.r
lsnrl? IRL
luL
abbildung 10.9: Eqebnis
eines
J0l
N
Befehk Die lrhahe zweier Tabellen werden veknüpft ausgeqeben.
eitre sogenannte Iinke Inklusionsverknüptung erstellt Linke
Inklusionsverhüpfingen schließen alle Datensätze aus der ersten (linken) Tabelle ein, arch
werm keine entsprechenden Wclte für Datensätze in der zw€iten Tabelle existieren. Im vorliegenden Beispiel ist dieses Verhalten an den Zeilen der Patienten Mayet Habelah und wafimann e.rsichtlich.
Mii dem LEFT Jol{-Befehi wird
10.3 Schnittstellen zur Datenbank
Der Zrgmg zL, einer Datcnbank übcr das KommandozeilertoDt rnysqt ist kompliziert und
fehleranfällig, irsbesondere dann, rverur die Anzahl der einzupflegenden Darer und Tabellen uniiberscharbar wird. Der folgende Abschnitt stellr eir ge \,Verkzeuge und Schnitistellcn vor, die den Umgang mit eirer Datenbank erleichrem. Das Beispiet des tblgen<len Teil
kapitels basiefi auf dem Daienmaterial eiües Tuto als zu rclarionalen Darenbanken auf
http://de.wikiboaks.ary/wiki,/SQI. Dank gebüht an dicser Stelle den Autoren, die sowohl
das Tutorial als auch das Beispielnaterial zul toeien Weiterverwendung ünte. GNU IDL/
Crcativc Cornmons License zul VertuSurg gestellt haben. Bei der Beispietdarenbaük handelt es sich um die Shuktuderung der Abläufe in einer Autoversicherun8. Nähere Informa
tionen finden Sie auf der genannter Intemetseile. Im vorliegenden Abschdtt geht es elnzig
und allein um den Zugrift auf die Daten und dercn Manipülarion und Veftrbeitung mii verschiedcncn werkzeugen.
10.3.1 phpMyAdmin
ZuI Adntinistraiion der MysQl-Datenbank der virruellen Lerrumgcbung haben Sie phpMyAdmin bereits beim Anlegen cires neuen Bcmrtzers tu Abschnjtt Ersfe Sclxiile kcnxcn8elernt. Das Tool kann aber weit mehr: Mit sciner Hilfe lassen sich neue Datenbankcn ersrelen,
einsehen und auch per SQL abftagen. Dic dafiir notwendigcn Befehte haben Sic in vo.angegangenen Abschnitt kennongelemt.
Das Erzs
sQL-Ski
material-
/*
Tabel
CREATE']
(ID
Ab!
tlil
Fal
c0t
Listing
ll
schLüssd
0
Schlussd 0
Nach de
gang itr
/*
Basi
i HSIRT
land'):
Skriptunterstützte Erstellung von Dätenbanken
Zrüächst soll eine Deue Datenbanl \.orbereitet r{erden. Loggen Sie sich per Browser iiber detr
Link localhost/phpnyadnm in das phpMyAdrain-FroDieüd ein. Eßtellen Sie eine nere Daterbank mit den1 Namcn yersrtherung. Wäihlen Sie als Typ ,(ollorr'on. Berätisen Sie anscbließend
den Knopf Anle.ge.n (>Abbildung 10.10).
INSERT
I IISERI
INSERT
I I{SERT
IIISERT
I IISERT
ristirE
r
HiIrtE t
Ihtenh
Sb
len Si€
Das
Impotfr
m
einc
l-erDm
li.h gs
Abbildung 10.r0:
Der zusriff aul dle Dätenbank ir der virtuellen Lernumg€bung kann auch per Browser aus dem Hostsyn€m heraus erfolg€n, wein lhnen die lP-Adresse der vlrtuellen Netzwerkkarte bekannr is1,!gt. Kapitet 6. n \otieger\.
den Fallwi.d die neue Dar€nbatu Veßichetung anseleql.
l0 3 Srhnitrrtell€n
zur Dät nbänk
Das Elzeugen der Daientabellen sowie das Ehpflegen der Stanmdaten werden bequem per
SQL-Skript erledigt. Das enisprcchende Slaipt namens versic,herung.sql finden Sie im Begleitmateriä]. Die Tabellen der Datenbanl werden aln Anfang des Slaipts angelegtl
CREATE TABLE
{
Versicherungsvertrag
ID
Vertragsnunfier
INTEGER
VARCHAR(20)
NOT NULL AUTO INCREMENT,
NOT NULL.
Abschl
DATE
I{OT NULL.
I{OT NULL,
I{OT NULL.
Art
ussdatum
CHAR(2)
i4itarbei ter ID
INTEGER
INTEGER
Fahrzeug-ID
Vers i cherungsnehmer ID INTEGER
C0NSTRÄINT Vers I cherungsvertrag
I,IOT NULL.
flOT NULL.
PK
PRIl'lARY KEY ( ID)
):
Listing l0.l :
En eugen der Tabellen durch das skript tEßichetung-sql Die \oniegerde Tabelle wnd mit einem PrimäF
schlüssel (lD) veßehen. Das Schlüsselwort coNSTRAINT sorgt dafür, dass ein Benutzer der Datenbank den ängegebenen
Schlüssel (lD) nicht verändern kann.
Nach der Definition der Tabellen folgen die eigentlichen Daten, die in Iolgender Form
Bdog in dds Slripr findPn:
Basi sdaten */
INSERT Il{T0 Fahrzeughersteller (NAME, LAND) VALUES
/*
('Volkswaqen', 'Deutsch-
land'):
INSERT Il{T0 Fahrzeugherstel I er (NAME, LAl,lD) VALUES ('opel' ,
INSERT 1NTo Fahrzeughersteller ( NAME, LAflD) VALUES ( 'Ford' ,
INSERT
INSERT
INSERT
INSERT
i I{TO FahTzeugtyp (BEZEICHNUNG,
I
I{TO FahTzeugtyp
(BEZEICHNUNG,
HERSTELLER-ID) VALUES
HERSTTLLER-ID) VALUES
INTO FahTzeugtyp ( BEZEICHNUNG, HERSTTLLELID)
INTO FahTzeugtyp ( BEZEICHNUNG, HERSTELLER-ID)
Listing r0.2: [4itdem sQl-Befehl
I
sERT
xin
VALUES
VALUES
'Deutschland'):
'Deutschland');
('Polo', 1);
('Golf',1);
(
(
'Passat', 1);
'Kadett'
,
2)
;
INrowerdendie Daten über das Skript in die be§lehender ]abellen eingefüqt.
Hinter dem Slaipt veüergen sich somit gewöhl iche SQl--Befehle, die Sie bercits in Abschnitt
DarenbdnkpI.Lros kennmSelemt haben.
Das Skdpt karrn trun aus der phpMyAdmin-Oberfläche heraus aulgerufen werden. Dazu wäh-
len Sie die neu angelegte Datenbank yeßicherunA aus utrd begeben sich zum Untemerü
Importr'eren. Hier whd d€I Pfad zu]n Skript versicherung.sql ange8eben. Die Sloiptdatei muss
in einem zrg:inglichen Bercich, also z.B. im Heimveüeicbnis des Standärdbetrulz ers der
Lemuügebung, liegetr. DUIch Betätigen der Schaltfläche O(wtud der ImportvorSäng scbließlich gestärtet.
01
SELECT
02
03
04
05
06
01
08
09
FR(Ii
10
11
12
13
14
15
16
11
Abbildung t0.1t: lnrportier€n voi Datentabellen
über
eir
18 rHtn
19 GRoll
20 0RoE
SQL Skript
Abfragen durchführen
Nach dem Import stehen lhnen die Daten zu] WeiteNerarbeitung
zü Vefügung (>Abbildung
ro.r2l.
Uning
rG
ErlaüeJ,
ln den z,l
neämerl
ite8d
ZeileE 1l
hohe rm
gluppkr
Sf,häds
Abbildung '10.12:
Aus der phpllyAdmin-Umg€bung kanf bequem aufdie Daten der Dat€nbank zugegriffen werden.
Über dcn Roitor,SQr gelanger Sie zu einem Frontend, .las .tie direkie Eingabe von SQLBefehlcn gcstattet. Testen Sie das Frontend durch die folgcnde komplexe Abtrage: alcsucht
werden dic Adresse, die Hiihe des Gesants.hadens und die Anzahl der Schadensfä11e von
Versicherungsnehmern der VcrcicherLng im lahr 2008, die Unfälle über die Versicherung
abgercchnet haben. Die zugehörige SQL Abftage imerhalb der Modelldatenbank lautet:
10.3 schnittstellen zur Datenbank
01
SELECT vn.l{ame,
02
vn. Vornane,
03
vn. Strasse,
04
vn.Hausnunmer AS HNR,
05
vn.PLZ,
06
vn.ort,
07
SUl,4(sf.Schadenshoehe)ASGesämtschaden,
08
CoUNT(sf.lD) AS Anzahl
09 FRoM Versi cherungsnehmer vn
10
JoI N Versicherungsvertrag vv
0N vv.Versicherungsnehmer ID = vn.ID
11
12
JoIN Fährzeug fz
13
0N fz.ID = vv.Fahrzeug ID
14
JoIN Zuordnung SF FZ zu
15
0N zu.Fahrzeug ID = fz.ID
16
JoIN Schädensfall sf
0N sf.ID = zu.Schadensfall-ID
17
18 I,JHERE EXTRACT(YEAR FROM sf.Datum) - 2OO8
19 GRoUP BY vn.Name, vn.Vorname, vn.Slrasse, vn.Hausnummer,
20 oRDER BY Gesamtschaden. Anzahl:
l"istinq 10.3:
E
vn.PLZ, vn.0rt
Komplexe SQL Abfraqezu Schadensfällen:Das Beispieldemonst ert die Mächligkeit der Spache
äuterrJng det AbJt.lge
In den Zeilcn 1 bis 6 wird zunächst die Änschrift der Kunden aus der TabcIIe Versrcfierungs
ne,hmer (Kürzcl: r"r) entnonmen. Itr Zeile 7 wird die Summe der eingercichten Schäden, in
Zeile I die Anzahl der Schäden ermittelt. Ürber mehrere JoIN AnweisungcD werden in den
Zeiletr 10 bis 17 die notwendigen Verlolüptunger zu den fitu die Bercchnüg der Schadens
hajhc und Schadetrsnunr]]ler rclevarten Tahellen heryesteltt. Das Ergebnis der Abfrage wid
grupp;ert nach Nalne, Vol'r1ame, Adresse und sofiiefi nach Gesämtschaden und Anzahl der
Schäder ausgeSeben (>Abbildrng 10.131.
abbildung 10.13: Ergebrls dersQLAbllage
aus phpllyadmln
E
Relationen herrtellen
L'n vorliegenden Beispiel lassen sich die Beziehungen zwischen den Tabollen über die rnächtige Abftagespmche SQL auf1äsen. Wer die explizite DcfinitioD vo. Beziehun8en im Stil
moderrer Werkzeuge bevoürgt, Iindet Hilfb in Form des ,esrgner-?ools itr der phpMyAdmin-
Die
däz
Eabc
Umgeburgr Damit lassen sich Beziehuüger zwischen Tabellen komfortabel her- und darstel-
ler (>Abbilduns
10.1a).
Abbildung10.14: phpl',lyAdmin bietet in torm
des Designerlook ein grafisches W€rkzeug zur Eßtellunq von Relatlonefl
Zrlgrifi
la
dazu h
\ün
ES
Ih
E
TY;
-rf
10.3.2 Zugriff
aus Openoffice,org Base
Richtis komfortablen Zusdff auJ relatiorale Daterbanken bieien Frotrtetrds im Stil von
Mictosofi Accesßbzw. Openolficeory Base.Das lolgende Beispiel zeigt den Zugriff und die
Nutzung der Beispieldatenbänk aus Openoffice.org Base heraus übet IDBC Uava Database
Connectivity). Dazu muss zunächst die IDBc-Scbnitistelle installiet werden. Gehen Sie
dazu wie folgt vorl
EIE
lD
EN!
It
&
&
lnstallation des MySQL-JDBC-Connedors
E
Laden Sie d.en MySQL-IDBC Connector \,ron http://wwwmysql.com/ptuducts/conn-oc
for auflhren Rechner henmter- Dia Schnittstelle befindet sich in einem Amhiv. das mit
der Bordmitteln des Betiebssystems zu entpacken ist.
E
Im Inneren des Amhivs firden Sie ein lava-"../'ar Archiv, welches Sie an eitren beliebigen Ort im System (arn basten in eiren Unter.rrdner ldbc tu Ihr Heimverzeichnis) ko
piercn.
-q -rrl
10.3 Schnittstellen zur Datenbank
E
Die Java Bibliothek müss oun in Open0ffice.o€ angemeldet werden. Begeben Sie sich
da in das Menä -L'rtd s/Optionen/OpenoJfice.org4ar a. Ürter den Lrnk C/ass Patfi m[ss
trul1 der Pfad zurya|-Daiei definiert werden (>Abbildung 10.15). Bestätigetr Sie die Ein
gabc mit Or rnd starten Sie Openoffrce rer.
Abbildung 10.15:
Einbinden des I\4ysQL JDBc connectoß in
opeiofiice.org
Zugriff auf eine MySQL-Datenbänk
Nun kam der Zugriff auf die Beispieldatenbank mit dem Base-Frcnterd erfolgen. Gehen Sie
dazu folgendemraßen vor:
E
Starten Sie Openoffice.ory Basc übcr das M(rnü lnwcndungenlBüto/Openolfice.ory
Datenbonk.
E
Wähler Sie den Putrkt Verbindttng zu einer Datenbank heßtellen und dort als T],p
MySQL.
E
hn Dächsten Schritt wird der Schnittstellent!,T aussewählt. Wählen Sie an dieser Stelle
/DBC aus.s
E
Nun wird die Verbindung zür Datcnbanl gctcstet. Gehen Sic im folgenden Dialog den
Namer der Daienbank sowic des Rechnerc ein. aufwclcham sich di() Datenbank befitr
det. Dies sollte in der Regel localhost seil7. Teston Sie die Anbindung an den Treiber
durch Betäiigen der Schaltfläche -KJosse fesren (>Abbildrmg 10.16).
e
Auf windows Systemen wird an dieser Stelle in der Regel ODBC (Open Database Conne.tivityl
ausgeNtihlt.
SchließI
ba* sir
SQI AbI
hergeste
über die
lässt
sid
I0.3.3
Äbscbli(
auf eioe
sich des
zllnäcl$
jnn/.1r"
Abbildüng 10.15: Anbindungvon Openoffice.org
E
Ba5ean die [4ySQL-Daienbank via JDBc
hn fichsten Schritt wüd die Benurzeüuthertifizierung eingerichret. G€bpn Sie .n
dieser
Stelle Ihren Berutzernamer ein urd markiercn Sie das Feld fenr .or e_rIor.lerl.h.
Auch
an dieser Stelle haben Sie die Gelegenheit, die Verbindu nS zur DaretrbalL zu testen.
E
Schließlich haben Sie noch die Getegenheit, die bestehende Dateübank pomanent im
OpetrOtrice.org-System anzumelden. canz zum Schlüss wid .lie Datenbankveüindmg
als Opcnoffi ce.org Base-Dokumert abgespeichert.
Nach dem Speichem stehen die Tabellen der Datenbank in der Openoffice.org Baso_Umge_
büng zur weiteren Bearbeitung bereit. Sie haben oun Gelegenheit, weitere DatJnsätze
in die
Datenbank einzupfl egen [>Abbilduns 1 0.17).
sudo
cI
/usr/li
Mithilft
MysQL
01
i?o
o2 publ
03
Fr
04
05
06
o1
08
09
10
11
t2
13
14
15
16
77
18
19
20
2t
zz
23
21
25
Abbildung r0.r7: lr
10 DE
der op€noffice.org Base Umgebung kann bequem aufdie [4ySQL Datenbankzuqeq
ffen werden.
h.il
10
I
§rhnitkt.llen zur DätEnbänk
Schließlich noch ein Wort zu detr Relationen zwischcn den Tabellen: In der Modelldatetrbatrk sitrd zunächst noch keine Relationer vorhanden, da diese prinzipieli über die
SQl-Abfrage heryestellt werden. Sollen Relationen in der Openoffice.org Base-Umgebung
heryestellt werden, so gelingt das bei der Anbindung an MySQL dcht mithilfe des BaseWerkzengs (Menüpunkt E lxas/Relationen). Die DefinitioD votr Relationen muss vielmehr
über die phpMyAdmin-Schnittstelle durch Direktzugriff aul die Datenbanl erfolsen. Dies
lässt sich aber leicht mit dem irteg erten Desigrer erledigen, vgl. Abschnitt phpMyAdnin.
10.3.3 Zugriff aus einem Java-Programm per JDBC
Abscbließend sehen wir uns noch an, wie man mit ein paar Zeilen Java-Code spielend leicht
auf eine MysQ]--Datetrban} zugei{en und Abhagetr durchfühen karn. Dazü bediert m€n
sich d.es IDBC-Connecto$, den Sie bereits aus dem }€tzten Absclnitt kennen. Kopierctr Sie
zurächst das ,ar-tuchiv, in welchem der Comector enthalten ist, in das entsprechende Unterverzeichis im lava-nassenpfad. Dieses liegt in der lerrrurngebung im Veueichnis / srAbl
jwn / <J avav ersio n> /ire / lib / e xf.1t)
sudo cp mysql-connector-java <Version>-bin.jar
/usr/l i b/jvm/<,lavaversi on>/j rell i b/ext
Mithille
des folgenden Java-Pmgmmms können Sie nun rlen Z[griff auf eine bestehende
MysQl-Datenbank tesi€n:
01 lmport javä.sql.*;
02 publlc class l,4ysQlAbfrage {
03 public statlc void main(String args[]){
04 Connection con - null:
05 Statenent stnt - null:
06 Resultset rs - null:
07
08
09]
10
11
12
13]
14
15
16
17
try t
Cläss.forl{ame("com.mysql.Jdbc.Driver");
catch (ClassNotFoundExceptione){
e.printstäckTraceo;
System.exlt(1);
try{
con
= Driverl.,anager.getconnectlon("Jdbc:mysql://iocalhost/
Versi cherung", "<Benutzername>" , "<Passvort>" );
stmt = con. createstatement( ):
rs : stmt.executeQuery("SELECT Nane, Vorname FR0il
Mitarbeiter
ORDER BY Name'');
18
19
20j
21
22
23
24j
25
( rs.next( ) )t
Systen.out.println("Name: "+rs.getstring(1)+",
"+rs. getstri nq( 2) ) :
while
rs. cl ose( );
stmt. cl ose(
Vorname:
);
con.closeo;
cätch ( SQlException e ){
10 Der Unterpfad kann in Abhüngigkeit von der veMendeten lava Virtual Machine unters.hiedljch
26
27
e. pri ntStackTrace( )
System. exi t( 1):
:
2A
29
30]
Listing r0.4: Abfraqe einer l\rlySQL Datenbänk aus einem lava-Programm heraus. Die Kombination Datenbanknam€/8enuL
zelPasswo't (ze e 1 5) ist den vorliegenden Gegebenheiten anzupassen.
Erläuterung des Listings
Zü Beg;nn des Pro8ramnrs werden die lava-Bibliotheken ,?yo.sq/. * impo iert (Zeile 11. In der
nain-Klasse werden iIr der Zeilcn 4 bis 6 veßchiedene Variablen der Klassetrttryen ConnectJ on, Stalement und Resul tSet festgelegt. Die Variable con (Tl.p: Connecii on) wild in Zeile 15
dalilr vol\vcndet, eine Verbitrdrurg zuin MySQL-SeNer aufzubauen. Dabei siDd SeNemame
sowic Berutzemame und Passr,rort (im Modeilsystem: ,,nutzerhutzer") zu iibergeben. Mithilfe
der Variablcn stmt fTypi Statement) whd dic eigentliche SQl-Abtuage iibergeber (Zeile 17).
Dercn Erycbnis wird in der Variablen rs (TJ,?: Resul tsetl abgelegt. ln der Zeilen:18 bis 20 werdcn dic Ergcbnisse der Datenbankabfragc, die in der Variabler rs enthalten sind, miüilfe de.
setstrins-Methode ausgelesen und ausgegeben. Alle otrelen Verbindungen werden in den
Zeiletr 21bis 23 wiedo geschlossen. Das Ergebnis der Abfrage zcigt >Abbildrrng 10.18.
Abbildung 10.18: l4ith:lfe
der JDBC Schnittrtelle ]assen sich bequern SQL AbfGgen ausvorlrandenen Datenbanken
Herunterladen