Informatik - Arbeiten mit Datenbanken: Unterschied zwischen den Versionen

Aus RSG-Wiki
Wechseln zu: Navigation, Suche
 
(10 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt)
Zeile 26: Zeile 26:
 
Für Objekte einer Klasse kann man wie auch schon in der Tabellenkalkulation Datentypen festlegen. Man unterscheidet:
 
Für Objekte einer Klasse kann man wie auch schon in der Tabellenkalkulation Datentypen festlegen. Man unterscheidet:
  
{|width=97%| style="background-color:#F1F1FF; padding:0.3em"
+
{| class="wikitable"
| valign="top" |
+
|-
<u>Datentyp</u>
+
! Datentyp !! Formatangabe !! Wertebereich
*VARCHAR
+
|-
 +
| VARCHAR || maximale Zeichenzahl für den Text|| Zeichenfolge von variabler, aber begrenzter Länge z.B. VARCHAR(20)
 +
|-
 +
| CHAR || Zeichenzahl für den Text || Zeichenfolge mit fester Länge
 +
|-
 +
| INT ||  || ganze Zahl
 +
|-
 +
| FLOAT ||  || Kommazahl mit etwa 7 gültigen Ziffern
 +
|-
 +
| DOUBLE ||  || Kommazahl mit etwa 15 gültigen Ziffern
 +
|-
 +
| DECIMAL || Ziffernzahl, Nachkommastellen || Kommazahl im Dezimalsystem mit genau festgelegter Stellenzahl
 +
|-
 +
| DATE ||  || Datumsangabe
 +
|-
 +
| TIME ||  || Zeitangabe
 +
|-
 +
| DATETIME ||  || kombinierte Datums- und Zeitangabe
 +
|}
  
| valign="top" |
+
Vergleiche auch Buch S. 73-75!
<u>Formatangabe</u>
+
*maximale Zeichenanzahl für den Text
+
  
| valign="top" |
+
Diese Datentypen werden den Objekten unserer Klasse zugeordnet. Dies macht man beim erstellen einer Tabelle, wenn man die Objekte einträgt und dabei den Datentyp zuweist.<br>
<u>Wertebereich</u>
+
Man notiert dies im Pflichtenheft als '''Tabellenschena'''. <br>
*Zeichenfolge von begrenzter Länge z.B. VARCHAR(20)
+
Für unser Beispiel '''EINKAUF''' schaut dann das Tabellenschema für die '''Tabelle einkauf''' wie folgt aus:<br>  
 +
einkauf(Kunde:varchar(50), Geschlecht:varchar(1), Sparte:varchar(25), Warenbezeichnung:varchar(50), Preis:decimal(8,2), Zahlungsart:varchar(10), Geschäft:varchar(25), Kaufdatum:date)<br>
  
| valign="top" |
+
{{Merke|Im Tabellenschema kommt zuerst der Name der Tabelle, danach werden in runden Klammern die Objekte mit ihrem Dateityp aufgeführt.}}
  
 +
{{Aufgaben-blau||Erkläre für die Tabelle einkauf die Einträge im Tabellenschema: <br>
 +
einkauf(Kunde:varchar(50), Geschlecht:varchar(1), Sparte:varchar(25), Warenbezeichnung:varchar(50), Preis:decimal(8,2), Zahlungsart:varchar(10), Geschäft:varchar(25), Kaufdatum:date)
 +
}}
  
 +
{{Lösung versteckt|Zuerst steht der Name der Tabelle:  einkauf<br>
 +
Dann öffnet man eine runde Klammer.<br>
 +
Nun kommen die Objekte Kunde, Geschlecht, Sparte, Warenbezeichnung, Preis, Zahlungsart, Geschäft, Kaufdatum<br>
 +
Hinter jedem Objekt steht : und danach folgt der Dateityp.<br>
 +
Dabei heißt varchar(50), dass hier eine Zeichenfolge von bis zu 50 Zeichen stehen kann.<br>
 +
cecimal(8,2) bedeutet, dass eine Dezimalzahl mit zwei Kommastellen angezeigt wird<br>
 +
date gibt eine Datumsangabe an.<br>
 +
Am Ende schließt man die runde Klammer.
 +
}}
 +
 +
Man kann die Begriffe wie Klasse, Objekt, Attribut, ... eines objektorientierten Datenmodells auf das Datenbankschema übertragen.
 +
 +
{| class="wikitable"
 +
|-
 +
! objektorientiertes Datenmodell !!  !! Datenbankschema
 +
|-
 +
| Klasse ||  || Tabellendefinition
 +
|-
 +
| Objekt ||  || Datensatz (Tabellenzeile)
 +
|-
 +
| Attribut (bei der Klasse)||  || Spalte in der Tabelle
 +
|-
 +
| Attribut (bei einem Objekt) ||  || Feld
 +
|-
 +
| Attributwert ||  || Feldinhalt
 +
|-
 +
| Menge aller Objekte einer Klasse ||  || alle Datensätze einer Tabelle
 
|}
 
|}
 +
 +
