---
# System prepended metadata

title: FIAE Prüfung 2022 Sommer
tags: [Ausbildung_FIAE_Prüfung]

---

# 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
