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