Constraints in der Data Definition Language (SQL-DDL)

Die Informationen, ob es sich bei einem Attribut um ein Schlüsselattribut handelt, ob es eingabepflichtig oder einzigartig ist: all das wird über Constraints festgelegt. Es gibt unterschiedliche Möglichkeiten, Constraints festzulegen. Einige werden hier mit Beispielen in MariaDB-Notation vorgestellt: Primär- und Fremdschlüssel (auch zusammengesetzt), NOT NULL, DEFAULT, UNIQUE, CHECK und die Regeln beim Löschen referenzierter Datensätze.

Datentypen in der Data Definition Language (SQL-DDL)

Alle Datenbankmanagementsysteme verfügen über ein ähnliches Set an Datentypen. Aber leider heißen sie oft anders und haben einen geringfügig anderen Funktionsumfang. Ich habe hier versucht, für die wichtigsten DBMS die Namen der Standardtypen zusammenzustellen; für Detailunterschiede muss ich aber auf die jeweiligen Dokumentationen der DBMS verweisen. Am Ende steht eine Entscheidungshilfe, welcher Datentyp für welche Information passt.

Data Definition Language (SQL-DDL)

SQL besteht aus mehreren Teilsprachen, die sich mit der Datenbankstruktur (DDL), dem Datenbankinhalt (DML) und den Berechtigungen (DCL) beschäftigen. In diesem Artikel soll es zunächst um die Grundlagen der Struktur gehen, die in der Data Definition Language (SQL-DDL) beschrieben wird. Du lernst, Datenbanken und Tabellen anzulegen, Tabellen nachträglich umzubauen, sie zu löschen und Indizes für schnelle Abfragen zu setzen.

Git-Übungsaufgaben

Natürlich lernt man git am besten, in dem man es täglich nutzt. Wer aber die git-Integration in der IDE nutzt hat vielleicht keinen Bezug mehr zu den eigentlichen Konsolen-Befehlen des Versionscontrollsystems. Hier daher ein paar Fragen zu git, wie ich sie auch gerne in Klassenarbeiten stelle…

SQL: Aggregierende Funktionen

Aggregatfunktionen wie COUNT, SUM, AVG, MIN und MAX fassen die Werte vieler Zeilen zu einem Wert zusammen – für die ganze Tabelle oder mit GROUP BY je Gruppe. Mit HAVING filterst Du nach diesen Ergebnissen. Der Artikel zeigt außerdem, wie NULL-Werte, Verbünde (JOIN) und Prozentrechnungen die Ergebnisse beeinflussen, wie Du mit Aggregaten weiterrechnest (z. B. Deckungsbeitrag), Streuung und Zeitdauern auswertest und welche Fehler typisch sind.

Einfache Abfragen mit Selektion und Projektion (SQL-DQL)

Der am häufigsten benötigte SQL-Befehl ist der SELECT-Befehl. In diesem Grundlagenartikel werden die Bestandteile Projektion und Selektion sowie die einzelnen Clauses einfacher SELECTs beschrieben. Dazu gehören Spaltenaliase, Bedingungen mit Mustern, Bereichen und NULL – samt der typischen Stolperfallen bei Postleitzahlen, Datumswerten und Umlauten. Sortieren und Begrenzen behandelt ein eigener Artikel.

„Let’s Meet-Datenbank“ Beispielumsetzung  Teil 1: Modellierung

Dies ist der erste Teil (Modellierung) einer Beispiellösung für die Let’s Meet“ Datenbank-Lernsituation. Es führen viele Wege zum Ziel – der einzig richtige ist der Weg, den man selbstständig gegangen ist. Daher ist diese Variante bestenfalls als eine Ideenskizze zu verstehen, die genutzt werden kann, wenn man nicht mehr weiterkommt. Einige Schritte habe ich bewusst etwas umständlicher realisiert, um so bestimmte Techniken des Datenbankentwurfs bzw. Abfragetechniken darstellen zu können.

Modellierung einer Datenbank: Entity-Relationship-Modell

