informatikZentrale

unterrichtsmaterialien für den informatikunterricht: präsentationen, übungen, projekte

Datenbanken: Fremdschlüssel

Falls über diesem Text keine PDF-Präsentation zu sehen ist, wurde diese von Ihrem Browser direkt runtergeladen (wenn Sie z.B. mit Safari@Mac surfen). Sie könnnen zum Download auch hier klicken: Direktdownload PDF-Präsentation

Ein Fremdschlüssel ist ein Attribut, das auf einen Datensatz in einer anderen Relation verweist.

Ist für Relation 1 ein Attribut A Primärschlüssel und taucht dieses Attribut A in Relation 2 auf, dann ist es dort Fremdschlüssel.

Beispiel:

Relation 1: Artikel

Artikel_ID Artikelname Preis Hersteller_ID
1 Schuhe 19.99 3
2 Hosen 25.99 3
3 Jacken 30.50 1

Relation 2: Hersteller

Hersteller_ID Herstellername PLZ Ort
1 Shoe-Land 79331 Suffenhausen
2 Bekleidungsdepot 38851 Nordhof
3 All-in-One GbR 50025 Halbach

Hier verweist in der Relation "Artikel" die Hersteller_ID als Fremdschlüssel auf den Primärschlüssel der Relation 2 "Hersteller".

Übungen

Alle Übungen finden Sie in der Materialsammlung (dort auch alle zusätzlichen Dateien wie Bilder, Klassendiagramme oder HTML-Vorlagen!).

Die aktuelle Übung können Sie hier als txt-File herunterladen.


***** Übungen: Datenbanken - Fremdschlüssel *****

DB_02-1: Fremdschlüssel bestimmen (einfach)

Gegeben seien folgende Relationen (auch im Bild 06datenbanken/datenbanken02_fremdschluessel_uebung1.png ):

R1 "Fahrzeuge" mit den Attributen
Fahrzeug_ID, Marke_ID, Anzahl_Tueren, PS

R2 "Marken" mit den Attributen
Marke_ID, Marke_Name, Hersteller_Land, Gruendungsdatum

Wo finden Sie einen Fremdschlüssel?




DB_02-2: Fremdschlüssel bestimmen (einfach)

(= 1. Aufgabe in 06datenbanken/datenbanken02_fremdschluessel-AB.rtf )
Gegeben seien folgende Relationen:

R1 "Wurstsorten" mit den Attributen
ID, Sorte_Name, Lieferant_ID, Mehrwertsteuersatz, Einkaufspreis, Farbstoff_ID

R2 "Farbstoffe" mit den Attributen
ID, Name, Gefaehrlichkeitsstufe

R3 "Lieferanten" mit den Attributen
ID, Name, Postleitzahl, Ort, Status

a) Wo finden Sie Fremdschlüssel?

b) Bilden Sie diese Relationen z.B. in Word durch Tabellen ab und füllen Sie sie jeweils mit zwei fiktiven (aber theoretisch sinnvollen) Datensätzen.




DB_02-3: Fremdschlüssel bestimmen (anspruchsvoller)

(= 2. Aufgabe in 06datenbanken/datenbanken02_fremdschluessel-AB.rtf )

Gegeben sei folgende Relation:

R1 "DVDs" mit den Attributen
DVD_ID, Titel, Regisseur_Name, Laufzeit, Produktionsjahr, Vertriebsfirma_Name

a) In welchen Attributen erkennen Sie Fremdschlüssel (Tipp: Es sind 2)?

b) Skizzieren Sie mögliche Relationen als Tabellen (z.B. in Word) mit einigen sinnvollen Attributen.

b) Die Fremdschlüssel sind nicht gut gewählt. Finden Sie bessere.




DB_02-4: Zusammenfassende Übungen: Primär- und Fremdschlüssel

Benutzen Sie die Datei 06datenbanken/datenbanken02_fremdschluessel-uebungen.png

Bestimmen Sie für jede Relation den/die Primärschlüssel und falls vorhanden den/die Fremdschlüssel. Achtung: Nicht alle Relationen sind sinnvoll, möglicherweise gibt es keinen Primärschlüssel (in diesem Fall einfach ein "-" oder "keinen" eintragen, bitte keine Erklärungen).

A) AUTO
Relation Autos:
- Primärschlüssel: _____________________
- Fremdschlüssel:  _____________________

B) LIEFERANTEN
Relation Lieferanten:
- Primärschlüssel: _____________________
- Fremdschlüssel:  _____________________

C) ONLINESHOP 1
Relation Bestellungen:
- Primärschlüssel: _____________________
- Fremdschlüssel:  _____________________

Relation Besteller
- Primärschlüssel: _____________________
- Fremdschlüssel:  _____________________

D) ONLINESHOP 2
Relation Bestellungen
- Primärschlüssel: _____________________
- Fremdschlüssel:  _____________________

Relation Rabatt_Status
- Primärschlüssel: _____________________
- Fremdschlüssel:  _____________________

Relation Rabatt_Grund
- Primärschlüssel: _____________________
- Fremdschlüssel:  _____________________




DB_02-5: Fremdschlüssel bestimmen, Datenbank "Fahrraeder"