Damit hat man eine Verbindung der Begriffe aus objektorientierten Modellen (z.B. Robot Karol) zum Datenbankschema.
 +
 +
{{Aufgaben-blau||2=Du willst die Daten deiner Bücher in deinem Bücherregal erfassen. Entwirf ein geeignetes Klassendiagramm.}}
 +
 +
{{Lösung versteckt|1=Das Klassendiagramm könnte wie folgt aussehen:<br>
 +
<u>Buch</u> <br>
 +
Autor<br>
 +
Titel<br>
 +
ISBN<br>
 +
Preis<br>
 +
Erscheinungsort<br>
 +
Erscheinungsjahr<br>
 +
Bereich<br>
 +
Verlag<br>Band
 +
<br>}}
 +
 +
{{Aufgaben-blau||2=Erstelle nun in OpenOffice Base eine Datenbank buch, trage die Attribute deines Klassendiagramms ein und weise ihnen geeignete Datentypen zu. }}
 +
 +
In der von mir in Mebis bereitgestellten Datei gibt es bereits eine Tabelle buch. Wenn du sie nicht löschen willst, dann benenne sie um.<br>
 +
Zum Erstellen einer neuen Tabelle klicke in der linken Spalte auf Tabelle und dann in der rechten Spalte "Tabelle in Entwurfsansicht erstellen". Es öffnet sich ein neues Fenster mit einer Tabelle. In diese Tabelle trägst du bitte die Begriffe, die du dir im Tabellenschema überlegst hast ein und wählst einen geeigneten Dateityp aus (Feldtyp anklicken und im drop-down-menue auswählen). Wähle als Eintrag in der ersten Zeile Buchnummer! Die Erklärung hierzu folgt in der Lösung.
 +
 +
{{Lösung versteckt|1=Die Tabelle könnte dann so aussehen:<br>
 +
[[Datei:Db-erstellen einer tabelle.jpg|Datenbank-Erstellen einer Tabelle]]<br>
 +
Nun musst du die Tabelle noch abspeichern. Wenn du sie mit "speichern unter ..." abspeichern willst, kommt als nächstes die Meldung: <br>
 +
[[Datei:Db-erstellen einer tabelle2.jpg|Datenbank-Erstellen einer Tabelle-Meldung]]
 +
Es fehlt ein sogenannter '''Primärschlüssel'''. <br>Markiere mit der rechten Maustaste die Zeile "Buchnummer" und klicke im Menü unten Primärschlüssel an. Dann erscheint wie im obigen Bild ein kleiner Schlüssel, der Primärschlüssel vor der Zeile. <br>
 +
Nun kannst du die Tabelle unter dem Namen "buch" abspeichern.}}
 +
 +
