From e9b647e8b0c40a931474e43d96b00e0b984d15ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torsten=20L=C3=BCcke?= Date: Thu, 25 Mar 2021 22:43:36 +0100 Subject: [PATCH] =?UTF-8?q?Definition=20der=20Datenbank-Modelle=20und=20SQ?= =?UTF-8?q?L=20f=C3=BCr=20*PostgeSQL*.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/sql/postgresql.sql | 45 ++++++++++++++++++++++++++++ resources/uml/Domainmodel.puml | 36 ++++++++++++++++++++++ resources/uml/PhysicalDataModel.puml | 37 +++++++++++++++++++++++ 3 files changed, 118 insertions(+) create mode 100644 resources/sql/postgresql.sql create mode 100644 resources/uml/Domainmodel.puml create mode 100644 resources/uml/PhysicalDataModel.puml 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