ACHTUNG: EINE TABELLARISCHE VERSION FINDEN SIE IN DER DATEI
06datenbanken/datenbanken02-fremdschluessel-uebungen.xls
(Tabellenblatt "fahrraeder)

Anmerkung: Primärschlüssel sind durch einen Stern (*) markiert, da diese Aufgabe auch als Nur-Text vorliegt und deshalb keine Unterstreichungen vorgenommen werden können.

(Evtl. sinnvolle Vorarbeit, wenn Sie Schwierigkeiten haben: Skizzieren Sie alle Tabellen auf EINEM Excel-Tabellenblatt.)=

Identifizieren Sie die Fremdschlüssel. Schreiben Sie HINTER die Fremdschlüssel den zugehörigen Primärschlüssel in Klammern. Beispiel, bei dem attribut_2 als Fremdschlüssel auf einen Primärschlüssel attribut_x verweist:
attribut_1
attribut_2 (*attribut_x)
attribut_3

Relation 1: "fahrraeder"
* fahrrad_id
typ
bezeichnung
gangschaltung
bremsen
(Beispieldatensatz: 17, 'Mountainbike', 'DC 177', 8, 56)

Relation 2: "optionale_ausstattung"
*id
name
einkaufspreis
verkaufspreis
(Beispieldatensatz: 9, 'Schutzbleche', 13.27, 19.99)

Relation 3: "schaltungen"
*id
hersteller
typbezeichnung
anzahl_gaenge
art
(Beispieldatensatz: 5, 12, 'Speedhub 500/14', 14, 'Nabenschaltung')

Relation 4: "hersteller"
*herst_id
name
plz
ort
(Beispieldatensatz: 144, 'Burghöffer', 79312, Emmendingen)

Relation 5: "bremsen"
*id
typ_bezeichnung
hersteller
bremskraft
(Beispieldatensatz: 12, 'HS 33', 82, 30)

Relation 6: "fahrrad_hat_optionale_ausstattung"
fahrrad
ausstattungs_id
(beispieldatensatz: 5,1)




DB_02-6: Fremdschlüssel bestimmen, Datenbank "Kunden"

ACHTUNG: EINE TABELLARISCHE VERSION FINDEN SIE IN DER DATEI
06datenbanken/datenbanken02-fremdschluessel-uebungen.xls
(Tabellenblatt "kunden")

Anmerkung: Primärschlüssel sind durch einen Stern (*) markiert, da diese Aufgabe auch als Nur-Text vorliegt und deshalb keine Unterstreichungen vorgenommen werden können.

Identifizieren Sie die Fremdschlüssel. Schreiben Sie HINTER die Fremdschlüssel den zugehörigen Primärschlüssel in Klammern. Beispiel, bei dem attribut_2 als Fremdschlüssel auf einen Primärschlüssel attribut_x verweist:
attribut_1
attribut_2 (*attribut_x)
attribut_3

Relation 1: "kunden"
*id
vorname
nachname
postleitzahl
rabattstatus
(Beispieldatensatz: 3, 'Herbert', 'Smith', 79312, 3)

Relation 2: "orte"
*postleitzahl
name
bundesland_id
(Beispieldatensatz: 79111, 'Freiburg', 2)

Relation 3: "speditionen"
*id
name
strasse
plz
(Beispieldatensatz: 28, 'DHL', 'Königsweg 38-42', 80143)

Relation 4: "bundeslaender"
*id
name
(Beispieldatensatz: 1, 'Bayern')

Relation 5: "kunde_bevorzugt_spedition"
kunde
spedition
(Beispieldatensatz: 13, 16)

Relation 6: "rabattstatus"
*id
bezeichnung
prozent
(Beispieldatensatz: 8, 'Erstbesteller', 0)




DB_02-7: Fremdschlüssel bestimmen, Datenbank "Schueler"

ACHTUNG: EINE TABELLARISCHE VERSION FINDEN SIE IN DER DATEI
06datenbanken/datenbanken02-fremdschluessel-uebungen.xls
(Tabellenblatt "schueler"). In dieser Version müssen die Primärschlüssel erst noch markiert werden.

Anmerkung: Primärschlüssel sind durch einen Stern (*) markiert, da diese Aufgabe auch als Nur-Text vorliegt und deshalb keine Unterstreichungen vorgenommen werden können.

Identifizieren Sie die Fremdschlüssel. Schreiben Sie HINTER die Fremdschlüssel den zugehörigen Primärschlüssel in Klammern. Beispiel, bei dem attribut_2 als Fremdschlüssel auf einen Primärschlüssel attribut_x verweist:
attribut_1
attribut_2 (*attribut_x)
attribut_3

Relation 1: "schueler"
*id
vorname
nachname
strasse
postleitzahl
klassenlehrer
(Beispieldatensatz: 1, 'Herbert', 'Smith', 'Königsweg 33', 89021, 13)

Relation 2: "orte"
*postleitzahl
name
bundesland_id
(Beispieldatensatz: 79111, 'Freiburg', 2)

Relation 3: "lehrer"
*id
vorname
nachname
(Beispieldatensatz: 21, 'Josef', 'Luman')

Relation 4: "schueler_hat_lehrer"
schueler
lehrer
(Beispieldatensatz: 7, 3)

Relation 5: "lehrer_hat_faecher"
lehrer
fach
(Beispieldatensatz: 27, 18)

Relation 6: "bundeslaender"
*id
name
(Beispieldatensatz: 1, 'Bayern')

Relation 7: "faecher"
*id
name
(Beispieldatensatz: 5, 'Mathematik')