Ein '''Primärschlüssel""" dient dazu einen Datensatz eindeutig zu identifizieren. Warum kann man nicht den Buchtitel verwenden. Es kann sein, dass man zwei Bücher mit gleichem Buchtitel oder ein Buch mit gleichem Titel mehrere Bände hat. Der Autor eignet sich auch nicht, da man eventuell mehrere Bücher desselben Autors hat. Ebenso fallen die anderen Begriffe heraus. <br>
 +
Deshalb solltest du als ersten Eintrag in der Tabelle die Buchnummer eintragen. Diese ist ein geeigneter Primärschlüssel, da die Bücher durchnummeriert werden und jedes Buch über seine Buchnummer eindeutig identifiziert werden kann. <br>
 +
In der [https://www.meine-schulbibliothek.de/reichsstadt-gymnasium Datenbank unserer Schulbibliothek] hat auch jedes Buch eine Signatur, die bei jedem Buch als ID angezeigt wird.
 +
 +
{{Aufgaben-blau||2=Du hast die von dir entworfene Klasse Buch in eine Datenbanktabelle buch umgesetzt. Trage nun Datensätze ein und mache die Einträge so, dass sie zu dem vereinbarten Datentyp passen.}}
 +
 +
{{Lösung versteckt|[[Datei:Db-erstellen einer tabelle3.jpg|Datenbanken-Tabelleneintrag]]}}
 +
 +
 +
{{Merksatz|MERK=Die Datensätze in einer Tabelle müssen eindeutig unterscheidbar sein. Da für die Datensätze kein Bezeichner zur Verfügung steht, können sie nur nach den Werten ihrer Felder unterschieden werden. Daher darf es niemals zwei Datensätze geben die in allen Feldwerten übereinstimmen! Deshalb muss für eine Tabelle ein <u>'''Primärschlüssel'''</u> vereinbart werden.}}
 +
 +
Will man keine ID als eigene Spalte in der Tabelle haben, kann man auch mehrere Spalten, die dazu geeignet sind Datensätze zu unterscheiden als Schlüssel nehmen.
 +
 +
{{Aufgaben-blau||2=Bearbeite im Buch Aufgabe S. 80/4.  Notiere deine Ergebnisse und falls nötig Änderungen. }}
 +
 +
{{Lösung versteckt|a) Bei den Olympischen Spielen 1988 in Seoul gewann John Smith im Freistil-Ringen (Federgewicht) Gold für die USA. Bei der gleichen Olympiade eroberte ein Namensvetter Bronze für USA im Ruder-Achter. Ebenso holte John Smith 1924 für Kanada in Paris Silber im Ruder-Achter.<br>
 +
Als Schlüssel ungeeignet. Nimmt man Geburtstag noch dazu, wäre es geeignet.
 +
b) Athen 1896, 1906 und 2004, also ungeeignet.<br>
 +
Ein geeigneter Schlüssel ist Austragungsort und -jahr.<br>
 +
c) geeignet<br>
 +
d) Ungeeignet, da es an jeder Wettkampfstätte ein Olympiastadion gibt. <br>
 +
Adresse ist ein geeigneter Schlüssel.<br>
 +
e) Ungeeinet, da es in einer Sportart mehrere Rekorde (ER, WR, OR) geben kann.<br>
 +
Disziplin und Rekordart sind ein geeigneter Schlüssel.}}
 +
 +
 +
{{Aufgaben-blau||2=a) Welches Problem erkennst du in unserer Tabelle einkauf?<br>
 +
[[Datei:Db-erstellen einer tabelle4.jpg|Datenbanken-Tabelle ohne Schlüssel]]<br>
 +
b) Gib einen Schlüssel an!<br>
 +
c) Ergänze das Tabellenschema von einkauf durch den Schlüssel.}}
 +
 +
{{Lösung versteckt|1=a) Je zwei Datensätze müssen sich in mindestens einem Feldwert unterscheiden! Die Spalte bzw. Spaltenkombination, deren Werte jeden Datensatz eindeutig festlegen, nennt man Schlüssel. In dieser Tabelle ist kein Schlüssel erkennbar. <br>
 +
b) Ein geeigneter Schlüssel ist nicht erkennbar. Personen können identische Namen haben. Ist Andrea Muster immer dieselbe Person?<br>
 +
Der Schlüssel soll alle Einkäufe unterscheidbar machen. Daher fügt man in der Tabelle eine weitere Spalte ID ein und nummeriert die Einkäufe durch. <br>
 +
Öffne in der Datei einkauf.odb die Tabelle einkauf. Dort ist die erste Spalte ID, mit der die Einkäufe durchgezählt werden und damit eindeutig unterscheidbar sind. ID ist ein geeigneter Schlüssel. Man hätte ihn auch Einkaufsnummer nennen können, aber dann wäre ja die Spalte wegen ein- bis dreistelligen Zahlen viel zu breit geworden.<br>
 +
c) Im Tabellenschema wird der Schlüssel unterstrichen: <br>
 +
einkauf(<u>ID:int(10)</u>, Kunde:varchar(50), Geschlecht:varchar(1), Sparte:varchar(25), Warenbezeichnung(varchar(50), Preis(decimal(8,2), Zahlungsart(varchar(10), Geschäft(varchar(25), Kaufdatum(date))
 +
}}
 +
 +
 +
Nun ist die Seite ganz schön lang geworden. Damit es weiterhin übersichtlich bleibt kommt eine neue Seite [[Informatik - Modellierung von Datenbanken]]

Aktuelle Version vom 21. März 2020, 14:46 Uhr

Wir hatten letzte Stunde die Datei "einkauf" aus der Tabellenkalkulation in eine Datenbank umgewandelt. Diese Datei einkauf.odb 
kannst du, falls du sie nicht mehr hast in Mebis herunterladen.
Nuvola apps kig.png   Merke

Große Datenmengen werden so gespeichert, dass gezielt ausgewählte Teile der Daten wiedergewonnen und je nach Fragestellung in geeigneter Zusammenstellung ausgegeben werden können. Dies erfolgt in Datenbanken.

Nach welchen Kriterien erstellt man eine Datenbank?

Unsere Datenbank haben wir aus einer Tabellenkalkulationsdatei durch Konvertierung übernommen. Alle Einträge aus der Tabellenkalkulation wurden eins zu eins in die Datenbank geschrieben.
Festlegungen, welche Anforderungen und Arbeitsabläufe man an ein Datenbanksystem stellt, werden in einem sogenannten 'Pflichtenheft formuliert. Dazu ist eine objektorientierte Analyse der Datensammlung hilfreich.


Bleistift 35fach.jpg   Aufgabe

Informiere dich über die Begriffe Klasse und Objekt in Informatik?

In einer Klasse sind gleichartige Objekte. Ein Objekt gehört genau einer Klasse an.
In der Klasse wir der Bauplan der Objekte festgelegt.

In der objektorientierten Programmierung bezeichnet ein Objekt ein Exemplar einer bestimmten Klasse.
Objekte derselben Klasse besitzen dieselben Attribute und Methoden. Sie können sich in den Attributwerten unterscheiden.

Für unsere Datenbank einkauf sieht das Klassendiagramm wie folgt aus:
Klassendiagramm

Vereinbarung: Klassennamen werden groß geschrieben, deshalb ist der Klassenname EINKAUF im Klassendiagramm groß gesschrieben.
Dagegen ist der Name der Tabelle einkauf klein geschrieben.


Für Objekte einer Klasse kann man wie auch schon in der Tabellenkalkulation Datentypen festlegen. Man unterscheidet:

Datentyp Formatangabe Wertebereich
VARCHAR maximale Zeichenzahl für den Text Zeichenfolge von variabler, aber begrenzter Länge z.B. VARCHAR(20)
CHAR Zeichenzahl für den Text Zeichenfolge mit fester Länge
INT ganze Zahl
FLOAT Kommazahl mit etwa 7 gültigen Ziffern
DOUBLE Kommazahl mit etwa 15 gültigen Ziffern
DECIMAL Ziffernzahl, Nachkommastellen Kommazahl im Dezimalsystem mit genau festgelegter Stellenzahl
DATE Datumsangabe
TIME Zeitangabe
DATETIME kombinierte Datums- und Zeitangabe

Vergleiche auch Buch S. 73-75!

Diese Datentypen werden den Objekten unserer Klasse zugeordnet. Dies macht man beim erstellen einer Tabelle, wenn man die Objekte einträgt und dabei den Datentyp zuweist.
Man notiert dies im Pflichtenheft als Tabellenschena.
Für unser Beispiel EINKAUF schaut dann das Tabellenschema für die Tabelle einkauf wie folgt aus:
einkauf(Kunde:varchar(50), Geschlecht:varchar(1), Sparte:varchar(25), Warenbezeichnung:varchar(50), Preis:decimal(8,2), Zahlungsart:varchar(10), Geschäft:varchar(25), Kaufdatum:date)

Nuvola apps kig.png   Merke

Im Tabellenschema kommt zuerst der Name der Tabelle, danach werden in runden Klammern die Objekte mit ihrem Dateityp aufgeführt.


Bleistift 35fach.jpg   Aufgabe

Erkläre für die Tabelle einkauf die Einträge im Tabellenschema:
einkauf(Kunde:varchar(50), Geschlecht:varchar(1), Sparte:varchar(25), Warenbezeichnung:varchar(50), Preis:decimal(8,2), Zahlungsart:varchar(10), Geschäft:varchar(25), Kaufdatum:date)

Zuerst steht der Name der Tabelle: einkauf
Dann öffnet man eine runde Klammer.
Nun kommen die Objekte Kunde, Geschlecht, Sparte, Warenbezeichnung, Preis, Zahlungsart, Geschäft, Kaufdatum
Hinter jedem Objekt steht : und danach folgt der Dateityp.
Dabei heißt varchar(50), dass hier eine Zeichenfolge von bis zu 50 Zeichen stehen kann.
cecimal(8,2) bedeutet, dass eine Dezimalzahl mit zwei Kommastellen angezeigt wird
date gibt eine Datumsangabe an.
Am Ende schließt man die runde Klammer.

Man kann die Begriffe wie Klasse, Objekt, Attribut, ... eines objektorientierten Datenmodells auf das Datenbankschema übertragen.

objektorientiertes Datenmodell Datenbankschema
Klasse Tabellendefinition
Objekt Datensatz (Tabellenzeile)
Attribut (bei der Klasse) Spalte in der Tabelle
Attribut (bei einem Objekt) Feld
Attributwert Feldinhalt
Menge aller Objekte einer Klasse alle Datensätze einer Tabelle

Damit hat man eine Verbindung der Begriffe aus objektorientierten Modellen (z.B. Robot Karol) zum Datenbankschema.


Bleistift 35fach.jpg   Aufgabe

Du willst die Daten deiner Bücher in deinem Bücherregal erfassen. Entwirf ein geeignetes Klassendiagramm.

Das Klassendiagramm könnte wie folgt aussehen:
Buch
Autor
Titel
ISBN
Preis
Erscheinungsort
Erscheinungsjahr
Bereich
Verlag
Band



Bleistift 35fach.jpg   Aufgabe

Erstelle nun in OpenOffice Base eine Datenbank buch, trage die Attribute deines Klassendiagramms ein und weise ihnen geeignete Datentypen zu.

In der von mir in Mebis bereitgestellten Datei gibt es bereits eine Tabelle buch. Wenn du sie nicht löschen willst, dann benenne sie um.
Zum Erstellen einer neuen Tabelle klicke in der linken Spalte auf Tabelle und dann in der rechten Spalte "Tabelle in Entwurfsansicht erstellen". Es öffnet sich ein neues Fenster mit einer Tabelle. In diese Tabelle trägst du bitte die Begriffe, die du dir im Tabellenschema überlegst hast ein und wählst einen geeigneten Dateityp aus (Feldtyp anklicken und im drop-down-menue auswählen). Wähle als Eintrag in der ersten Zeile Buchnummer! Die Erklärung hierzu folgt in der Lösung.

Die Tabelle könnte dann so aussehen:
Datenbank-Erstellen einer Tabelle
Nun musst du die Tabelle noch abspeichern. Wenn du sie mit "speichern unter ..." abspeichern willst, kommt als nächstes die Meldung:
Datenbank-Erstellen einer Tabelle-Meldung Es fehlt ein sogenannter Primärschlüssel.
Markiere mit der rechten Maustaste die Zeile "Buchnummer" und klicke im Menü unten Primärschlüssel an. Dann erscheint wie im obigen Bild ein kleiner Schlüssel, der Primärschlüssel vor der Zeile.

Nun kannst du die Tabelle unter dem Namen "buch" abspeichern.

Ein Primärschlüssel""" dient dazu einen Datensatz eindeutig zu identifizieren. Warum kann man nicht den Buchtitel verwenden. Es kann sein, dass man zwei Bücher mit gleichem Buchtitel oder ein Buch mit gleichem Titel mehrere Bände hat. Der Autor eignet sich auch nicht, da man eventuell mehrere Bücher desselben Autors hat. Ebenso fallen die anderen Begriffe heraus.
Deshalb solltest du als ersten Eintrag in der Tabelle die Buchnummer eintragen. Diese ist ein geeigneter Primärschlüssel, da die Bücher durchnummeriert werden und jedes Buch über seine Buchnummer eindeutig identifiziert werden kann.
In der Datenbank unserer Schulbibliothek hat auch jedes Buch eine Signatur, die bei jedem Buch als ID angezeigt wird.


Bleistift 35fach.jpg   Aufgabe

Du hast die von dir entworfene Klasse Buch in eine Datenbanktabelle buch umgesetzt. Trage nun Datensätze ein und mache die Einträge so, dass sie zu dem vereinbarten Datentyp passen.

Datenbanken-Tabelleneintrag


Maehnrot.jpg
Merke:

Die Datensätze in einer Tabelle müssen eindeutig unterscheidbar sein. Da für die Datensätze kein Bezeichner zur Verfügung steht, können sie nur nach den Werten ihrer Felder unterschieden werden. Daher darf es niemals zwei Datensätze geben die in allen Feldwerten übereinstimmen! Deshalb muss für eine Tabelle ein Primärschlüssel vereinbart werden.

Will man keine ID als eigene Spalte in der Tabelle haben, kann man auch mehrere Spalten, die dazu geeignet sind Datensätze zu unterscheiden als Schlüssel nehmen.


Bleistift 35fach.jpg   Aufgabe

Bearbeite im Buch Aufgabe S. 80/4. Notiere deine Ergebnisse und falls nötig Änderungen.

a) Bei den Olympischen Spielen 1988 in Seoul gewann John Smith im Freistil-Ringen (Federgewicht) Gold für die USA. Bei der gleichen Olympiade eroberte ein Namensvetter Bronze für USA im Ruder-Achter. Ebenso holte John Smith 1924 für Kanada in Paris Silber im Ruder-Achter.
Als Schlüssel ungeeignet. Nimmt man Geburtstag noch dazu, wäre es geeignet. b) Athen 1896, 1906 und 2004, also ungeeignet.
Ein geeigneter Schlüssel ist Austragungsort und -jahr.
c) geeignet
d) Ungeeignet, da es an jeder Wettkampfstätte ein Olympiastadion gibt.
Adresse ist ein geeigneter Schlüssel.
e) Ungeeinet, da es in einer Sportart mehrere Rekorde (ER, WR, OR) geben kann.

Disziplin und Rekordart sind ein geeigneter Schlüssel.


Bleistift 35fach.jpg   Aufgabe

a) Welches Problem erkennst du in unserer Tabelle einkauf?
Datenbanken-Tabelle ohne Schlüssel
b) Gib einen Schlüssel an!
c) Ergänze das Tabellenschema von einkauf durch den Schlüssel.

a) Je zwei Datensätze müssen sich in mindestens einem Feldwert unterscheiden! Die Spalte bzw. Spaltenkombination, deren Werte jeden Datensatz eindeutig festlegen, nennt man Schlüssel. In dieser Tabelle ist kein Schlüssel erkennbar.
b) Ein geeigneter Schlüssel ist nicht erkennbar. Personen können identische Namen haben. Ist Andrea Muster immer dieselbe Person?
Der Schlüssel soll alle Einkäufe unterscheidbar machen. Daher fügt man in der Tabelle eine weitere Spalte ID ein und nummeriert die Einkäufe durch.
Öffne in der Datei einkauf.odb die Tabelle einkauf. Dort ist die erste Spalte ID, mit der die Einkäufe durchgezählt werden und damit eindeutig unterscheidbar sind. ID ist ein geeigneter Schlüssel. Man hätte ihn auch Einkaufsnummer nennen können, aber dann wäre ja die Spalte wegen ein- bis dreistelligen Zahlen viel zu breit geworden.
c) Im Tabellenschema wird der Schlüssel unterstrichen:

einkauf(ID:int(10), Kunde:varchar(50), Geschlecht:varchar(1), Sparte:varchar(25), Warenbezeichnung(varchar(50), Preis(decimal(8,2), Zahlungsart(varchar(10), Geschäft(varchar(25), Kaufdatum(date))


Nun ist die Seite ganz schön lang geworden. Damit es weiterhin übersichtlich bleibt kommt eine neue Seite Informatik - Modellierung von Datenbanken