diff --git a/the_works/schema.sql b/the_works/schema.sql new file mode 100644 index 0000000..25d3e49 --- /dev/null +++ b/the_works/schema.sql @@ -0,0 +1,132 @@ +DROP TABLE IF EXISTS "AutorHrsg_Index"; +DROP TABLE IF EXISTS "AutorInnen_und_Hrsg"; +DROP TABLE IF EXISTS "TextGenres_Index"; +DROP TABLE IF EXISTS "WerkGenres_Index"; +DROP TABLE IF EXISTS "Genres"; +DROP TABLE IF EXISTS "Reihen"; +DROP TABLE IF EXISTS "Sprachen"; +DROP TABLE IF EXISTS "Tete"; +DROP TABLE IF EXISTS "Textformen"; +DROP TABLE IF EXISTS "Verlage"; +DROP TABLE IF EXISTS "Veroeffentlichungen_Index"; +DROP TABLE IF EXISTS "Werke"; +DROP TABLE IF EXISTS "Werksformen"; + +CREATE TABLE IF NOT EXISTS "AutorHrsg_Index" ( + "ID" INTEGER, + "Werk" INTEGER NOT NULL, + "AutorIn_oder_Hrsg" INTEGER NOT NULL DEFAULT 1, + PRIMARY KEY("ID" AUTOINCREMENT), + FOREIGN KEY("AutorIn_oder_Hrsg") REFERENCES "AutorInnen_und_Hrsg"("ID"), + FOREIGN KEY("Werk") REFERENCES "Werke"("ID") +); +CREATE TABLE IF NOT EXISTS "AutorInnen_und_Hrsg" ( + "ID" INTEGER, + "Name" TEXT NOT NULL, + "Funktion" TEXT NOT NULL, + PRIMARY KEY("ID" AUTOINCREMENT) +); +CREATE TABLE IF NOT EXISTS "TextGenres_Index" ( + "ID" INTEGER, + "Text" INTEGER NOT NULL, + "Genre" INTEGER NOT NULL, + PRIMARY KEY("ID" AUTOINCREMENT), + FOREIGN KEY("Genre") REFERENCES "Genres"("ID"), + FOREIGN KEY("Text") REFERENCES "Texte"("ID") +); +CREATE TABLE IF NOT EXISTS "WerkGenres_Index" ( + "ID" INTEGER, + "Werk" INTEGER NOT NULL, + "Genre" INTEGER NOT NULL, + PRIMARY KEY("ID" AUTOINCREMENT), + FOREIGN KEY("Genre") REFERENCES "Genres"("ID"), + FOREIGN KEY("Werk") REFERENCES "Werke"("ID") +); +CREATE TABLE IF NOT EXISTS "Genres" ( + "ID" INTEGER, + "Genre" TEXT NOT NULL, + PRIMARY KEY("ID" AUTOINCREMENT) +); +CREATE TABLE IF NOT EXISTS "Reihen" ( + "ID" INTEGER, + "Reihentitel" TEXT NOT NULL, + "Verlag" TEXT, + PRIMARY KEY("ID" AUTOINCREMENT), + FOREIGN KEY("Verlag") REFERENCES "Verlage"("ID") +); +CREATE TABLE IF NOT EXISTS "Sprachen" ( + "ID" INTEGER, + "Sprache" TEXT NOT NULL, + PRIMARY KEY("ID" AUTOINCREMENT) +); +CREATE TABLE IF NOT EXISTS "Texte" ( + "ID" INTEGER, + "Titel" TEXT NOT NULL, + "Untertitel" TEXT, + "Reihe" INTEGER, + "Textform" INTEGER, + "Originalsprache" INTEGER, + PRIMARY KEY("ID" AUTOINCREMENT), + FOREIGN KEY("Originalsprache") REFERENCES "Sprachen"("ID"), + FOREIGN KEY("Reihe") REFERENCES "Reihen"("ID"), + FOREIGN KEY("Textform") REFERENCES "Textformen"("ID") +); +CREATE TABLE IF NOT EXISTS "Textformen" ( + "ID" INTEGER, + "Textform" TEXT NOT NULL, + PRIMARY KEY("ID" AUTOINCREMENT) +); +CREATE TABLE IF NOT EXISTS "Verlage" ( + "ID" INTEGER, + "Verlag" TEXT NOT NULL, + PRIMARY KEY("ID" AUTOINCREMENT) +); +CREATE TABLE IF NOT EXISTS "Veröffentlichungen_Index" ( + "ID" INTEGER, + "Text" INTEGER NOT NULL, + "Werk" INTEGER NOT NULL, + "neuer Titel" TEXT, + "neuer Untertitel" TEXT, + "Veröffentlicht als" INTEGER NOT NULL, + PRIMARY KEY("ID" AUTOINCREMENT), + FOREIGN KEY("Text") REFERENCES "Texte"("ID"), + FOREIGN KEY("Veröffentlicht als") REFERENCES "AutorInnen_und_Hrsg"("ID"), + FOREIGN KEY("Werk") REFERENCES "Werke"("ID") +); +CREATE TABLE IF NOT EXISTS "Werke" ( + "ID" INTEGER, + "Werkstitel" TEXT NOT NULL, + "Werksuntertitel" TEXT, + "Werksform" INTEGER, + "Verlag" INTEGER, + "Reihe" INTEGER, + "Reihennummer" TEXT, + "Erscheinungsdatum" TEXT, + "ISBN_13" TEXT, + "ISBN_10" TEXT, + "ISSN" TEXT, + "Preis" TEXT, + "Titelbild" BLOB, + "Klappentext" TEXT, + "Anmerkungen" TEXT, + PRIMARY KEY("ID" AUTOINCREMENT), + FOREIGN KEY("Reihe") REFERENCES "Reihen"("ID"), + FOREIGN KEY("Verlag") REFERENCES "Verlage"("ID"), + FOREIGN KEY("Werksform") REFERENCES "Werksformen"("ID") +); +CREATE TABLE IF NOT EXISTS "Werksformen" ( + "ID" INTEGER, + "Werksform" TEXT NOT NULL, + "Medium" TEXT, + PRIMARY KEY("ID" AUTOINCREMENT) +); +CREATE VIEW Meine_Buecher AS + SELECT DISTINCT w.Werkstitel + , a.Name + , a.Funktion + FROM Werke w + INNER JOIN AutorHrsg_Index i + ON w.ID = i.Werk + INNER JOIN AutorInnen_und_Hrsg a + ON i.AutorIn_oder_Hrsg = a.ID + WHERE a.ID < 4;