Schlagwort-Archive: Hochschule

Notizen zu Machine Learning, Teil 2

Ressourcen

Zunächst mal ein Hinweis auf einen ziemlich unterbewerteten YouTube-Kanal zum Thema Machine Learning: Introduction to Machine Learning von Lukas Biewald, Gründer von Weights & Biases und Figure Eight.

Auch interessant, wenn es um Bildverarbeitung mit neuronalen Netzen und Python geht: pyimagesearch

Ein genereller KI-Kurs, der natürlich auch Machine Learning beinhaltet, wird vom MIT bereitgestellt.

Zealandia

Wir reisen in wenigen Stunden aus Neuseeland ab und erzählen, was wir noch so gemacht haben, wie wir das Land insgesamt fanden und ob es für einen Plan B taugt, sollte daheim alles schief laufen.

Wir reden über Wellington, den Vertrag von Waitangi von 1840, die Unabhängigkeitserklärung von 1835 und die Einführung des aktiven Frauenwahlrechts in Neuseeland 1893. Außerdem geht es über den Kontinent Zealandia, das Naturschutzgebiet Zealandia und die Nationalbibliothek, wo wir Qix gezockt haben. Von Wellington ging es mit KiwiRail nach Auckland, der Reisebericht mit Bildern dazu ist im Blog.

Im Datenbanken-Teil geht es um mehrstellige Beziehungen. In den Vorlesungsfolien sind die Diagramme dazu.

Für die Intro- und Outro-Musik gebührt nach wie vor unser Dank der Band Revolte Tanzbein, die uns erlaubt haben, Ihr Stück Panama zu spielen.

Datenbanken, Teil 4: Eins-zu-Eins-Beziehungen

Teil 2 der Serie über Datenbanken, in dem es um das Entity-Relationship-Modell ging, liegt nun schon ungefähr 2 Jahre zurück, aber relationale Datenbanken haben natürlich nichts von ihrer Aktualität eingebüßt und in der Zwischenzeit haben wir in unserem Podcast darüber berichtet. Bisher haben wir 1:N- und N:M-Beziehungen betrachtet. In diesem Teil geht es weiter, denn mit den Beziehungen ist es manchmal kompliziert.

Dieser vierte Teil der Serie setzt Kenntnisse der Grundbegriffe des E/R-Modells und der Umsetzung von 1:N- und N:M-Beziehungen ins relationale Modell voraus. In den ersten drei Teilen der Serie wurden diese erklärt.

Beispiele für 1:1-Beziehungstypen; Quelle;
CC-BY-SA 2.5 Maximilian Dörrbecker

Für 1:N- und N:M-Beziehungen wurde im vorherigen Teil bereits diskutiert, wie die Umsetzung ins relationale Modell erfolgt. 1:N-Beziehungen können am einfachsten mit einer Fremdschlüsselspalte auf der N-Seite umgesetzt werden während für N:M-Beziehungen immer eine Beziehungstabelle notwendig ist.

1:1-Beziehungen

Eine weitere Beziehungsart zwischen zwei Entitätstypen ist die 1:1-Beziehung. Betrachten wir zunächst als Beispiel die Beziehung zwischen einer Person und ihrem Ausweis.

Eine Person besitzt nur einen Ausweis und ein Ausweis gehört zu einer Person. Wir gehen in dem Beispiel weiterhin davon aus, dass jede Person in der Datenbank auch einen Ausweis besitzt und es nur personalisierte Ausweise gibt.

Datenbanken, Teil 4: Eins-zu-Eins-Beziehungen weiterlesen

Datenbanken, Teil 3: Tabellen erstellen mit SQL

Im zweiten Teil der Serie über Datenbanken, der zugegebenermaßen schon etwas zurück liegt, hatte ich versprochen, im folgenden Teil der Serie zu zeigen, wie man in der Praxis mit SQL Tabellen erstellt. Dieses Versprechen will ich nun hiermit einlösen. In der ersten Staffel unseres Podcasts haben uns in der Zwischenzeit allerdings auch schon mit SQL beschäftigt.

SQL ist eine weit verbreitete Sprache für relationale Datenbankmanagementsysteme und umfasst, wie im ersten Teil schon erwähnt, sowohl eine Abfragesprache (Query Language) wie auch Sprachen zum Einfügen und Löschen von Daten (Data Manipulation Langauge) und zum Anlegen eines Datenbankschemas (Data Definition Language). SQL wird von vielen aktuellen relationalen Datenbankmanagementsystemen (DBMS) verstanden. Ein weit verbreitetes und kostenloses DBMS ist MySQL. Die Codebeispiele in diesem und den folgenden Teilen beziehen sich, sofern nichts anderes angegeben ist, auf MySQL. Da SQL aber weitgehend standardisiert ist, sollten sie auch in anderen DBMS funktionieren.

Datenbanken, Teil 3: Tabellen erstellen mit SQL weiterlesen

Das Licht, das von Maui ausstrahlt