Im konzeptuellen Modell wird die innere Struktur der Daten erfasst, die in einer Datenbank persistiert werden sollen. Auf Basis des so erstellten ER-Modells kann später entschieden werden, welches Datenmodell zur Speicherung der vorliegenden Struktur am geeignetsten ist. Der Artikel erklärt die Chen-Notation mit allen Beziehungsarten (auch rekursiv, mehrfach und mit Attributen) und zeigt Schritt für Schritt, wie man aus einem Anforderungstext oder einem Beleg ein ER-Diagramm entwickelt, Zeiträume und Messwerte modelliert und Schlüssel kennzeichnet.

Debugging per Logging und für ESPs mit WLAN

Bei einfachen Projekten ist das Logging über die serielle Verbindung ein Segen beim Debugging: über die USB-Verbindung können am seriellen Monitor der Arduino-IDE Werte ausgegeben werden. Was aber tun, wenn die serielle Verbindung nicht besteht? Wie kann ich Logging am ESP komfortabel und einfach umsetzen? Ein Vorschlag.

Information Hiding: Kapselung in Python (OOP)

Wer gut änderbaren Code programmieren will, der versteckt Implementierungsdetails wie den Zustand von Objekten. Veröffentlicht wird nur, was wirklich benötigt wird. In Python ist es nicht ganz einfach (und eher unüblich), den Rest wegzukapseln. Aber wie lässt sich Kapselung in Python umsetzen?

OOP in Python – Klassen mit Methoden und Attributen

In der realen Welt trifft man häufig auf Dinge, die ein identisches Verhalten aber unterschiedliche Eigenschaften haben. Objektorientierte Programmierung hilft dabei, Einheiten zu modellieren, die über ein gemeinsames Verhalten bei unterschiedlichen Zuständen verfügen.

Objektorientierter Einstieg in PyGame: Planetensimulation

Eine Variable auf der einen Seite. Eine Funktion auf der anderen Seite. Viele Probleme lassen sich so darstellen. Manchmal ist es aber gerade die Verknüpfung von beidem (die Objektorientierung), die die Programmierung erstaunlich einfach macht. Am Beispiel einer Planetensimulation mit Hilfe von Pygame soll das Konzept der Objektorientierten Programmierung greifbar gemacht werden.

Firmwareupdates für ESPs per WLAN

Es ist lästig, einen ESP-Microprozessor, der in einem Projekt verbaut ist, für ein Softwareupdate auszubauen und an den USB-Port anzuschließen. Mit der Library für „Over the Air“-Updates gibt es jedoch eine elegante Möglichkeit, passwortgeschützt neue eigene Firmware aufzuspielen.

ESP in mehrere WLAN integrieren und Zugangsdaten sichern

Ein ESP (32/8266) ist mit wenigen Zeilen Code ins heimische WLAN integriert. Der hier verwendete Weg stellt sicher, dass aus vielen unterschiedlichen WLANs das geeignetste ausgesucht wird. Außerdem wird wiederkehrend überprüft, ob die WLAN-Verbindung noch besteht, diese ggf. neu aufgebaut und – wenn der Aufbau zu häufig scheitert – der ESP neu gestartet. Ausserdem wird ein Weg vorgestellt, die WLAN-Zugangsdaten vor der unbeabsichtigten Veröffentlichung in Versionsverwaltungen und Codesharing zu schützen.

Einen Netzplan erstellen

Das Gantt-Diagramm ermöglicht die zeitliche Planung von Arbeitspaketen und Ressourcen. Wenn es im Projekt zu Verzögerungen kommt, gibt uns ein anderes Diagramm Auskunft darüber, ob wir noch im Zeitplan bleiben können: das Netzplan-Diagramm. Der Artikel zeigt Schritt für Schritt, wie Du aus einer Vorgangsliste einen Netzplan erstellst, früheste und späteste Zeitpunkte berechnest, Gesamtpuffer und freien Puffer bestimmst und unterscheidest, den kritischen Pfad findest und die Folgen von Verzögerungen beurteilst.

Anforderungen validieren und verwalten

Nicht alle Anforderungen sind gleich wichtig, nicht alle Anforderungen sind auf Anhieb gut formuliert/dokumentiert. Woran erkenne ich gute Anforderungen, woran erkenne ich wichtige Anforderungen? Und: Gibt es auch zu viel Spezifikation?