Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| gf2:datenbanken:einleitung [2023/05/15 15:24] – lehmannr | gf2:datenbanken:einleitung [2024/05/23 11:03] (aktuell) – lehmannr | ||
|---|---|---|---|
| Zeile 9: | Zeile 9: | ||
| === Ausgangslage === | === Ausgangslage === | ||
| - | Nehmen wir einmal an, Sie betreiben ein eigenes soziales Netzwerk. | + | Nehmen wir einmal an, Sie betreiben ein eigenes soziales Netzwerk. |
| Die Daten, die den Inhalt ihrer Webseite bilden (Fotos, Kommentare, Informationen zu den Benutzern etc.) werden in Tabellen (ähnlich wie Excel-Tabellen) auf ihrem Server gespeichert. | Die Daten, die den Inhalt ihrer Webseite bilden (Fotos, Kommentare, Informationen zu den Benutzern etc.) werden in Tabellen (ähnlich wie Excel-Tabellen) auf ihrem Server gespeichert. | ||
| Die untenstehende Tabelle zeigt einen Teil dieser Daten: Benutzer Ihres sozialen Netzwerkes (in der Titelzeile gelb markierte Spalten) haben Fotos gepostet (blau markiert) und diese wurden dann von anderen Benutzern kommentiert (grün markiert). | Die untenstehende Tabelle zeigt einen Teil dieser Daten: Benutzer Ihres sozialen Netzwerkes (in der Titelzeile gelb markierte Spalten) haben Fotos gepostet (blau markiert) und diese wurden dann von anderen Benutzern kommentiert (grün markiert). | ||
| - | |||
| - | Diese Art der Speicherung ist bereits eine einfache **Datenbank**. Das unten abgebildete Element wird als **Tabelle** bezeichnet. Sie besteht aus Spalten und Zeilen. Die Spalten werden **Felder** genannt: sie stellen ein bestimmtes Merkmal dar, z. B. die Nutzernamen des Netzwerks. Die Zeilen sind die Einträge (auch **Datensätze** genannt): In diesem Fall entspricht jede Zeile einem Kommentar, der bei einem geposteten Bild gemacht wurde. | ||
| </ | </ | ||
| <WRAP column 30%> | <WRAP column 30%> | ||
| Zeile 21: | Zeile 19: | ||
| </ | </ | ||
| </ | </ | ||
| + | Diese Art der Speicherung ist bereits eine einfache **Datenbank**. Das unten abgebildete Element wird als **Tabelle** bezeichnet. Sie besteht aus Spalten und Zeilen. Die Spalten werden **Felder** genannt: diese Felder stellen ein bestimmtes Merkmal (ein sogenanntes **Attribut**) dar, beispielsweise die Nutzernamen des Netzwerks. Die Zeilen sind die Einträge (auch **Datensätze** genannt): In diesem Fall entspricht jede Zeile einem Kommentar, der bei einem geposteten Bild gemacht wurde. | ||
| + | |||
| \\ | \\ | ||
| Zeile 27: | Zeile 27: | ||
| <WRAP nicebox green> | <WRAP nicebox green> | ||
| + | ** Aufgabe 1 ** \\ | ||
| Studieren Sie die oben abgebildete Tabelle und beantworten Sie die folgenden Fragen: | Studieren Sie die oben abgebildete Tabelle und beantworten Sie die folgenden Fragen: | ||
| - Wie viele Kommentare werden durch die Tabelle gespeichert? | - Wie viele Kommentare werden durch die Tabelle gespeichert? | ||
| - Wie viele gepostete Bilder sind in der Tabelle enthalten? | - Wie viele gepostete Bilder sind in der Tabelle enthalten? | ||
| - | - Wer hat am meisten Kommentare erstellt? Wie viele? | + | - Wer hat am meisten Kommentare erstellt? Wie viele sind dies? |
| - | - Wer hat am meisten Bilder gepostet und wie viele? | + | - Wer hat am meisten Bilder gepostet und wie viele sind dies? |
| - Welches Bild hat am meisten Kommentare erhalten? | - Welches Bild hat am meisten Kommentare erhalten? | ||
| - Was muss in der Tabelle geändert werden, wenn ein Kommentar gelöscht wird? | - Was muss in der Tabelle geändert werden, wenn ein Kommentar gelöscht wird? | ||
| - Was muss in der Tabelle geändert werden, wenn ein Bild gelöscht wird? | - Was muss in der Tabelle geändert werden, wenn ein Bild gelöscht wird? | ||
| - | - Was muss in der Tabelle geändert werden, wenn ein Benutzer seine Mailadresse oder seinen Loginnamen ändert? Oder wenn er gelöscht wird? | + | - Was muss in der Tabelle geändert werden, wenn ein Benutzer seine Mailadresse oder seinen Loginnamen |
| </ | </ | ||
| Zeile 44: | Zeile 45: | ||
| <WRAP nicebox blue> | <WRAP nicebox blue> | ||
| **Redundanzen: | **Redundanzen: | ||
| - | Redundanzen bedeutet | + | Redundant bedeutet< |
| + | Redundanzen bedeutet | ||
| </ | </ | ||
| Die folgende Abbildung veranschaulicht diese Problematik sehr gut. In der Tabelle werden die Daten der Benutzer oder auch die Beschreibungen der Bilder oft mehrmals gespeichert. Beachten Sie beispielsweise, | Die folgende Abbildung veranschaulicht diese Problematik sehr gut. In der Tabelle werden die Daten der Benutzer oder auch die Beschreibungen der Bilder oft mehrmals gespeichert. Beachten Sie beispielsweise, | ||
| + | \\ | ||
| Redundanzen gibt es auch bei den kommentierenden Nutzern und zwischen den kommentierenden Nutzern und den Nutzern, welche die Fotos gepostet haben. | Redundanzen gibt es auch bei den kommentierenden Nutzern und zwischen den kommentierenden Nutzern und den Nutzern, welche die Fotos gepostet haben. | ||
| Zeile 56: | Zeile 58: | ||
| === Lösung: relationelle Datenbank === | === Lösung: relationelle Datenbank === | ||
| - | Eine effiziente und einfache Lösung des Problems ist die sogenannte **relationale Datenbank**. Dabei werden die Daten auf mehrere Tabellen verteilt, die miteinander in Verbindung stehen, also verknüpft sind. | + | Eine effiziente und einfache Lösung des Problems ist die sogenannte **relationale Datenbank**. Dabei werden die Daten auf mehrere |
| Um dies zu erreichen, muss für <color # | Um dies zu erreichen, muss für <color # | ||
| - | In unserem Beispiel gibt es Redundanzen bei den Benutzern und bei den geposteten Bildern. | + | In unserem Beispiel gibt es Redundanzen bei den Benutzern und bei den geposteten Bildern. |
| - | Die Tabelle " | + | Die **Tabelle " |
| {{: | {{: | ||
| Zeile 71: | Zeile 73: | ||
| <WRAP nicebox blue> | <WRAP nicebox blue> | ||
| **Primärschlüssel: | **Primärschlüssel: | ||
| - | Primärschlüssel sind Felder in Tabellen, die für jeden Datensatz (jede Zeile in der Tabelle) einen absolut eindeutigen Wert enthalten. Primärschlüssel dienen dazu, jeden Datensatz eindeutig identifizieren zu können. Man sollte stets versuchen, Namen von Menschen als Primärschlüssel zu vermeiden, da mehrere Menschen gleich heissen können. Das würde dann zu Problemen führen. | + | <color #7092be>Primärschlüssel</ |
| + | \\ | ||
| + | Bemerkung: | ||
| </ | </ | ||
| Zeile 78: | Zeile 82: | ||
| {{: | {{: | ||
| - | Auch bei der Tabelle der Bilder wurde ein Primärschlüssel **photo_id** hinzugefügt, | + | Auch bei der Tabelle der Bilder wurde ein Primärschlüssel **photo_id** hinzugefügt, |
| - | Und nun kommen wir schliesslich zur ursprünglichen | + | Und nun kommen wir schliesslich zur ursprünglichen **Tabelle |
| + | \\ | ||
| + | Diese drei Felder sind Primärschlüssel von anderen Tabellen und man spricht | ||
| {{: | {{: | ||
| - | In dieser Tabelle verweist das Feld " | + | In dieser Tabelle verweist das Feld " |
| + | \\ Dieser Fremdschlüssel gibt an, welcher Benutzer den Kommentar erstellt hat. | ||
| <WRAP nicebox blue> | <WRAP nicebox blue> | ||
| **Fremdschlüssel: | **Fremdschlüssel: | ||
| - | Fremdschlüssel sind Datenbankfelder in einer Tabelle, die sich auf Datensätze anderer Tabellen beziehen. Normalerweise bezieht sich ein Fremdschlüssel immer auf den Primärschlüssel der anderen Tabelle. | + | <color #7092be>Fremdschlüssel</ |
| </ | </ | ||
| - | Bei der Verwendung einer relationalen Datenbank | + | Bei der Verwendung einer relationalen Datenbank |
| - | geringer | + | geringer, als es ursprünglich |
| + | Die relationale Datenbank bringt noch weitere Vorteile mit sich: Wenn ein Benutzer beispielsweise seine Mailadresse ändert, muss man nur einen einzigen Eintrag (Datensatz) in der Tabelle " | ||
| <WRAP nicebox blue> | <WRAP nicebox blue> | ||
| **Relationale Datenbanken: | **Relationale Datenbanken: | ||
| - | In Relationalen Datenbanken werden die Daten immer in Form von Tabellen abgespeichert. Dabei hat jede Tabelle einen eigenen Primärschlüssel. Fremdschlüssel werden | + | In Relationalen Datenbanken werden die Daten immer in Form von Tabellen abgespeichert. Dabei hat jede Tabelle einen eigenen Primärschlüssel. |
| - | Relationale Datenbanken | + | Fremdschlüssel werden benutzt, um verschiedene Tabellen so <color #7092be>miteinander zu verbinden, dass Redundanzen möglichst vermieden</ |
| + | Relationale Datenbanken | ||
| </ | </ | ||
| - | |||
| - | Das hat aber noch weitere Vorteile: Wenn ein Benutzer beispielsweise seine Mailadresse ändert, genügt es, einen einzigen Eintrag (Datensatz) in der Tabelle " | ||
| <WRAP nicebox green> | <WRAP nicebox green> | ||
| - | | + | ** Aufgabe 2 ** \\ |
| + | * Betrachten Sie die unten abgebildeten drei zusätzlichen Zeilen in der ** Tabelle | ||
| {{: | {{: | ||
| - | * In unserer Tabelle " | + | * In unserer Tabelle " |
| </ | </ | ||
| + | <WRAP group> | ||
| + | <WRAP column 60%> | ||
| + | Nun werden Sie selbst Administrator/ | ||
| - | Nun wirst du selbst Administrator/ | + | Jeder und jede Lernende hat sein bzw. ihr eigenes Netzwerk, welche sich durch die Namen unterscheiden. Unter dem Link xyz.instahub.org, |
| - | Klicke zunächst auf das Datenbanksymbol oben rechts (das mittlere Symbol) und wähle " | ||
| + | Klicken Sie zunächst auf das Datenbanksymbol oben rechts (das mittlere Symbol, siehe Abbildung) und wählen Sie " | ||
| + | Danach können Sie Ihre Social-Netzwerk-Datenbank durchsuchen. Standardmässig ist als einziges die Tabelle " | ||
| + | Wählen Sie die Tabelle " | ||
| + | |||
| + | </ | ||
| + | <WRAP column 33%> | ||
| + | {{ : | ||
| + | \\ | ||
| + | \\ | ||
| + | {{ : | ||
| + | \\ | ||
| + | \\ | ||
| + | {{ : | ||
| + | |||
| + | |||
| + | </ | ||
| + | </ | ||
| <WRAP nicebox green> | <WRAP nicebox green> | ||
| + | **Aufgabe 3**\\ | ||
| Filtern Sie die folgenden Daten aus der Tabelle " | Filtern Sie die folgenden Daten aus der Tabelle " | ||
| - Alle Benutzer, wobei nur der Name und die Email-Adresse angezeigt weden. | - Alle Benutzer, wobei nur der Name und die Email-Adresse angezeigt weden. | ||
| Zeile 117: | Zeile 145: | ||
| - Die Benutzer/ | - Die Benutzer/ | ||
| - Die Benutzer/ | - Die Benutzer/ | ||
| - | - Die Benutzer, die kleiner als 1.65m und die Benutzerinnen, | + | - Die Benutzer, die kleiner als 1.65m und die Benutzerinnen, |
| </ | </ | ||
| + | [[gf2: | ||
| | | ||