2.4 Datenbanken 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 Datenbanken in der Medienbranche. . . . . . . . . . . . . . . . . . Datenerfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Datenbankentwurf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Datenbankmanagement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 155 157 166 169 171 2.4.1 Mediendatenbanken s Atomic View s CatDV s Culumus s Bento s Expression Media s Filemaker s FotoStation s Microsoft Access s MySQL s Portfolio s PreStore Archive s QPict Diese Digital-AssetManagementsysteme (DAM) werden in der Medienindustrie genutzt, um Daten systematisch zu erfassen, zu verteilen, zu finden und zu archivieren. Siehe auch Seite 170. Datenbanken bei Amazon Bilddatenbank mit gescannten Buchseiten (Search Inside) Kundendaten, z.B. Name, Empfehlungen Buchinformationen, z.B. Titel, Preis, Rezensionen Suchvorschläge Shopsystem, z.B. Warenkorb, Merkzettel Abb.: Amazon 154 Datenbanken in der Medienbranche Wir merken als Anwender normalerweise nichts davon, aber ohne Datenbanken wäre die heutige Medienbranche unvorstellbar. Datenbanken sind der wertvollste Schatz unserer globalisierten und vernetzten Medienwelt. Nicht Wenige sind durch Datenbanken zu Milliardären geworden – FacebookChef Mark Zuckerberg ist noch keine dreißig Jahre alt! Eine Datenbank hat die Aufgabe, eine große Datenmengen in einer strukturierten Form widerspruchsfrei zu speichern und vor Verlust und unbefugtem Zugriff zu schützen. Ob Print- oder Digitalmedien: Datenbanken finden sich überall. Einige Anwendungsbeispiele sind: s Auftrags- und Kundendatenbanken s Digitale Medienarchive s Print-Workflow von der Auftragserfassung bis zur Ausgabe s Personalisiertes Drucken s Shopsysteme s Suchmaschinen s Content-Management-Systeme s Lern-Management-Systeme wie Moodle s Soziale Netzwerke wie Facebook s Enzyklopädien wie Wikipedia Nun sagen Sie vielleicht: Ich bin Mediengestalter/in – Datenbanken ist Thema der Informatiker. In der Tat erfordert der Umgang mit Datenbank und erst recht deren Entwurf fundierte Kenntnisse auf diesem Gebiet. Dennoch ist die heutige Medienbranche so stark von der Informatik abhängig, dass alle Beteiligten zumindest eine gemeinsame Sprache sprechen müssen. Dies bedeutet, dass Sie als Mediengestalter/in ein Grundverständnis von Datenbanken benötigen. Dieses wollen wir Ihnen in dieser stark vereinfachten Einführung vermitteln. Konkrete Anwendungen von Datenbanken finden Sie für den Printbereich in Kapitel 8.3 über Personalisierung und für den Digitalbereich in den Kapiteln 10.5 über dynamische Webseiten und 10.7 über Content-Management-Systeme. 2.4.2 Datenerfassung 2.4.2.1 Karteikarten Datenbanken Wie hat eine Datenbank ausgesehen, bevor es Computer gab? Es waren Kästen oder Schubfächer gefüllt mit Karteikarten. A–E F–L M–R S –T U–Z Kd.-Nr. 123 Fritz Adler Hauptstraße 23 88214 Ravensburg Tel. (0751) 123456 E-Mail [email protected] Das Beispiel zeigt die Karteikarte einer Kundenkartei. Zur eindeutigen (konsistenten) Kennzeichnung der Kunden dient die Kundennummer (Kd.-Nr.). Da für jeden Kunden genau eine Karte angelegt wird, ist gewährleistet, dass Daten nicht doppelt (redundanzfrei) erfasst werden (siehe auch Seite 158). Durch das alphabetische Sortieren der Karten nach Nachnamen wird ein gezielter Zugriff auf die Kundendaten möglich. 2.4.2.2 Formulare Am Prinzip der Karteikarte hat sich nichts geändert, nur dass die Eingabe elektronisch erfolgt: Formulare ermöglichen ein anwenderfreundliches „Einpflegen“ von Daten in eine Datenbank, ohne dass hierzu Kenntnisse über die Struktur der Daten benötigt werden. Der wesentliche Vorteil von Formularen besteht jedoch darin, dass bereits bei der Datenerfassung eine Überprüfung auf Vollständigkeit und Korrektheit der Daten erfolgen kann. Heutige Datenbanksysteme erkennen beispielsweise: s Fehlende Eingaben s Falsche Eingaben, z. B. vierstellige Postleitzahlen oder E-Mail-Adressen ohne @-Zeichen s Rechtschreibfehler, z. B. fehlende Großschreibung Die Systeme sind so programmiert, dass sie einen Datensatz erst dann akzeptieren, wenn er vollständig und, soweit durch eine Software überprüfbar, fehlerfrei ist. Das System stößt an seine Grenzen, wenn der Anwender (absichtlich oder versehentlich) falsche Eingaben macht, die für die Software nicht als Fehler erkennbar sind, z. B. falsche Namen. Ein weiterer Vorteil von Formularen ist, dass der Anwender nicht alle für die Datenbank benötigten Daten eingeben muss: Im Beispiel wird die für die Datenbank zur Identifikation des Kunden notwendige Kundennummer nicht durch den Anwender erfasst, sondern vom System einmalig und eindeutig vergeben. Würde zufällig ein zweiter „Fritz Adler“ im selben Haus wohnen, wäre er dennoch eindeutig identifizierbar, weil er eine andere Kundennummer zugewiesen bekommt. Eine Verwechslung ist somit ausgeschlossen, es sei denn, der Postbote liefert an der falschen Tür ab … Formular (OpenOffice) Formulare ermöglichen eine übersichtliche und strukturierte Eingabe von Daten. 155 Band II – Seite 854 10.5.6 Datenbankzugriff Ein dritter Aspekt, der die Datenerfassung über Formulare unersetzbar macht, ist die weltweite Verfügbarkeit: Über Webformulare lassen sich Daten mit jedem Computer erfassen, der mit dem Internet verbunden ist. Auf diese Weise ist es möglich geworden, ein Hotel in Timbuktu oder ein Auto auf Honululu zu buchen. (Diese Orte gibt es wirklich!) Nun stellt sich die Frage, was mit all‘ den eingegebenen Daten geschieht? 2.4.2.3 Tabellen Tabellen stellen das wichtigste Hilfsmittel zur strukturierten Darstellung von Daten dar. Die im Rahmen dieses Kapitels besprochenen relationalen Datenbanken verwenden ausschließlich Tabellen zur Strukturierung der Daten. Tabellen werden in der Datenbanktheorie als Relation bezeichnet. Bei einer Kundendatenbank in tabellarischer Darstellung entspricht jede Karteikarte bzw. Formularseite einer Tabellenzeile. Tabellen ermöglichen also eine kompakte Darstellung großer Datenmengen. Weitere Vorteile der tabellarischen Darstellung sind: s Tabellen lassen sich nach beliebigen Attributen sortieren, z. B. nach dem Wohnort. s Tabellen können nach vorgegebenen Kriterien gefiltert werden, z. B. könnten Sie für eine lokale Werbeaktion alle Kunden aus Freiburg benötigen. s Tabellen können miteinander in Beziehung gesetzt werden. Beispiel: Eine Beziehung zwischen einer Kunden- und einer Auftragsdatenbank besteht darin, dass zwischen dem Kunden und dem Auftrag eine eindeutige Beziehung besteht: Zu 156 jedem Auftrag gehört genau ein Kunde. Durch Beziehungen lassen sich mehrere Tabellen miteinander verbinden. 2.4.2.4 Datenbanksoftware Um den Umgang mit Datenbanken zu üben, brauchen Sie eine Software. Während die meisten kommerziellen Datenbanksysteme sehr teuer sind, gibt es alternativ auch einige Produkte, die entweder kostenlos oder als Bestandteil eines Office-Pakets zumindest bezahlbar sind: s Microsoft Access ist ein weit verbreitetes Datenbanksystem. Es ist Bestandteil des Microsoft-Office-Pakets, für das es kostengünstige Schülerund Studentenversionen gibt. Zur Erstellung von Tabellen, Formularen und Abfragen stellt Access zahlreiche Assistenten zur Verfügung, die den Einstieg in die komplexe Materie erleichtern. s OpenOffice Base ist ein kostenloses Datenbanksystem, das Bestandteil des OpenOffice-Pakets ist. Die Bedienung und Leistungsfähigkeit kommt allerdings an Access nicht heran. OpenOffice steht unter http://de.openoffice.org für alle Betriebssysteme zur Verfügung. s Für webbasierte Datenbankanwendungen empfiehlt sich die Installation des Komplettpakets XAMPP, das neben einem Apache-Webserver auch einen MySQL-Datenbankserver zur Verfügung stellt. Zur Verwaltung der Datenbanken enthält das Paket die Weboberfläche phpMyAdmin. Für Anfänger empfiehlt sich diese Anwendung eher nicht. Weitere Informationen hierzu finden Sie in Kapitel 10.5.6. 2.4.3 Datenbankentwurf 2.4.3.1 Grundbegriffe Nach den einführenden Betrachtungen über Datenbanken müssen einige Begriffe definiert werden, die für Ihre Arbeit mit Datenbanken unerlässlich sind. Datenbanksystem Ein Datenbanksystem (DBS) dient der Erstellung, Pflege und Verwaltung von einer oder mehreren Datenbanken. Beispiele für kostenlose Datenbanksysteme sind OpenOffice Base oder MySQL. Datenbank Bei einer Datenbank (DB) handelt es sich um eine strukturierte Sammlung von Daten, die in einem sachlogischen Zusammenhang stehen. Relationale Datenbank Relationale Datenbanken sind die wichtigste Untergruppe der Datenbanken. Sie setzen sich aus einer oder mehreren Tabellen zusammen, die auch als Relationen bezeichnet werden. Neben relationalen gibt es beispielsweise hierarchische oder objektorientierte Datenbanken, auf die im Rahmen dieses Kapitels jedoch nicht eingegangen wird. Datenbanken Tabelle (Relation) Tabellen stellen die „Bausteine“ relationaler Datenbanken dar. Eine relationale Datenbank besteht aus mindestens einer, meistens aus mehreren Tabellen, die über Schlüssel miteinander in Beziehung stehen. Jede Tabelle besteht ihrerseits aus Datensätzen. Datensatz (Tupel) Die Zeilen einer Tabelle werden als Datensätze oder Tupel bezeichnet. Ein Datensatz besteht aus mehreren Datenfeldern, z. B. Kundennummer, Nachname, Vorname, Anschrift, Telefonnummer und E-Mail-Adresse. Jeder Datensatz muss über einen so genannten Schlüssel, z. B. die Kundennummer, eindeutig identifizierbar sein. Mit Hilfe einer Karteikarte bzw. mittels Formular wird jeweils ein Datensatz beschrieben. Attribute Die einzelnen Zellen einer Tabelle werden als Datenfelder bezeichnet. Gleichartige Datenfelder, z. B. Nachnamen oder E-Mail-Adressen, sind spaltenweise angeordnet und werden in der Theorie Attribute genannt. Jedes Attribut wird durch einen Feldnamen, z. B. „Nname“ oder „Mail“, bezeichnet. Grundbegriffe Relationale Datenbanken bestehen aus einer oder mehreren Tabellen. Tabelle (Relation) Datenfeld Kundendaten Kd-Nr Nname Vname Strasse Plz 0001 Adler Fritz Hauptstr. 23 88214 Ravensburg (0751)123456 [email protected] Ort Tel Mail 0002 Maier Wolfgang Gartenstr. 15 77933 Lahr (07821)223344 [email protected] 0003 Franz Justus Holzweg 3 79576 Weil/Rhein (07621)114488 [email protected] 0004 Bauer Paul Hauptstr. 5 77960 Seelbach (07823)876543 [email protected] Attribute Datensatz (Tupel) (Primär-)Schlüssel 157 Band II – Seite 466 8.5.1 XML-Reisekatalog Datentypen Auswahl wichtiger Datentypen: s Ganze Zahlen (INTEGER, SMALLINT) s Dezimalzahlen (NUMERIC, DECIMAL, FLOAT, REAL, DOUBLE) s Einzelne Zeichen (CHAR) s Text (VARCHAR, LONGVARCHAR) s Ja/Nein-Entscheidung (BOOLEAN) s Datum (DATE) s Zeit (TIME) s Binäre Daten (BINARY) z. B. für Bilder 158 Datentyp Jeder Spalte (Attribut) müssen Sie einen bestimmten Datentyp zuweisen. Die wichtigsten Datentypen sind: s Ganze Zahlen (INTEGER) s Dezimalzahlen (FLOAT, DECIMAL) s Zeichen (CHAR) s Text (VARCHAR) s Ja/Nein (BOOLEAN) s Datum (DATE) s Uhrzeit (TIME) s Binäre Daten (BINARY) Warum ist diese Unterscheidung wichtig? Erstens entscheidet der Datentyp über den benötigten Speicherplatz und damit letztlich auch über die Performance der Datenbank. Zweitens ist die Festlegung des Datentyps zur weiteren Verarbeitung der Daten erforderlich. So kann mit Zahlen gerechnet werden, z.B. Menge mal Einzelpreis gleich Endpreis. Aus Texten lassen sich beispielsweise E-Mails generieren, während binäre Datentypen z.B. Bilder speichern können. Schlüssel Ein wesentliches Merkmal einer Datenbank ist, dass jeder Datensatz eindeutig identifizierbar sein muss. Für diesen Zweck wird in jeder Tabelle (mindestens) ein Schlüssel benötigt: In der Kundendatenbank wurde die Kundennummer als Schlüssel definiert. Sie erkennen dies am kleinen Schlüsselsymbol links vom Feldnamen. Über einen Schlüssel wird der Zugriff auf Datensätze beschleunigt. Sein Wert wird vom System üblicherweise automatisch vergeben (Auto-Wert) , so dass doppelte Werte nicht vorkommen können. Weiterhin ermöglichen Schlüssel die Verknüpfung von Tabellen miteinander. Ein Schlüssel, der zur Identifikation der Datensätze der eigenen Tabelle dient, heißt Primärschlüssel. Wird dieser Schlüssel in einer Tabelle verwendet, die einen eigenen Primärschlüssel hat, spricht man vom Fremdschlüssel. 2.4.3.2 Forderungen an den Datenbankentwurf Am Beispiel der Kundendatenbank lassen sich die wichtigsten Kriterien für den Entwurf von Datenbanken ablesen: Datenkonsistenz Jeder Datensatz muss eindeutig identifizierbar (konsistent) sein. Dies wird dadurch erreicht, dass die als Primärschlüssel bezeichnete (Kunden-)Nummer einmalig vergeben wird. Sie wird auch dann nicht erneut vergeben, wenn der Datensatz gelöscht wird. Konsistente Datensätze sind also gleich einem Fingerabdruck immer eindeutig unterscheidbar, selbst wenn der Fall eintritt, dass sich zwei Menschen mit demselben Namen eine Wohnung und einen Telefonanschluss teilen. Datenbanken Redundanzfreiheit Werden sämtliche Daten nur ein einziges Mal erfasst und gespeichert, dann sind sie redundanzfrei. Dies spart Speicherplatz und verhindert Probleme bei späteren Änderungen. Nehmen Sie an, dass ein Kunde im Laufe der Zeit mehrere Bestellungen tätigt. Ohne Kundennummer müssten bei jeder Bestellung Name und Anschrift erneut und damit redundant erfasst werden. Noch problematischer wäre, wenn sich nach einiger Zeit die Anschrift des Kunden ändert. Um die Daten konsistent zu halten, müsste die Anschrift bei sämtlichen Bestellungen nachträglich geändert werden. Sie erkennen, dass die Kundennummer als Schlüssel die mehrfache Eingabe der Kundendaten unnötig macht, da zu jeder Bestellung lediglich die Kundennummer notiert werden muss. Im Falle der geänderten Anschrift muss diese Änderung in der Kundendatenbank nur an einer Stelle vorgenommen werden, die Kundennummer selbst bleibt unverändert. Weitere Forderungen s Der Nutzer braucht sich nicht um die Organisation und Verwaltung der Daten zu kümmern. Die Reihenfolge der Datenerfassung spielt keine Rolle. s Die Daten einer Datenbank müssen vor Verlust sicher sein (Datensicherheit). Um diese Forderung zu erfüllen, müssen geeignete BackupStrategien zum Einsatz kommen. s Ein heikles Thema ist der Datenschutz vor unerlaubtem Zugriff und vor Manipulation, insbesondere wenn es sich um personenbezogene Daten handelt. Facebook lässt grüßen! s Mehrere Nutzer müssen gleichzeitig auf eine Datenbank zugreifen können (Multiuser-DB). 2.4.3.3 Normalisierung Gemäß letztem Abschnitt lauten die Hauptforderungen an Datenbanken: s Datenkonsistenz s Redundanzfreiheit Um diese Ziele zu erreichen, müssen die Datensätze auf mehrere Tabellen verteilt werden. Der Vorgang wird als Normalisierung bezeichnet, wobei mehrere so genannte Normalformen unterschieden werden. Im Folgenden wird anhand eines Beispiels auf die ersten drei Normalformen eingegangen. Die vierte und fünfte Normalform spielt in der Praxis eine untergeordnete Rolle. Aufgabenstellung Sie arbeiten in einem Medienbetrieb, der seinen Kunden Print- und Nonprintprodukte anbietet. Alle Aufträge werden mit einer Auftragsnummer (ANr) versehen und in einer Tabelle erfasst: Aufträge ANr Datum Kunde Anschrift Produkte Firma Winkler Hauptstr. 23, 77652 Offenburg Website 1 01.03.12 2 10.05.12 Firma Mayer Gartenstr. 15, 77933 Lahr Visitenkarten, Briefbogen, Logo 3 20.06.12 Firma Schulz Holzweg 3, 77960 Seelbach Flyer 4 01.09.12 Firma Schmitt Hauptstr. 5, 77933 Lahr Website, Flyer 5 01.10.12 Firma Winkler Hauptstr. 23, 77652 Offenburg Visitenkarten 6 01.10.12 Firma Schulz Holzweg 3, 77960 Seelbach Briefbogen Auftragserfassung Eine Tabelle in dieser Form ist für die Umsetzung in einer Datenbank untauglich. 159 Die Tabelle enthält folgende Mängel: s Die Datensätze sind nicht konsistent, obwohl ein Schlüssel „ANr“ vergeben wurde. Grund ist, dass aus der Auftragsnummer „ANr“ nicht gefolgert werden kann, um welches Produkt es sich handelt. s Durch die Erfassung der gesamten Anschrift in einem Datenfeld ist ein Sortieren der Datensätze, z. B. nach Postleitzahlen, nicht möglich. s Die Datensätze sind nicht redundanzfrei: Bei Firmen, die mehrere Aufträge erteilen, muss jedes Mal die gesamte Anschrift eingetragen werden. Ändert sich die Kundenanschrift, muss diese Änderung in mehreren Datensätzen vorgenommen werden. s Als ungeschickt erweist sich auch, dass vor den Firmennamen der Eintrag „Firma“ steht. Ein alphabetisches Sortieren der Firmen wird nur dann möglich, wenn diese Schreibweise konsequent eingehalten wird. Fehlt der Eintrag oder wird stattdessen „Fa.“ geschrieben, stimmt die Reihenfolge bereits nicht mehr. Wenn Sie die Tabelle in der 1. Normalform betrachten, stellen Sie fest: s Jedes Datenfeld enthält genau einen Eintrag, sieht man einmal von der Hausnummer ab. Diese gehört jedoch zur Straße. Die Tabelle kann nun nach beliebingen Attributen (also spaltenweise) sortiert werden. Weiterhin ist das Filtern bestimmter Datensätze möglich, z. B. alle Aufträge der Firma Winkler, alle Aufträge für Visitenkarten oder alle Aufträge im ersten Quartal. s Die Datensätze sind jedoch nicht konsistent, weil der Primärschlüssel „ANr“ einen Datensatz nicht mehr eindeutig identifiziert. s Die Tabelle ist alles andere als redundanzfrei. Die Redundanz hat im Vergleich zur ersten Tabelle sogar deutlich zugenommen. 1. Normalform Ein Teil der angesprochenen Probleme lässt sich beseitigen, wenn die Tabelle in die 1. Normalform umgewandelt wird: 2. Normalform Zur Reduktion der Redundanz muss die Tabelle in mehrere Tabellen zerlegt werden. 1. Normalform Eine Tabelle befindet sich in der 1. Normalform, wenn jedes Datenfeld nur einen Eintrag enthält. Aufträge 1. Normalform 160 ANr Datum Firma Straße Plz Ort Produkt 1 01.03.12 Winkler Hauptstraße 23 77652 Offenburg Website 2 10.05.12 Mayer Gartenstraße 15 77933 Lahr Visitenkarten 2 10.05.12 Mayer Gartenstraße 15 77933 Lahr Briefbogen 2 10.05.12 Mayer Gartenstraße 15 77933 Lahr Logo 3 20.06.12 Schulz Holzweg 3 77960 Seelbach Flyer 4 01.09.12 Schmitt Hauptstraße 5 77933 Lahr Website 4 01.09.12 Schmitt Hauptstraße 5 77933 Lahr Flyer 5 01.10.12 Winkler Hauptstraße 23 77652 Offenburg Visitenkarten 6 01.10.12 Schulz Holzweg 3 77960 Seelbach Briefbogen Datenbanken 2. Normalform Eine Tabelle befindet sich in der 2. Normalform, wenn s SIESICHINDER.ORMALFORM befindet und s ALLE$ATENFELDERVONEINEM (zusammengesetzten) Schlüssel funktional abhängig sind. Die abstrakte Formulierung der „funktionalen Abhängigkeit“ lässt sich anhand des Beispiels erklären: s Die Tabelle „Produkte“ besitzt einen Schlüssel „PNr“. Von diesem Schlüssel ist das Attribut „Produkt“ funktional abhängig. Dies heißt, dass es zu jeder Produktnummer genau ein Produkt gibt. s Die Tabelle „Aufträge“ enthält die Schlüssel „ANr“ und „PNr“. Keiner der Schlüssel stellt in der Tabelle eine funktionale Abhängigkeit her. Diese wird erst durch Kombination der Schlüssel möglich: Aus dem zusammengesetzten Schlüssel „ANr“ und „PNr“ folgt genau ein „Datum“, genau ein „Kunde“ mit genau einer Anschrift. s Die Tabelle ist nicht redundanzfrei, weil die Kundenanschriften mehrfach enthalten sind. 3. Normalform In der dritten Stufe der Normalisierung werden die verbliebenen Redundanzen beseitigt. 3. Normalform Eine Tabelle befindet sich in der 3. Normalform, wenn s SIESICHINDER.ORMALFORM befindet und s ALLE$ATENFELDERDIEKEINE3CHLàS sel sind, nicht funktional abhängig sind. Auch dieser Sachverhalt lässt sich am Beispiel erklären: In der Tabelle „Aufträge“ in der 2. Normalform sind die Kundenangaben funktional abhängig: Zum Kunden „Winkler“ gehört genau eine „Straße“, genau eine „Plz“ und genau ein „Ort“. Dies darf nach der 3. Normalform nicht sein. Schließlich ist es vorstellbar, dass ein zweiter Kunde namens „Winkler“ hinzukommt. Die Adressen der Kunden namens „Winkler“ ließen sich anhand des Namens nicht mehr ermitteln. Um diesen Fehler zu beheben, muss eine dritte Tabelle mit neuem Schlüssel definiert werden. Auf der nächsten Seite ist die Datenbank in der 3. Normalform Aufträge Produkte PNr Produkt Offenburg 1 Website 77933 Lahr 2 Visitenkarten 77933 Lahr 3 Briefbogen 77933 Lahr 4 Logo 77960 Seelbach 5 Flyer 77933 Lahr Schmitt Hauptstraße 5 77933 Lahr 01.10.12 Winkler Hauptstraße 23 77652 Offenburg 01.10.12 Schulz 77960 Seelbach ANr PNr Datum Firma Straße 1 1 01.03.12 Winkler Hauptstraße 23 2 2 10.05.12 Mayer Gartenstraße 15 2 3 10.05.12 Mayer Gartenstraße 15 2 4 10.05.12 Mayer Gartenstraße 15 3 5 20.06.12 Schulz Holzweg 3 4 1 01.09.12 Schmitt Hauptstraße 5 4 5 01.09.12 5 2 6 3 Holzweg 3 Plz Ort 77652 2. Normalform 161 Aufträge Produkte Kunden ANr PNr Datum KNr PNr Produkt KNr 1 1 01.03.12 1 1 Website 2 2 10.05.12 2 2 Visitenkarten 2 3 10.05.12 2 3 2 4 10.05.12 2 3 5 20.06.12 3 4 1 01.09.12 4 4 5 01.09.12 4 5 2 01.10.12 1 6 3 01.10.12 3 3. Normalform Firma Straße Plz Ort 1 Winkler Hauptstraße 23 77652 Offenburg 2 Mayer Gartenstraße 15 77933 Lahr Briefbogen 3 Schulz Holzweg 3 77960 Seelbach 4 Logo 4 Schmitt Hauptstraße 5 77933 Lahr 5 Flyer dargestellt. Wie Sie sehen, sind alle Datenfelder, die keine Schlüssel sind, nur noch von Schlüsseln abhängig. Nun wäre auch ein weiterer Kunde „Winkler“ mit identischer Anschrift eindeutig identifizierbar, da er eine andere Kundennummer erhält. Der Prozess der Normalisierung ist mit der 3. Normalform abgeschlossen. Für alle drei Tabellen gilt, dass die enthaltenen Daten redundanzfrei und konsistent sind. Einen großen Nachteil bringt die Normalisierung einer Datenbank leider mit sich: Die Lesbarkeit verschlechtert sich mit jeder weiteren Tabelle deutlich. Damit wird klar, dass für den Einsatz von Datenbanken eine geeignete Datenbankmanagement-Software unerlässlich ist. Diese übernimmt die Datenorganisation und -verwaltung sozusagen „im Hintergrund“, ohne dass sich der Anwender darum kümmern muss. 2.4.3.4 Entity-Relationship-Modell Bislang haben wir uns angesehen, wie sich eine „schlechte“ Datenbank in eine normalisierte Form überführen lässt. In der Praxis wird man natürlich versuchen, diesen Fall zu vermeiden und 162 bereits beim Datenbankentwurf dafür zu sorgen, dass sich konsistente und redundanzfreie Datenbanken ergeben. Zu diesem Zweck gibt es verschiedene Entwurfsverfahren, von denen das Entity-Relationship-Modell (ER-Modell) das bekannteste ist. Bei der so genannten Chen-Notation werden drei grafische Elemente, Rechteck, Raute und Ellipse, unterschieden: Entitätstyp Beziehung Attribut s Entitätstyp Der komplizierte Begriff steht für Objekte, denen Informationen zugeordnet werden können, z. B. Produkte, Kunden, Aufträge. s Beziehung Zwischen den Objekten lassen sich Beziehungen herstellen, z. B. Kunde „kauft“ Produkte oder Kunde „erteilt“ Aufträge. s Attribute Jedes Objekt hat bestimmte Eigenschaften oder Attribute, z. B. haben Kunden einen Namen und eine Anschrift. Die drei Elemente lassen sich nun mittels Linien miteinander verbinden: Datenbanken ER-Modell Schüler Name Klasse ist in Vorname Klassenlehrer Schülerzahl Bezeichnung Das Beispiel zeigt zwei Entitätstypen „Schüler“ und „Klasse“, zwischen denen eine Beziehung besteht: Jeder Schüler „ist in“ einer Klasse. Jedem Entitätstyp sind Attribute zugeordnet. Beim Entwurf müssen Sie entscheiden oder mit Ihrem Auftraggeber absprechen, ob diese Attribute ausreichend sind oder ob weitere Attribute ergänzt werden müssen, z.B. Alter, Anschrift, Geschlecht der Schüler. Sie sehen den Vorteil des Modells: Es ist eine auch für Laien verständliche Darstellungsweise von Daten. Bevor wir uns ansehen, wie sich ein ER-Modell in eine Datenbank umsetzen lässt, müssen wir noch genauer auf die Art von Beziehung eingehen, die zwischen den Entitätstypen besteht. 1:1-Beziehung Wenn zwischen zwei Entitätstypen ein eindeutiger Zusammenhang besteht, spricht man von einer 1:1-Beziehung. Schulleiter 1 leitet 1 Schule Interpretation: s Jeder Schulleiter leitet genau eine Schule. s Jede Schule wird von genau einem Schulleiter geleitet. Bei der Umsetzung des ER-Diagramms Das ER-Modell dient zur grafischen Darstellung der Zusammenhänge zwischen Daten. Bei der Umsetzung des Diagramms in eine Datenbank wird aus jedem Entitätstyp (Rechteck) eine Tabelle. in eine Datenbank können 1:1-Beziehungen in einer Tabelle notiert werden, die die Spalten „Schule“ und „Schulleiter“ besitzt. 1:n-Beziehung Eine 1:n-Beziehung liegt dann vor, wenn einer der Entitätstypen mit mehreren Entitäten des zweiten Typs verbunden sein kann: Klasse 1 hat n Schüler Interpretation: s Jede Klasse hat mehrere Schüler. s Jeder Schüler gehört zu genau einer Klasse. Bei der Umsetzung als Datenbank werden für die häufig vorkommenden 1:n-Beziehungen zwei Tabellen benötigt, die über Schlüssel miteinander verbunden werden. m:n-Beziehung Gibt es mehrere Verbindungen in beiden Richtungen, spricht man von einer m:n-Beziehung: Lehrer m n unterrichtet Schüler Interpretation des Diagramms: s Ein Lehrer unterrichtet mehrere Schüler. 163 s Jeder Schüler wird von mehreren Lehrern unterrichtet. Eine m:n-Beziehung macht Probleme bei der Erstellung einer Datenbank, weil sich mit ihr keine eindeutige Beziehung zwischen zwei Tabellen herstellen lässt. Zur Umsetzung in eine Datenbank gilt deshalb: m:n-Beziehungen sind unzulässig und müssen durch Ergänzen weiterer Tabellen aufgelöst werden! Im konkreten Beispiel wäre dies eine Lehrer-Schüler-Tabelle, aus der hervorgeht, welcher Lehrer welche Schüler unterrichtet. Anwendung des ER-Modells Die Grafik zeigt die Anwendung des ERModells auf das Beispiel des Medienbetriebs: Zwischen Produkten und Kunden besteht eine m:n-Beziehung (siehe gestrichelte Linie): s Jeder Kunde kann mehrere Produkte in Auftrag geben. s Jedes Produkt kann von mehreren Kunden bestellt werden. Die Modellbildung erfordert deshalb die Einführung einer dritten Tabelle Aufträge, die aus einer m:n-Beziehung zwei 1:n-Beziehungen macht: s Jeder Kunde kann mehrere Aufträge erteilen. Jeder Auftrag gehört zu genau einem Kunden. s Ein Produkt kann in mehreren Aufträgen bestellt werden. Zu jedem Auftrag gehört genau ein Produkt. Aus der letzten Aussage ergibt sich ein Problem: Was passiert, wenn ein Kunde mehrere Produkte bestellt? Die Auftragsnummer kommt dann mehrfach vor und eignet sich deshalb nicht als Primärschlüssel. Eindeutigkeit ergibt sich in dieser Tabelle deshalb erst aus der Kombination von Auftrags- und Produktnummer – man spricht von einem zusammengesetzten Schlüssel, der den Datensatz eindeutig identifiziert. Ist der Datenbankentwurf fertiggestellt, kann ER-Diagramm Zwischen Produkten und Kunden besteht eine m:n-Beziehung. Um diese als Datenbank umsetzen zu können, muss eine weitere Tabelle eingefügt werden. Datum Produkt Kunde n Auftrag besteht aus n wird erteilt 1 Produkte Produkt 1 m bestellt durch n Kunden Firma Plz Straße 164 Ort Datenbanken mit der Umsetzung in einem Datenbanksystem begonnen werden. Gehen Sie hierbei folgendermaßen vor: s Aus jedem Entitätstyp (Rechteck) wird eine Tabelle. s Die Attribute (Ellipsen) werden zu Tabellenspalten. Eventuell müssen weitere Spalten ergänzt werden (ANr, KNr, PNr). s Die Beziehungen werden realisiert, indem Primärschlüssel und Fremdschlüssel miteinander verbunden werden. Wie der Screenshot (Microsoft Access) zeigt, entspricht der Datenbankentwurf optisch dem ER-Diagramm. Statt „n“ wird hier das „oo“-Zeichen verwendet, das in der Mathematik für „unendlich“ steht. Würde ein Produkt aus der Produkttabelle gelöscht, das schon einmal bestellt wurde, dann würde hierdurch die Auftragstabelle fehlerhaft, da es das bestellte Produkt nicht (mehr) gibt. Referenzielle Integrität verhindert also, dass ein bestelltes Produkt gelöscht werden kann. Zulässig hingegen ist es, Produkte hinzuzufügen, die dann natürlich noch nicht bestellt wurden. Oder: Theoretisch kann es Kunden geben, die noch nichts bestellt haben. Vielleicht haben sie nur einmal einen Produktkatalog angefordert. Diese Kunden können gelöscht werden. Ein Kunde, der schon einmal etwas bestellt hat, kann bei referenzieller Integrität nicht gelöscht werden, da hierdurch die Auftragstabelle fehlerhaft würde. Referenzielle Integrität stellt also sicher, dass die Nutzer der Datenbank nur Eingaben machen können, die nicht zu Dateninkonsistenzen führen. Das Datenbanksystem überprüft dies anhand der vergebenen Primär- und Fremdschlüssel, ohne die referenzielle Integrität nicht möglich ist. Beziehungen In Microsoft Access lassen sich Beziehungen mit Hilfe eines Assistenten festlegen. Referenzielle Integrität 2.4.3.5 Referenzielle Integrität Der kompliziert klingende Begriff der referenziellen Integrität bedeutet, dass ein Datenbanksystem (DBS) sicherstellen muss, dass die Beziehungen zwischen Tabellen nicht zu Fehlern (Dateninkonsistenzen) führen. Beim Erstellen einer Beziehung müssen Sie deshalb entscheiden, ob diese mit oder ohne referenzielle Integrität sein soll . Was kann passieren, wenn keine referenzielle Integrität besteht? Hierzu zwei Beispiele: Bei jeder Beziehung muss festgelegt werden, ob „referenzielle Integrität“ gewünscht wird. Hierdurch lassen sich widersprüchliche oder fehlerhafte Daten verhindern. 165 Band II – Seite 854 10.5.6 Datenbankzugriff Structured Query Language (SQL) SQL ist eine Abfragesprache für Datenbanken. Bei Access können Sie Abfragen wahlweise über einen SQLBefehl (rechts oben) oder mit Hilfe eines Assistenten (links) erstellen. Das Ergebnis der Abfrage sehen Sie rechts unten. 166 2.4.4 SQL 2.4.4.1 Bedeutung von SQL Um Webseiten weltweit einheitlich darstellen zu können, wurde die Seitenbeschreibungssprache HTML (Hypertext Markup Language) entwickelt und standardisiert. Auch bei der Entwicklung von Datenbanken wird das Ziel verfolgt, dass ein – im Idealfall – plattform- und programmunabhängiger Zugriff auf Datenbanken möglich ist. Um dies zu ermöglichen, wurde für relationale Datenbanken die Abfragesprache SQL (Structured Query Language) entwickelt. Sie ermöglicht unter anderem das s Erstellen von Datenbanken und Tabellen, s Eingeben, Ändern und Löschen von Datensätzen, s Abfragen (engl.: Query) von Daten nach gewünschten Kriterien. SQL ist ISO-standardisiert und plattformunabhängig. Dennoch existieren verschiedene Sprachversionen bzw. -dialekte, so dass in Abhängigkeit vom eingesetzten Datenbankmanagementsystem unterschiedliches SQL zum Einsatz kommt. Müssen Sie SQL lernen? Die Antwort lautet: Ja und Nein. Wenn Sie sich intensiver mit Datenbanken auseinandersetzen, kommen Sie an SQL nicht vorbei. SQL ist die Sprache der Datenbanken, so wie HTML die Sprache der Webseiten ist. Allerdings ermöglicht heutige Datenbank-Software das Erstellen von und den Zugriff auf Datenbanken auch ohne SQL-Kenntnisse. Zu diesem Zweck stehen z. B. bei Microsoft Access oder OpenOffice Base Abfrage-Assistenten zur Verfügung, die Sie bei der Erstellung von Abfragen mittels grafischer Oberfläche unterstützen. Der zugehörige SQL-Befehl wird im Hintergrund gespeichert, so dass sich der Anwender hiermit nicht befassen muss. Die Screenshots zeigen eine Abfrage „Kunden aus Lahr“ zu der im letzten Kapitel besprochenen Datenbank. Links sehen Sie den Abfrage-Assistenten von Microsoft Access, rechts oben den zugehörigen SQL-Befehl. Die Linien zeigen die Zusammenhänge zwischen Assistent und Befehl. Rechts unten ist das Ergebnis der Abfrage dargestellt. Datenbanken 2.4.4.2 SQL-Befehle Im Unterschied zu anderen Sprachen ist der „Wortschatz“ von SQL relativ begrenzt und einigermaßen leicht zu verstehen – sehen wir einmal von komplexen Anwendungen des SELECTBefehls ab. Im Folgenden lernen Sie einige wichtige SQL-Befehle kennen. Als Beispiel dient die Kundendatenbank, die bereits im letzten Kapitel für die Normalisierung bzw. Entwicklung eines ER-Modells herangezogen wurde. Datenbank erstellen Der SQL-Befehl, um eine neue Datenbank zu erstellen, lautet: CREATE DATABASE medienbetrieb; Die SQL-Befehle sind zur besseren Kennzeichnung großgeschrieben. Die Datenbank ist zunächst noch leer, enthält also noch keine Tabelle. Tabellen erzeugen Die Erzeugung einer Tabelle ist etwas umfangreicher, weil sämtliche Eigenschaften (Attribute) der Tabelle angegeben werden müssen. Betrachten wir hierzu das Beispiel der Tabelle „Kunden“: CREATE KNr TABLE Kunden( INT NOT NULL AUTO_INCREMENT, Firma VARCHAR(30), Strasse VARCHAR(30), Plz VARCHAR(5), Ort VARCHAR(30), PRIMARY KEY (KNr) ); Erklärungen: s Die „KNr“ erhält den Datentyp INT (Integer) für ganze Zahlen. Weiterhin muss hier immer ein Eintrag erfolgen (NOT NULL), da die Kundennummer als Primärschlüssel (PRIMARY KEY) dient. Die Angabe AUTO_INCREMENT besagt schließlich, dass die Nummer vom Datenbanksystem automatisch vergeben und hochgezählt wird. Auf diese Weise ist die versehentliche doppelte Vergabe einer Nummer nicht möglich. s Die Attribute„Firma“, „Strasse“, „Plz“ und „Ort“ sind jeweils von Datentyp VARCHAR, bestehen also aus einer variablen Anzahl von Zeichen. Die Angabe in Klammer besagt, dass maximal 30 bzw. 5 Zeichen möglich sind. Vielleicht wundern Sie sich, dass auch die Postleitzahl als Text und nicht als Zahl angegeben wird. Dies hat den Grund, dass es Postleitzahlen mit einer führenden Null gibt, z. B. 03042 (Cottbus). Bei einer Zahl würde die führende Null nicht angezeigt. Die Befehle zum Verändern bzw. Löschen einer Tabelle heißen ALTER TABLE bzw. Tabelle DROP TABLE. Datensätze eingeben Nachdem die Tabellen definiert sind, erfolgt im nächsten Schritt die Eingabe der Datensätze: INSERT INTO Kunden (Firma, Strasse, Plz, Ort) VALUES ("Winkler", "Hauptstrasse 23", "77652", "Offenburg"); Erklärungen: s Wie Sie sehen, entfällt die Eingabe der Kundennummer, da diese auto- 167 matisch (AUTO_INCREMENT) durch das Datenbanksystem generiert und hochgezählt wird. s Beachten Sie auch, dass Texte in Anführungszeichen oder Hochkommas gesetzt werden müssen. Die Postleitzahl wird ebenfalls als Text und nicht als Zahl eingegeben. Datensätze ändern Eine nachträgliche Änderung eines Datensatzes erfolgt mit Hilfe des UPDATEBefehls: UPDATE Kunden SET Strasse = "Gartenstraße 5", Plz = "77933", Ort = "Lahr" WHERE KNr = 5; Im Beispiel wird also die gesamte Anschrift des Kunden mit der Kundennummer 5 geändert. Datensätze löschen Mit entsprechenden Zugriffsrechten ist auch das Löschen von Datensätzen problemlos möglich: DELETE FROM Kunden WHERE KNr = 5; Gelöscht wird der gesamte Datensatz mit der Kundennummer 5. Datensätze abfragen SELECT ist ein komplexer SQL-Befehl, der den Zugriff auf Datenbanken mittels Abfragen ermöglicht. In der Tabelle rechts sind einige Beispiele aufgelistet. Die SELECT-Anweisung bietet noch weitere Möglichkeiten, z.B. können Sie über GROUP Ergebnisse zusammenfassen. Im Internet finden Sie hierzu zahlreiche Tutorials. 168 Abfrage aller (*) Datensätze der Tabelle Kunden: SELECT * FROM Kunden; Abfrage aller Kunden mit dem Namen „Mayer“: SELECT Firma,Strasse,Plz,Ort FROM Kunden WHERE Firma LIKE "Mayer"; Abfrage aller Datensätze geordnet nach Postleitzahlen: SELECT * FROM Kunden ORDER BY Plz; Abfrage über zwei verknüpfte Tabellen: SELECT Kunden.Firma,Aufträge. Datum FROM Kunden INNER JOIN Aufträge ON Kunden.KNr = Aufträge.KNr; Kombinierte Abfrage aller Kunden, die das Produkt „Briefbogen“ bestellt haben, sortiert nach Datum: SELECT Aufträge.Datum,Kunden. Firma,Produkte.Produkt FROM (Kunden INNER JOIN Aufträge ON Kunden.KNr = Aufträge.KNr) INNER JOIN Produkte ON Aufträge.PNr = Produkte. PNr WHERE Produkte.Produkt LIKE "Briefbogen" ORDER BY Aufträge.Datum; 2.4.5 Datenbankmanagement 2.4.5.1 ODBC Datenbanken Datenbank-Client Client-Server-System Mit Hilfe der im vorherigen Abschnitt vorgestellten Abfragesprache SQL ist der Zugriff auf Datenbanken standardisiert. Damit nun von einer DatenbankClient-Software der Zugriff auf SQLDatenbanken möglich ist, wurde für Windows-Betriebssysteme mit ODBC (Open Database Connectivity) eine entsprechende Schnittstelle geschaffen. ODBC stellt die Verbindung zwischen Datenbank-Client und DatenbankServer her. Um auf eine Datenbank zugreifen zu können, muss der entsprechende ODBC-Treiber installiert werden. Der Zugriff auf den Datenbank-Server erfolgt mittels SQL-Befehlen, die jedoch serverseitig ausgewertet werden. Das Resultat der Abfrage wird an den Client übertragen. Der Vorteil dieser Vorgehensweise liegt darin, dass durch die serverseitige Abarbeitung der SQLBefehle eine deutlich bessere Performance und geringere Netzbelastung erreichbar ist. Client-Server-Systeme wie Microsoft SQL-Server, MySQL oder Oracle ermöglichen aus den genannten Gründen die Realisierung sehr großer Datenbanken mit hoher Benutzeranzahl. z.B. Access, phpMyAdmin ODBC-Manager ODBC-Manager ODBC-Treiber Oracle Access Fileserver-System MySQL SQL ODBC-Treiber MySQL SQL Dateizugriff Fileserver-System Bei einem Zugriff auf eine AccessDatenbank erfolgt ein direkter Zugriff auf die Datenbankdatei. Die Auswahl der gewünschten Datensätze mittels SQL-Abfragen erfolgt clientseitig. Nachteil dieses Verfahrens ist, dass die Belastung des Netzwerks ab einer gewissen Benutzerzahl hoch ist und damit die Performance der Datenbank sinkt. Fileserver-Systeme sind deshalb nur für kleinere Datenbanksysteme empfehlenswert. Oracle Client-Server-Systeme ODBC Abschließend sei erwähnt, dass auf Client-Server-Systeme auch mittels Skriptsprache zugegriffen werden kann. Dies macht man sich für die Realisierung von dynamischen Webseiten zunutze, deren Inhalte in Abhängigkeit von der Anfrage des Benutzers „dynamisch“ aus einer Datenbank geladen werden (siehe Kapitel 10.5.6). 2.4.5.2 Über ODBC ist ein Zugriff auf unterschiedliche Datenbanksysteme möglich. Datenbanksysteme (DBS) Wie die Grafik auf der nächsten Seite zeigt, besteht ein Datenbanksystem aus Datenbanken (DB) und aus einer diese Datenbanken verwaltenden Software, einem Datenbankmanagementsystem (DBMS). Für den oder die Anwender ergibt sich der Vorteil, dass sie auf Datenbanken zugreifen können, ohne sich um die physikalische Organisation der Daten kümmern zu müssen. Für die Anwender spielt es keine Rolle, wie und 169 Anwendung Anwendung Anwendung Datenbanksystem (DBS) Datenbankmanagmentsystem (DBMS) DB Blockschaltbild eines Datenbanksystems Datenbanksysteme bestehen aus einer Software zur Verwaltung der Datenbanken, dem Datenbankmanagementsystem (DBMS), und Datenbanken. DB DB wo die Daten gespeichert sind, sondern lediglich, wie sie auf diese Daten zugreifen können. Neben der physikalischen Verwaltung der Daten hat ein Datenbankmanagementsystem weitere Aufgaben: s Bearbeitung von Datenbankabfragen (Query) s Gewährleistung der Datensicherheit – auch nach Systemabsturz s Gewährleistung des Datenschutzes über die Vergabe von Zugriffsrechten s Synchronisation bei gleichzeitigem Zugriff auf eine Datenbank durch mehrere Nutzer (Multiuser-DB) s Bereitstellung von Werkzeugen für den Datenbankentwurf s Bereitstellung von „Assistenten“ z. B. für Berichte (Reports), Formulare und Abfragen s Konvertieren der Daten in andere Formate (Datenexport) Wie im letzten Abschnitt erläutert, müssen Sie bei Datenbanksystemen zwischen Client-Server-Systemen für große und sehr große Datenbanken mit mehreren Millionen Datensätzen und Fileserver-Systemen für kleine und mittlere Datenbanken unterscheiden. Den kommerziellen Bereich teilen sich hierbei die drei großen Systeme DB2 von IBM, Microsoft SQL-Server und Oracle Database auf. Ein zweites Unterscheidungsmerkmal ist, ob es sich um ein kommerzielles oder kostenloses Produkt handelt. Dass Letzteres nicht unbedingt minderwertig sein muss, beweist die große Verbreitung von MySQL auf Webservern. In Kapitel 10.5 stellen wir Ihnen vor, wie Sie sich einen Webserver mit MySQL lokal auf Ihrem Rechner installieren können, um mittels PHP darauf zuzugreifen. In der Tabelle sind die wichtigsten Datenbanksysteme zusammengestellt, ohne dass die Liste einen Anspruch auf Vollständigkeit erhebt: Datenbanksysteme Name System Art In der Tabelle wird zwischen ClientServer- und FileserverSystemen unterschieden. DB2 (IBM) Client-Server kommerziell s s Microsoft SQL-Server Client-Server kommerziell s s Oracle Database Client-Server kommerziell s s PostgreSQL Client-Server Open Source s MySQL Client-Server Open Source s Microsoft Access Fileserver kommerziell s FileMaker Fileserver kommerziell s s OpenOffice Base Fileserver Open Source s s s SQLite Fileserver Open Source s s s 170 Windows Mac OS Unix/Linux s s s 2.4.6 Aufgaben Datenbanken 1 Datenbank-Fachbegriffe kennen Gegeben ist folgende Auftragstabelle eines Schreibwarenhandels: ANr Datum Kunde Produkt Menge 1 11.11.11 Schulz Klebstoff 3 2 12.01.11 Schmitt Schere 2 3 09.02.11 Wagner Hefter 1 4 10.03.11 Maier Locher 1 5 09.05.11 Huber Ordner 5 a. Ordnen Sie die Fachbegriffe zu: s $ATENSATZ s $ATENFELD s !TTRIBUT s 3CHLàSSEL s &ELDNAME b. Welche Datentypen kommen in der Tabelle vor? b. Bringen Sie die Datenbank in die 1. Normalform. c. Bringen Sie die Datenbank in die 3. Normalform. 4 ER-Modell kennen a. Erklären Sie die Funktion des ERModells. b. Finden Sie je ein Alltagsbeispiel für eine s "EZIEHUNG s N"EZIEHUNG s MN"EZIEHUNG c. Weshalb sind m:n-Beziehungen problematisch? Nennen Sie die notwendige Maßnahme. 5 Datenbank-Fachbegriffe kennen 2 Anforderungen an Datenbanken kennen Erklären Sie die Bedeutung der beiden Hauptforderungen an den Datenbankentwurf: a. Datenkonsistenz b. Redundanzfreiheit 3 Datenbank normalisieren Gegeben ist die Datenbank eines kleinen Medienbetriebes: a. Beschreiben Sie die Mängel. Erklären Sie die Aufgaben von: a. SQL b. ODBC c. DBMS 6 ER-Modell anwenden Eine Firma besitzt mehrere Firmenfahrzeuge. Eine Datenbank soll dabei helfen, die aktuell im Einsatz befindlichen und verfügbaren Fahrzeuge zu verwalten. Folgende Informationen sollen in der Datenbank enthalten sein: Name Abteilung Telefon E-Mail Bernd Müller Geschäftsleitung 1701-0 [email protected] Schwarz, Stefan Vertrieb 1701-10 [email protected] Petra Maier Vertrieb 1701-10 [email protected] Bernd Stöckle Produktion 1701-11 [email protected] Maier Bert Produktion 1701-11 [email protected] Beate Klinger Kunden 1701-12 [email protected] Datenbank zu Aufgabe 3 171 Fahrzeuge: Mitarbeiter: Einsatz: Fabrikat, Modell, Kennzeichen Vorname, Name, Abteilung Datum, Uhrzeit, Fahrzeug, Mitarbeiter Entwerfen Sie das ER-Modell der Datenbank. 7 SQL-Befehle anwenden Gegeben ist folgende Kundendatenbank: kunden KNr 1 Name Vorname Schlund Patrick Strasse Hauptstraße 13 Ort Seelbach Telefon 07823 1312 2 Müller Bernd Mühlgasse 1 77933 Lahr 07821 96484 3 Dreher Franz Gartenstraße 15 76133 Karlsruhe 0721 124576 4 Eberle Markus Mozartstraße 11 79540 Lörrach 07621 77889 5 Eberle Maria Vogelsang 12 79104 Freiburg 0761 456456 Formulieren Sie SQL-Abfragen: a. Alle Datensätze anzeigen b. Alle Datensätze anzeigen, sortiert nach Ort c. Alle Datensätze mit Namen „Eberle“ anzeigen d. Einen neuen Datensatz einfügen: Schmitt, Isabel, Mattweg 12, 77933 Lahr, 07821 335566 e. Datensatz mit der KNr 4 ändern: 07621 98877. f. Datensatz mit der KNr 2 löschen. 8 Referenzielle Integrität kennen Erklären Sie den Begriff „Referenzielle Integrität“ an einem Beispiel. 172 Plz 77960 Datenbanken 9 Datenbank normalisieren Gegeben ist folgende Datenbank eines Sportgeschäfts: Datum 01.01.11 Kunde Schulz 11.01.11 Müller 12.02.11 Dreher 13.02.11 Eberle 14.05.11 Eberle 21.05.11 26.05.11 Strasse Hauptstraße 13 Plz 77960 Ort Seelbach Produkte Ski, Stöcke Mühlgasse 1 77933 Lahr Schlittschuhe Gartenstraße 15 76133 Karlsruhe Laufschuhe, Trikot Mozartstraße 11 79540 Lörrach Tennisschläger Vogelsang 12 79104 Freiburg Tennisschläger Müller Mühlgasse 1 77933 Lahr Ski Dreher Gartenstraße 15 76133 Karlsruhe Golfschläger, Trikot a. Beschreiben Sie die Mängel. b. Bringen Sie die Datenbank in die 3. Normalform. 173