Skip to content
This repository was archived by the owner on Sep 18, 2020. It is now read-only.

Backend 2.4 Datenmodell

Maren edited this page Jan 29, 2015 · 4 revisions

← zurück zum Backend Wiki

#2.4 Datenmodell

Verantwortliche/r: Maren, Tabea

Schnittstellen zum Frontend

Die Daten werden vom Frontend über eine einzige Schnittstelle des Backends bezogen. Darüber wird sowohl der Zugriff auf die Daten aus der Datenbank als auch auf die Daten aus Foursquare.com bereitgestellt.

Datenschnittstellen

Datenstruktur der Datenbank

Alle Daten, die aus Foursquare.com gezogen werden können, werden nicht in der Datenbank gespeichert, mit Ausnahme der barID, durch die die Zuordnung zu den Foursquare-Daten ermöglicht wird. Für diese Zuordnung wird die barID in der Tabelle "bar" als Primary Key verwendet und bezieht sich einerseits als FK auf den PK der Foursquare-Daten und andererseits als PK für den FK in "happyHour".

Das folgenden Datenmodell beschreibt die Datenbankstruktur in der H2 Datenbank. Auf Basis dessen wird vom Backend Team in der Datenbank ein Schema erstellt, in das die Daten eingepflegt werden.

Das Marketing Team ist für die Beschaffung der Happy-Hour-Daten zuständig. Beschreibung der Schnittstelle: Marketing-Backend-Schnittstelle

Die Datenbanktabellen

barReport Wertebereich Sonstiges
id integer PK
barID string FK
description string

In dieser Tabelle wird gespeichert, ob die Bar durch einen User gemeldet wurden ist oder nicht. Dafür erfolgt die Zuordnung zu der Bar über die barID. Hinzu kommt eine Fehlerbeschreibung, die durch den Nutzer eingegeben werden kann und ein Boolean, der standardmäßig false ist. Bei einer Meldung durch den Nutzer, soll der Boolean auf true gesetzt werden.

user Wertebereich Sonstiges
name string NOT NULL
hashPw string NOT NULL

In der "user"-Tabelle werden Administrator User hinterlegt. Diese Administrator können sich anmelden und mit ihrem Name und Passwort authentifizieren. Das Passwort wird als MD5 Hash in der Datenbank abgelegt. Der Name muss hierfür eindeutig sein.

happyHour Wertebereich Sonstiges
id integer PK
barID string FK
description string
start time NOT NULL
end time
monday boolean NOT NULL
tuesday boolean NOT NULL
wednesday boolean NOT NULL
thursday boolean NOT NULL
friday boolean NOT NULL
saturday boolean NOT NULL
sunday boolean NOT NULL

In der "happyHour"-Tabelle werden alle Daten bezüglich den Happy Hours der Bars gespeichert. Wie oben beschrieben wird als Primary Key die bar ID verwendet, die durch das Marketing und Datenbeschaffungs-Team über den hier beschriebenen Weg hergeleitet wird. Die restlichen Informationen zu den Happy Hours, wie eine Kurzbeschreibung, Start- und Endzeit, sowie den Wochentag, wird ebenfalls über das Marketing und Datenbeschaffungs-Team zusammengetragen und in die Datenbanktabelle eingefügt.

route Wertebereich Sonstiges
hash string PK
data string NOT NULL
top boolean NOT NULL

Die route Tabelle enthält die Routen, die durch den Nutzer geshared werden. Hierfür wird der Link der Route und ein Hashwert gespeichert, der alle Daten bezüglich der Route enthält. Hinzu kommt ein Boolean, der standardmäßig false ist. Er wird nur auf true gesetzt bei den vereinbarten top-Routen, die manuell eingegeben werden. Es werden sieben Top-routen festegesetzt - für jeden Wochentag eine vordefinierte Route -, die nicht veränderbar sind.

Herleitung der barID

Folgender Link enthält einen Client, das dazugehörige Passwort, den Stand der Daten und zum Schluss den Namen, nach dem gesucht wird. Der Beginn kann einfach übernommen werden, am Ende kann der Name der gesuchten Bar eingeben werden (im Beispiel wird nach Sausalitos in Stuttgart gesucht)

https://api.foursquare.com/v2/venues/search?client_id=ZNZQPW20YC1N1VERBVBAVWMN1YZX4Z0OW0IEUYBSOYO5HXTV&client_secret=E5IUW33BRPBBVWO1JP4FVJ2Z4DBPLVTZVPX22QEOLNE3ZTFX&v=20141204&ll=48.7762,9.1729&query=sausalitos

Die ID ist in der Antwort enthalten. Hier ein Teil der Antwort aus der Beispielabfrage:

{"meta":{"code":200},"response":{"venues":[{"id":"544ad6ce498e91fa4dc24507","name":"Sausalitos"

ID von Sausalitos in der Marienstraße Stuttgart wäre: 544ad6ce498e91fa4dc24507

Daten aus Foursquare

Alle Daten, die aus Foursquare.com gezogen werden können, sind in folgender Tabelle aufgelistet. Sie werden standardmäßig über den selben Weg, wie die oben beschriebene Herleitung der barID, aus Foursquare gezogen. Allerdings wird statt der Suche nach dem Name der Bar, nach der ID der Bar gesucht. Die Daten aus Foursquare werden nicht in der Datenbank gespeichert. Diese Daten werden lediglich gecacht zur Verfügung gestellt. Für das Cachen der Daten wird Google Guava verwendet. Der Ablauf bei einer Anfrage wird im nächsten Unterkapitel dargestellt.

barFoursquareDaten Wertebereich Sonstiges
barID string PK
barBild string
barBeschreibung string
barOeffnungszeiten string
barAdresse string
barLongitude string
barLatitude string
barName string
barBewertung string
euroBewertung string
barTelefonnummer string

Cachen der Foursquare Daten

Bei einer Anfrage nach Daten aus dem Frontend wird überprüft, ob diese Daten aktuell im Cache vorliegen oder nicht. Sind sie dort vorhanden, werden sie von dort ausgegeben. Ist dies nicht der Fall wird über die REST Schnittstelle Foursquare aufgerufen und über die barID die restlichen benötigten Daten ausgelesen und in den Cache gespeichert und anschließend ausgegeben. Bei der Speicherung um Cache wird ebenfalls eine Cache-Zeit in den Settings gespeichert, nach deren Ablauf die Daten aus dem Cache gelöscht werden. Bei dem unterstützenden Framwork, das hierfür verwendet wird, wurde sich für Google Guava verwendet, da es das Cachen vereinfacht und man sich anschließend sich nicht mehr darum kümmern muss, dass alte Cache-Einträge gelöscht werden.

Cache Ablauf

Clone this wiki locally