Tutorial zum Datenbankdesign für Google Calendar
(kb.databasedesignbook.com)Einführung
In diesem Tutorial zum Datenbankdesign wird gezeigt, wie man Datenbanktabellen für ein komplexes reales Projekt entwirft. Es wird ein Klon von Google Calendar entworfen. Diese Reihe erläutert den Ansatz aus dem Buch "Database Design using Minimal Modeling". Zunächst wird ein vollständiges logisches Modell erstellt, das die Kalenderdaten beschreibt, und anschließend wird auf Basis dieses logischen Modells das Tabellendesign entwickelt.
Zielgruppe
Das Ziel dieses Buches ist es, dabei zu helfen, von einer vagen Idee zu einer vollständigen Definition von Datenbanktabellen zu gelangen. Für die ersten drei Viertel des Textes ist nur ein allgemeines Verständnis von Datenbanken erforderlich; dort wird das logische Modell erläutert. Im letzten Viertel wird erklärt, wie man vom logischen Modell zur physischen Tabellenstruktur übergeht.
Inhaltsverzeichnis
- Einführung
- Der Ansatz dieses Buches
- Problembeschreibung
- Teil 1: Grundlegende ganztägige Ereignisse
- Teil 2: Zeitbasierte Ereignisse
- Teil 3: Wiederkehrende ganztägige Ereignisse
- Teil 4: Rendering der Kalenderseite
- Teil 5: Rendering der Kalenderseite für zeitbasierte Ereignisse
- Teil 6: Das vollständige logische Modell bis hierhin
- Teil 7: SQL-Tabellen erstellen
- Fazit
- Nächste Schritte
Der Ansatz dieses Buches
Oft beginnen Menschen direkt mit dem Tabellendesign, aber hier wird ein anderer Ansatz gewählt. Zuerst wird ein logisches Modell erstellt und die Beziehung zwischen Datenattributen und Entitäten definiert. Sobald das logische Modell feststeht, werden die physischen Tabellen entworfen.
Problembeschreibung
Die Hauptfunktionen von Google Calendar sollen implementiert werden. Benutzerdaten werden dabei nur minimal umgesetzt. Ereignisse haben Attribute wie Titel, Beschreibung und Ort. Der komplexeste Teil betrifft Zeit und Datum.
Teil 1: Grundlegende ganztägige Ereignisse
Anker
Zuerst müssen Anker gefunden werden. Ein Anker ist eine Entität, zum Beispiel Benutzer (User) oder Ereignis (Event). Anker übernehmen ID und Zählung.
Benutzerattribute
Für Benutzer werden nur minimale Daten modelliert, zum Beispiel die E-Mail-Adresse.
Attribute ganztägiger Ereignisse
Gespeichert werden müssen Ereignisname, Startdatum und Enddatum.
Links
Es muss festgelegt werden, wo die Information gespeichert wird, dass ein bestimmter Benutzer ein bestimmtes Ereignis erstellt hat. Dies wird nicht als Attribut, sondern als Link behandelt.
Teil 2: Zeitbasierte Ereignisse
Zeitzonen
Zeitzonen werden in vielen Ländern und Regionen verwendet. Die Definitionen von Zeitzonen ändern sich gelegentlich. Es wird ein minimales Modell für Zeitzonen implementiert.
Attribute von Zeitzonen
Gespeichert wird ein für Menschen lesbarer Name der Zeitzone.
Attribute zeitbasierter Ereignisse
Gespeichert werden Ereignisname, Startzeit und Endzeit. Verwendet wird lokale Zeit.
Links
Der Link zwischen Zeitzone und zeitbasiertem Ereignis wird definiert.
Ähnlichkeiten zwischen Datumsereignissen und Zeitereignissen
Die Ähnlichkeiten zwischen den beiden Ereignistypen werden betrachtet. Durch logische Modellierung kann die Entscheidung dazu aufgeschoben werden.
Teil 3: Wiederkehrende ganztägige Ereignisse
Attribut #1, Intervall
Es wird ein Attribut definiert, das beschreibt, wie oft sich ein Ereignis wiederholt.
Attribut #2, verschachtelte Attribute
Das Intervall wiederkehrender Ereignisse wird definiert.
Attribut #3
Für monatliche Ereignisse wird definiert, ob sie sich am gleichen Tag oder am gleichen Wochentag wiederholen.
Wochentage: Mikro-Anker
Es wird entschieden, wo Wochentage gespeichert werden. Dafür wird ein neuer Anker eingeführt.
Links
Der Link zwischen Wochentag und Ereignis wird definiert.
Überprüfung auf Vollständigkeit
Um zu prüfen, ob die Modellierung abgeschlossen ist, werden die ursprünglichen Anforderungen noch einmal betrachtet.
Wiederholungsgrenze: weitere verschachtelte Attribute
Es wird ein Attribut definiert, das festlegt, bis wann sich ein Ereignis wiederholt.
Teil 4: Rendering der Kalenderseite
Bisher wurde der Teil des Kalenders behandelt, der die Aufzeichnung betrifft. Nun muss die Wochenansicht des Kalenders für den Benutzer angezeigt werden.
Zusammenfassung von GN⁺
Dieses Tutorial erklärt komplexes Datenbankdesign Schritt für Schritt und macht es so auch für Einsteiger leicht verständlich. Durch die Modellierung der Hauptfunktionen von Google Calendar bietet es ein nützliches Beispiel, das sich auf reale Projekte anwenden lässt. Es beschreibt, wie logische Modellierung Fehler im Datenbankdesign vermeiden kann und natürlich in das Design physischer Tabellen übergeht. Ein Projekt mit ähnlichen Funktionen ist zum Beispiel Microsoft Outlook Calendar.
Noch keine Kommentare.