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')
