diff --git a/resources/sql/postgresql.sql b/resources/sql/postgresql.sql new file mode 100644 index 0000000..2112dbc --- /dev/null +++ b/resources/sql/postgresql.sql @@ -0,0 +1,45 @@ +-- # Definition der Tabelle +-- DROP TABLE public."Arbeitszeiten"; +create table public."Arbeitszeiten" +( + "Datum" date not null, + "Arbeitszeit" interval(6) null, + constraint "Arbeitszeiten_pkey" primary key ("Datum") +); + + +-- # Definition der Ansichten +-- ## Wöchentlich +create view "Arbeitszeiten - Woche" ("Woche", "Gesamtarbeitszeit", "Arbeitstage", "Überstunden") as + select + to_char(date_trunc('week'::text, "Arbeitszeiten"."Datum"::timestamp with time zone), + 'TMYYYY#WW'::text) as "Woche", + sum("Arbeitszeiten"."Arbeitszeit") as "Gesamtarbeitszeit", + count("Arbeitszeiten"."Datum") as "Arbeitstage", + sum("Arbeitszeiten"."Arbeitszeit") - count("Arbeitszeiten"."Datum") ::double precision * '08:00:00'::interval as "Überstunden" + from "Arbeitszeiten" + group by (date_trunc('week'::text, "Arbeitszeiten"."Datum"::timestamp with time zone)) + order by (date_trunc('week'::text, "Arbeitszeiten"."Datum"::timestamp with time zone)); + +-- ## Monatlich +create view "Arbeitszeiten - Monat" ("Monat", "Gesamtarbeitszeit", "Arbeitstage", "Überstunden") as + select + to_char(date_trunc('month'::text, "Arbeitszeiten"."Datum"::timestamp with time zone), + 'TMYYYY TMMonth'::text) as "Monat", + sum("Arbeitszeiten"."Arbeitszeit") as "Gesamtarbeitszeit", + count("Arbeitszeiten"."Datum") as "Arbeitstage", + sum("Arbeitszeiten"."Arbeitszeit") - count("Arbeitszeiten"."Datum") ::double precision * '08:00:00'::interval as "Überstunden" + from "Arbeitszeiten" + group by (date_trunc('month'::text, "Arbeitszeiten"."Datum"::timestamp with time zone)) + order by (date_trunc('month'::text, "Arbeitszeiten"."Datum"::timestamp with time zone)); + +-- ## Jährlich +create view "Arbeitszeiten - Jahr"("Jahr", "Gesamtarbeitszeit", "Arbeitstage", "Überstunden") as + select + date_part('year'::text, "Arbeitszeiten"."Datum")::text as "Jahr", + sum("Arbeitszeiten"."Arbeitszeit") as "Gesamtarbeitszeit", + count("Arbeitszeiten"."Datum") as "Arbeitstage", + sum("Arbeitszeiten"."Arbeitszeit") - count("Arbeitszeiten"."Datum") ::double precision * '08:00:00'::interval as "Überstunden" + from "Arbeitszeiten" + group by (date_part('year'::text, "Arbeitszeiten"."Datum")) + order by (date_part('year'::text, "Arbeitszeiten"."Datum")); \ No newline at end of file diff --git a/resources/uml/Domainmodel.puml b/resources/uml/Domainmodel.puml new file mode 100644 index 0000000..52fe9de --- /dev/null +++ b/resources/uml/Domainmodel.puml @@ -0,0 +1,36 @@ +@startuml + +!define DOMAIN (M,#FFAAAA) Domain Model +!define VIEW (V,DarkTurquoise) Domain Model - Ansicht + +class Arbeitszeiten <> { + Datum + Arbeitszeit + insert() + list() +} + +class Arbeitszeiten-Ansicht <> { + Gesamtarbeitszeit + Arbeitstage + Überstunden + list() +} + +class Arbeitszeiten-Woche <> { + Woche +} + +class Arbeitszeiten-Monat <> { + Monat +} + +class Arbeitszeiten-Jahr <> { + Jahr +} + +"Arbeitszeiten-Ansicht" <|-- "Arbeitszeiten-Woche" +"Arbeitszeiten-Ansicht" <|-- "Arbeitszeiten-Monat" +"Arbeitszeiten-Ansicht" <|-- "Arbeitszeiten-Jahr" + +@enduml \ No newline at end of file diff --git a/resources/uml/PhysicalDataModel.puml b/resources/uml/PhysicalDataModel.puml new file mode 100644 index 0000000..8fc6cfd --- /dev/null +++ b/resources/uml/PhysicalDataModel.puml @@ -0,0 +1,37 @@ +@startuml + +!define DOMAIN (M,#FFAAAA) Domain Model +!define TABLE (T,DarkTurquoise) Physical Data Model +!define VIEW (V,#AAFFAA) Model View +!define AUTO Auto Generated +!define ID_KEY id: INTEGER <> <> <> + +class Arbeitszeiten <> { + Datum: DATE + Arbeitszeit: INTERVAL +} + +class Arbeitszeiten-Ansicht <> { + Gesamtarbeitszeit: INTERVAL + Arbeitstage: INTEGER + Überstunden: INTERVAL + list() +} + +class Arbeitszeiten-Woche <> { + Woche: TEXT +} + +class Arbeitszeiten-Monat <> { + Monat: TEXT +} + +class Arbeitszeiten-Jahr <> { + Jahr: TEXT +} + +"Arbeitszeiten-Ansicht" <|-- "Arbeitszeiten-Woche" +"Arbeitszeiten-Ansicht" <|-- "Arbeitszeiten-Monat" +"Arbeitszeiten-Ansicht" <|-- "Arbeitszeiten-Jahr" + +@enduml \ No newline at end of file