TigerJython | xx für Gymnasien |
Datenbankapplikationen wie Twitter wären ohne Datenbanksysteme kaum realisierbar. In einem stark vereinfachten Beispiel zeigen wir, wie bei Twitter die Informationen über User, Follower und Tweets in einer Datenbank gespeichert werden können. Unsere Datenbank twitter besteht aus den Tabellen person, tweets und follower, die in einer Beziehung zueinander stehen. |
In der Tabelle person sind Name, Vorname, Wohnort, Geschlecht und Jahrgang der Twitter-Benutzer gespeichert. Am einfachsten verwendet man die Tabelle person aus der Datenbank demo.db, die bereits 6 Datensätze enthält. Das Feld id enthält den Primärschlüssel dieser Tabelle und identifiziert eindeutig jeden Datensatz. Es wäre sicher keine gute Idee, sämtliche Tweets für jede Person in der Tabelle person abzuspeichern. Mit den vielen langen Textfeldern wäre die Tabelle person sehr gross und könnte nicht mehr effizient verwaltet werden. Es ist vorteilhaft die Tweets als Textfelder mit 140 Zeichen in einer zweiten Tabelle tweets zu speichern. Diese können über den Schlüssel userId abgerufen werden. |
Es wäre auch nicht sinnvoll, sämtliche Follower einer Twitter-Users mit ihren Personaldaten in der Tabelle person abzuspeichern. Da die User gleichzeitig Follower anderer Users sind, wird nur jede User-Follower-Beziehung gemäss der nebenstehenden Grafik in der Tabelle follower gespeichert. Die Grafik mit Pfeilen, die die Relation "ist ein Follower von" darstellen, wurde übrigens mit einem Python-Programm erstellt (ArrowDiagram.py [►]). |
Tabelle Person
Falls Ihre Tabelle Person nicht mehr vorhanden oder unvollständig ist, können Sie diese mit dem folgenden Programm erstellen. (Eine unvollständige Tabelle kann durch die Aktivierung der Zeile cursor.execute("DROP TABLE person") gelöscht werden.)
# CreateTableUsers.py from sqlite3 import * from prettytable import printTable con = connect("demo.db") with con: cursor = con.cursor() cursor.execute("DROP TABLE person") cursor.execute("""CREATE TABLE person (id INTEGER PRIMARY KEY, name VARCHAR(30), vorname VARCHAR(30), wohnort VARCHAR(30), geschlecht CHAR(1), jahrgang INTEGER(4))""") cursor.execute("""INSERT INTO person VALUES (1,'Huber','Lia','Bern','w', 2002), (2,'Meier','Luca','Basel','m', 2003), (3,'Frech','Marc','Bern','m', 2000), (4,'Bauer','Paul','Luzern','m', 2003), (5,'Zwahlen','Noe','Thun','m', 2002), (6,'Meier','Nina','Biel','w', 2001)""") cursor.execute("SELECT * FROM person") printTable(cursor)
Programmcode markieren
|
Tabelle Tweets
# CreateTableTweets.py from sqlite3 import * from prettytable import printTable with connect("demo.db") as con: cursor = con.cursor() #cursor.execute("DROP TABLE tweets") cursor.execute("""CREATE TABLE tweets (userId NOT NULL, tweet TEXT)""") cursor.execute("""INSERT INTO tweets VALUES (4, 'Nina hat heute coole Jacke an'), (2,'Heute gehe ich skifahren'), (5,'Party bei Marc war mega cool'), (3,'Ich lerne jetzt programmieren'), (1,'Nina hat heute coole Jacke an'), (6,'Wer kommt heute ins Kino?'), (1,'Mein neues Smartphone ist mega gut.')""") cursor.execute("SELECT * FROM tweets") printTable(cursor)
Abfragen in verknüpften Tabellen
| ||||||||||||
|