Wir sind weiter in Neuseeland und berichten kurz von Rotorua (wo der Vulkan qualmt), Taupo (wo es geregnet hat) und vor allem von Napier, wo sich ein Campus des Eastern Institute of Technology befindet und wo es auch sonst recht schön ist. Die Innenstadt wurde nach einem verheerenden Erdbeben 1931 recht konsequent im Stil des Art Deco wieder aufgebaut. Danach waren wir noch kurz in Gisborne (da ist auch ein Campus des EIT) und mit unserem gemieteten Semi-SUV bei einem Drive-in-Wasserfall.

Andreas rührt die Werbetrommel für ein Auslandssemester in Neuseeland. Für Studierende, die das machen wollen, ist die erste Anlaufstelle das International Center (auch International Office oder akademisches Auslandsamt genannt) der eigenen Uni (zum Beispiel das der Hochschule Furtwangen, wenn man zufällig dort studiert). Und dann sollte man schauen, ob es vielleicht irgendwo Fördermöglichkeiten gibt.

Im Datenbanken-Teil geht es über 1:1-Beziehungen und wie man sie in Tabellen umsetzt. Die (min,max)-Notation im E/R-Diagramm hilft, genauer einzuschätzen, welche Variante die beste ist. Als neues SQL-Schlüsselwort kommt UNIQUE dazu. Ein Blog-Beitrag mit den E/R-Diagrammen zum heutigen Thema wird noch nachgereicht.

No worries

Wir haben Japan endgültig hinter uns gelassen und sind nach einem Zwischenstopp in Auckland in Hamilton angekommen. Bilder dazu findet Ihr im Blog.

Wir haben heute eine Folge, die etwas kürzer ist als sonst und sie ist schon wieder ganz ohne Datenbanken. Stattdessen haben wir uns mit Dr. Annika Hinze von der University of Waikato getroffen und unterhalten uns mit Ihr über Neuseeland im allgemeinen, Studieren in Neuseeland und wie es dazu kam, dass an Weihnachten Teile einer halben Kuh aus einer Kirche geklaut wurden.

Onsen

oder: was bisher geschah

Wir verlassen in Kürze Japan und lassen unsere Erlebnisse Revue passieren.

Unsere letzten zwei Stationen, über die wir bisher noch nicht berichtet haben, waren Shizuoka und Niigata. Die Fotos von unserem Ausflug mit der Oigawa Railway von Shizuoka aus sind schon im Blog und Fotos von Niigata reichen wir alsbald nach. Wenn Ihr in Niigata seid (muss man aber nicht), dann besucht die Saito-Residenz (muss man dann, wenn man schon in Niigata ist). Und geht ruhig mal zum Hochhaus „Media Ship“ und dann ganz nach oben.

Wir fassen unsere Erlebnisse zusammen und diskutieren, was wir in Japan besonders gut fanden und was nicht so. Unser Fazit: Wir fanden es fast uneingeschränkt toll, Japan ist ein sehr interessantes Land für Besucher und definitiv eine (oder mehrere) Reise(n) wert! Ob wir aber gerne dauerhaft hier leben wollen würden, ist durchaus fraglich. Hört rein und findet heraus, warum wir das denken.

Im Datenbanken-Bereich fassen wir das in den vorherigen Folgen gehörte zusammen. Das wären die Grundbegriffe, das E/R-Modell mit 1:N- und N:M-Beziehungen und wie man es ins relationale Modell wandelt sowie Primär- und Fremdschlüssel. An SQL-Befehlen hatten wir bisher CREATE, ALTER, DROP, INSERT, DELETE, UPDATE und SELECT. Damit kommt man schon ein Stück weit, aber in den nächsten Folgen besprechen wir noch weitere Beziehungstypen und außerdem werden wir bestimmt noch viel Spaß mit SELECT haben.

Wir freuen uns immer über Feedback! Wir steigen aber gleich ins Flugzeug und es wird einen Tag dauern, bis wir Kommentare freischalten können.

Zuuug!

Wir haben jetzt JR-Railpässe und sind damit schon eine Menge durch Japan gefahren. Wir erzählen von Kyoto, Nara, Hiroshima und Kobe. Außerdem haben wir ein paar Sounds aus Japan mitgebracht.

Das Geraschel bei dem Shinkansen-Tonbeispiel stammt übrigens von japanischen Mitreisenden, die ihre Bento-Boxen ausgepackt haben. 🙂

Und hier noch die Erklärung zu den Umziehbrettchen.

Andreas erklärt Anke mal wieder was über Datenbanken. Konkret geht es heute darum, wie man N:M-Beziehungen aus dem E/R-Modell in Tabellen umsetzt und wie das mit SQL geht. Auch über dieses Thema kann man noch in Andreas‘ Blogbeitrag von früher nachlesen.

Und hier wieder was Anke in MySQL eingegeben hat:

mysql> show tables;
+----------------+
| Tables_in_todo |
+----------------+
| Person |
| Todoeintrag |
+----------------+
2 rows in set (0,00 sec)

