# 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

```=
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

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