LU03c - Projekt 1: freeDB
Einleitung
Der Grundgedanke des Innovationsmodul II ist es eine Innovation vorzubereiten und den Nachweis zu bringen, dass diese grundsätzlich möglich ist. Gemäss Definition ist unter dem Begriff Innovation eine neue Idee/Produkt oder eine neue, bessere Zusammensetzung von Komponenten oder Prozessen zu verstehen.
Ausgangslage
Datenbanken gibt es sehr viele auf dem Markt, die meisten sind bezüglich der Lizenzierung für Privatpersonen kostenlos. Zudem gibt das Thema Offenlegung des Sourcecodes immer wieder Grund zur Diskussion bei Unternehmen.
Dieses Projekt soll das Prinzip der Datenbank neu denken und die Themen Lizenzierung und Openbsource„ neu definieren. D.h. das Projekt ist als OpenSource-Projekt durchzuführen, was bedeutet, dass auch Unternehmen keine Lizenzgebühren zahlen müssen.
Projektauftrag freeDB
Re-Programmieren Sie die CRUD-Operationen einer Datenbank unter Verwendung eines Standard-Befehlssatzes einer Programmier- oder Scriptsprache (Python, BASH, …).
Achten Sie darauf, dass jedes Teammate für einen ASPEKT der CRUD-Operationen zuständig ist. Sprich Person A erledigt das CREATE, eine andere Person das READ, etc.
Befehlsreferenz C = Create
CREATE Table bzw. CREATE TABLE IF NOT EXITSTS
Separate Files anlegen für mit Tabellenstruktur und Tabelleninhalt, erkennbar an der Endung
Falls File vorhanden ist entsprechende Fehlermeldungen ausgeben lassen
INSERT INTO TABLE
Prüfen, ob Tabellen und genannten Spalten vorhanden sind.
Zeile am Ende des Files dranhängen
Gesamten Fileinhalt Sortierten nach der 1. Spalte (ID)
Befehlsreferenz R = Read
SELECT count(*)
AWK auf Datenfile
Alternativ wc (Wordcount) verwenden
SELECT * FROM
Fehlermeldung, wenn Tabellen nicht existiert
Gesamter Inhalt der Tabelle wird ausgegeben
SELECT nach Spalten
SELECT Spalte1, Spalte2, Spalte3 FROM Tabelle
Wenn Spalte nicht existiert, Fehlermeldung.
SELECT mit WHERE
SELECT * FROM Tab WHERE ID=15
GREP kombiniert mit AWK
Spalte auswählen, die gefiltert werden soll und darauf den GREP anwenden RegEx
Die betroffene Zeile ausgeben lassen
SELECT mit JOIN (zweiter Entitätentyp)
Gemeinsamer Schlüssel zwischen zwei Tabellen
Treffermenge beider Tabellen ausgeben gemeinsam Ausgeben lassen
SELECT mit Bedingung/WHERE (z.B. Gehalt > 10'000)
SELECT MIT AWK
Spaltenwert muss Vergleichbar sein
SELECT mit LIKE
SELECT MIT AWK und GREP
Befehlsreferenz U = Update
UPDATE TABLE WHERE ID=??
Zeile finden herauslesen
Mittels RegEx Zeile aktualisieren
ALTER TABLE
In Tabellendefinition prüfen, ob die Spalte schon vorhanden ist
Wenn nicht, Spalte am Ende anhängen
Datenfile mit Leeren Kommas füllen am Ende auffüllen
Befehlsreferenz D = Delete
DELETE FROM TABLE
AWK mit GREP kombiniert
grep -v suchmuster originaldatei > tempdatei
mv tempdatei originaldatei
DROP TABLE
rm-Befehl
Zusatz
INDEXIERUNG (Sortierung der Tabelleninhalte)
Select auf eine String-Spalte, die unsortiert ist (Like «demi%)
Schattentabellen mit entsprechend Sortiert Spalte anlegen
Gleiche Abfrage auf die Schattentabelle
Zeit vor der Indexierung und Zeit nach der Indexierung stoppen
-
Fonetische Suchen via Soundex
Hierbei geht es eine Klang-Suche anstatt nach Wörtern.
SoundEx ermöglicht das Auffinden von Inhalten mit anderen Schreibweisen.
-
-