mysql> select * from Person;
+------------------+---------+----------+
| IdentifierPerson | Name | Nachname |
+------------------+---------+----------+
| 1 | Andreas | Hess |
+------------------+---------+----------+
1 row in set (0,00 sec)

mysql> select * from Todoeintrag;
+-----------------------+--------------------+------------+-------------------+------------------+
| IdentifierTodoeintrag | Text | Prioritaet | Faelligkeitsdatum | IdentifierPerson |
+-----------------------+--------------------+------------+-------------------+------------------+
| 1 | Handgepäck packen | 10 | 2019-04-10 | 1 |
+-----------------------+--------------------+------------+-------------------+------------------+
1 row in set (0,00 sec)

mysql> alter table Todoeintrag drop column identifierPerson;
ERROR 1828 (HY000): Cannot drop column 'IdentifierPerson': needed in a foreign key constraint 'todoeintrag_ibfk_1'

mysql> alter table Todoeintrag drop constraint todoeintrag_ibfk_1;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'constraint todoeintrag_ibfk_1' at line 1

mysql> alter table Todoeintrag drop foreign key todoeintrag_ibfk_1;
Query OK, 0 rows affected (0,01 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> alter table Todoeintrag drop column identifierPerson;
Query OK, 0 rows affected (0,06 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> create table zustaendigfuer (IdentifierTodoeintrag integer, IdentifierPerson integer, foreign key (IdentifierTodoeintrag) references Todoeintrag(IdentifierTodoeintrag), foreign key (IdentifierPerson) references Person(IdentifierPerson), primary key (IdentifierTodoeintrag, IdentifierPerson));
Query OK, 0 rows affected (0,01 sec)

mysql> insert into zustaendigfuer values (1,1);
Query OK, 1 row affected (0,01 sec)

mysql> select * from zustaendigfuer;
+-----------------------+------------------+
| IdentifierTodoeintrag | IdentifierPerson |
+-----------------------+------------------+
| 1 | 1 |
+-----------------------+------------------+
1 row in set (0,00 sec)

mysql> insert into zustaendigfuer values (1,1);
ERROR 1062 (23000): Duplicate entry '1-1' for key 'PRIMARY'

mysql> insert into zustaendigfuer values (1,2);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (todo.zustaendigfuer, CONSTRAINT zustaendigfuer_ibfk_2 FOREIGN KEY (IdentifierPerson) REFERENCES person (identifierperson))

mysql> alter table zustaendigfuer add column Stunden time;
Query OK, 0 rows affected (0,05 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> select * from zustaendigfuer;
+-----------------------+------------------+---------+
| IdentifierTodoeintrag | IdentifierPerson | Stunden |
+-----------------------+------------------+---------+
| 1 | 1 | NULL |
+-----------------------+------------------+---------+
1 row in set (0,00 sec)

mysql> update zustaendigfuer set Stunden='02:00:00' where IdentifierTodoeintrag=1 AND IdentifierPerson=1;
Query OK, 1 row affected (0,01 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from zustaendigfuer;
+-----------------------+------------------+----------+
| IdentifierTodoeintrag | IdentifierPerson | Stunden |
+-----------------------+------------------+----------+
| 1 | 1 | 02:00:00 |
+-----------------------+------------------+----------+
1 row in set (0,00 sec)

mysql> update zustaendigfuer set Stunden='26:00' where IdentifierTodoeintrag=1 AND IdentifierPerson=1;
Query OK, 1 row affected (0,01 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from zustaendigfuer;
+-----------------------+------------------+----------+
| IdentifierTodoeintrag | IdentifierPerson | Stunden |
+-----------------------+------------------+----------+
| 1 | 1 | 26:00:00 |
+-----------------------+------------------+----------+
1 row in set (0,00 sec)

Geflasht!

Unserer Weltreise hat begonnen und wir sind tatsächlich in Tokio!

Unsere Vorbereitung mit einer To-Do-Liste mit *zig* Einträgen hat nur bedingt was gebracht, denn, wie es in unserem Outro immer heißt: „Irgendwas läuft schief!“ Wir haben unsere JR Railpässe daheim vergessen.

Das hat uns nicht davon abgehalten, uns von Tokio flashen zu lassen. Wir berichten von japanischen Toiletten, einer Speisekarte, von der wir nichts verstanden haben, einem Tempel in Asakusa und koreanischer Popkultur in Shin-Okubo.

Im Blog zeigen wir dazu Fotos, die uns noch lange erfreuen werden und ganz am Schluss spielen wir für ein paar Sekunden jenen K-Pop an, mit dem wir beim Mittagessen beschallt wurden. („Yes or Yes“ von „Twice“).

Ach ja, und in dieser Episode gibt es ausnahmsweise mal gar nix über Datenbanken. Wir müssen bei all den Eindrücken unser Hirn erst wieder frei kriegen, bevor dort wieder was über Entities, Relationships und SQL rein passt.