# FIAE Abschlussprüfung 2022 Sommer [Prüfung als PDF](https://ccs.jade-hs.de/f/237559184) (nur intern) :::spoiler Inhaltsverzeichnis [toc] ::: ## GA1 1. Handlungsschritt ## GA1 2. Handlungsschritt ## GA1 3. Handlungsschritt ## GA1 4. Handlungsschritt ## GA2 1. Handlungsschritt - Algorithmen ![1000018940](https://hackmd.io/_uploads/S1Fpdd7lkx.jpg) ```= statistik(verbrauch: int[][], limit: int): Jahresstatistik { int min; int max; List limit = new List<Monatsverbrauch>(); for(int verbnr = 0; verbnr < verbrauch.length; verbnr++){ } return Jahresstatistik(min, max, limit) } ``` Vorgehen: - Zeile 1: statistik(verbrauch: int[][], limit: int) - gegeben - Zeile 1: Rückgabewert Jahresstatistik - gegeben - letzte Zeile (return) gegen: - return Jahresstastik(minVerbrauch: int, maxVerbrauch: int, limitVerbrauch: List) - Daraus folgend die Variablen: - Zeile 2 min - Zeile 3 max - Zeile 4 List - Feld verbrauch gegeben mit 2 Dimensionen - Erste Schleife Verbrauchernummer - Zweite Schleife Monate ## GA2 2. Handlungsschritt aa) ## GA2 3. Handlungsschritt ![grafik](https://hackmd.io/_uploads/B1ofR1Qeyg.png) Aufgabe: - DB-Modell nach 3. Normalform erstellen. - Tabellen, Attribute, PK, FK und Beziehungen angeben. :::spoiler Vorgehen Abzubildende Daten (lt. Bild von oben nach unten): - [x] Datum (welassen lt. Aufgabenstellen) - [x] Kunde (Tabelle) - [x] Kundennummer (PK) - [x] Name - [x] Straße, Nummer - [x] PLZ, Ort - [x] Ansprechpartner (Tabelle) - [x] Name - [x] Telefon - [x] E-Mail - [x] Tarife (Tabelle) - [x] Name (doppelt > eigene Tabelle unabhängig von Zeiten) - [x] von - [x] bis - [x] PK Ansprechpartner - [x] PK Tarif - [x] FKs ::: ```plantuml @startmindmap - Uni -- FAk U -- f -- asdf + HAll ++ WHV +++ FB MIT +++ FB I +++ FB W ++ OL ++ EL @endmindmap ``` ```plantuml left to right direction skinparam linetype ortho hide circle entity "Kunde" as Kd { Kunde_nr (PK) Ansprechpartner_nr (FK) -- Name Strasse PLZ Ort } entity "Ansprechpartner" as AP { Ansprechpartner_nr (PK) -- Name Telefon EMail } entity "Tarifzeit" as TZ { Tarifzeit_id (PK) Tarif_nr (FK) -- von bis } entity "Tarif" as T { Tarif_nr (PK) -- Name } ' Beziehungen ' AP "1" -- "n" Kd Kd "1" -- "n" TZ T "1" -- "n" TZ ``` ## GA2 4. Handlungsschritt - Datenbank - [ ] TODO: Datenbank anlegen! aa) Stored Procedure ab) Trigger ac) Indizierung ba) ```sql= CREATE INDEX Idx_Datum ON Zaehlerstand(ZSt_Datum); ``` bb) ```sql= DELETE FROM Haushalte WHERE (SELECT COUNT(Z_ID) FROM Zaehler WHERE Z_HHID = HH_ID) = 0; ``` bc) | Nachname | AnzZaeler | | -------- | --------- | | Name X | 3 | | Name Z | 2 | | Name Y | 0 | ```sql= SELECT H.HH_Nachname AS Nachname, // Tabelle > Spaltenbezeichnung COUNT(Z.Z_ID) AS AnzZaehler // Tabelle > Spaltenbezeichnung FROM Haushalte AS H LEFT JOIN Zaehler AS Z ON H.HH_ID GROUP BY H.HH_Nachname // da "Anzahl Zähler" ORDER BY COUNT(Z.Z_ID) DESC; // "wenigste Zähler unten" ``` bd) ```sql= SELECT H.HH_Nachname AS Nachname, // Tabelle > Spaltenbezeichnung Z.Z_Nummer AS Zaehlernummer, // Tabelle > Spaltenbezeichnung ((SELECT ZS.ZSt_Stand FROM Zaelerstand AS ZS WHERE ZS.ZSt_ZID AND YEAR(ZS.ZSt_Datum = 2022) - (SELECT ZS.ZSt_Stand FROM Zaelerstand AS ZS WHERE ZS.ZSt_ZID AND YEAR(ZS.ZSt_Datum = 2021)) ) AS Verbrauch // Verbrauch 2022 - 2021 FROM Haushalt AS H INNER JOIN Zaehler AS Z ON H.HH_ID = Z.Z_HH_ID ORDER BY H.HH_Nachname; // Nach Nachname sortieren ``` ## 3WiSo