# FIAE Abschlussprüfung 2020 Sommer [Prüfung als PDF]( qa<Y!) (nur intern) :::spoiler Inhaltsverzeichnis [toc] ::: :::spoiler HB (gemacht im Juli 2025) GA 1 HS 1 Punkte: 17/25 a) 3/4 b) 4/4 ca) 8/15 Struktur: 5/5 Puffer: max 1./3 FAZ/SAZ (oben richtig unten fehlt) 2/5 kritischer Pfad 0/2 cb) 2/2 ![WhatsApp Image 2025-07-15 at 15.22.29](https://hackmd.io/_uploads/B1LNU0m8xl.jpg) ![WhatsApp Image 2025-07-15 at 15.23.09_quer](https://hackmd.io/_uploads/HyvhI07Iee.jpg) HS 2 ![WhatsApp Image 2025-07-15 at 15.25.02](https://hackmd.io/_uploads/SkBZnAQLex.jpg) ![WhatsApp Image 2025-07-15 at 15.25.18](https://hackmd.io/_uploads/HyRQ2RXIgl.jpg) HS 3 Puntke: 14/25 ![WhatsApp Image 2025-07-15 at 16.02.08](https://hackmd.io/_uploads/BkFcyyNLlx.jpg) ![WhatsApp Image 2025-07-15 at 16.02.28](https://hackmd.io/_uploads/H1D0kJVUeg.jpg) HS 4 Punkte: 22/25 a) 18/21 - 5/6 Entitäten wegen -1 - 4/5 Kardinalitäten -1 - PK volle Punkte - FK volle Punkte - Attribute -1 b) 4/4 ![WhatsApp Image 2025-07-15 at 16.04.49](https://hackmd.io/_uploads/rkBH7kNUgl.jpg) HS 5 Punkte: ![WhatsApp Image 2025-07-15 at 16.29.52](https://hackmd.io/_uploads/r1xZukVLeg.jpg) ![WhatsApp Image 2025-07-15 at 16.36.14](https://hackmd.io/_uploads/Bkf7_y4Lex.jpg) ![WhatsApp Image 2025-07-15 at 16.36.23](https://hackmd.io/_uploads/Hk44uJEUge.jpg) ::: :::spoiler HB (gemacht im Juli 2025) GA 2 GA2 HS 1 23/25 3/4 3/4 ![WhatsApp Image 2025-07-17 at 14.07.44](https://hackmd.io/_uploads/rJOpvvLLel.jpg) 6/6 11/11 ![WhatsApp Image 2025-07-17 at 14.08.09](https://hackmd.io/_uploads/Bk5RwvUUxe.jpg) GA2 HS 2 17/25 2/4 3/3 3/3 2/3 ![WhatsApp Image 2025-07-17 at 14.08.33](https://hackmd.io/_uploads/H1zgdD8Uex.jpg) 7/12 ![WhatsApp Image 2025-07-17 at 14.08.50](https://hackmd.io/_uploads/ByZfdvLIxe.jpg) GA2 HS 3 2/2 ?/8 1/3 3/4 ![WhatsApp Image 2025-07-17 at 14.09.09](https://hackmd.io/_uploads/HJgVOwUIgg.jpg) HB TODO Bewertung: ?/? ![WhatsApp Image 2025-07-17 at 14.09.38](https://hackmd.io/_uploads/B178_PLIxg.jpg) GA2 HS 4 0/10 5/6 ![WhatsApp Image 2025-07-17 at 14.09.53](https://hackmd.io/_uploads/rJBDdw8Lgl.jpg) Nutzwertanalyse - wäre zu prüfen ![WhatsApp Image 2025-07-17 at 14.10.15](https://hackmd.io/_uploads/r1_duv8Uge.jpg) GA2 HS 5 23/25 4/4 3/3 2/3 3/3 3/3 2/3 3/3 ![WhatsApp Image 2025-07-17 at 14.10.26](https://hackmd.io/_uploads/HkccODILex.jpg) ::: ## GA1 1. Handlungsschritt ### GA1 1. a) - zentraler Ort für alle firmeninterne Daten - Aktualisierung von allen Beteiligten möglich (inkl Rechtemanagement), dadurch immer - Wiederherstellung von früheren Versionen - Einfache Zugänglichkeit für alle Beschäftigten Selbstorganisierend (wenn etwas fehlt, sollte es ergänzt/geprüft werden) ### GA1 1. b) - Inhalte verwalten (erstellen, bearbeiten, löschen) - Inhalte veröffentlichen - u.a. für wen: öffentlich/intern, wann (ggf. automatisiert) - Rechtemanagement - Abteilungen, Öffentlichkeitsarbeit, ... - wer bearbeitet welche Unterseiten - zentrale Administration - Nutzerverwaltung, Updates, SSL, etc. ### GA1 1. c) | Vorgang | Beschreibung | Tage | Vorgänger | Nachfolger | | :------ | :------------------------- | :--- | :-------- | :--------- | | A | Istanalyse | 4 | - | B | | B | Grobkonzeption | 5 | A | C, D | | C | Vorstellung Grobkonzeption | 2 | A | E, G | | D | Feinkonzeption | 6 | A | F | | E | Installation | 2 | A | F | | F | Anpassung | 4 | A | H, I | | G | Dokumentation | 3 | A | I | | H | Planung Schulung | 4 | C, D | J | | I | Test | 7 | F | J | | J | Übergabe | 1 | F | - | Netzplan (Vorschlag RM) ```graphviz digraph Netzplan { node [shape=record] rankdir=LR; A [label= "{0 | 4} | {A | Istanalyse} | {4 | 0 | 0} | {0 | 4}"]; B [label= "{4 | 9} | {B | Grobkonzeption} | {5 | 0 | 0} | {4 | 9}"]; C [label= "{9 | 11} | {C | Vorstellung \n Grobkonzeption} | {2 | 0 | 0} | {9 | 11}"]; D [label= "{9 | 15} | {D | Feinkonzeption} | {6 | 0 | 0} | {9 | 15}"]; E [label= "{11 | 13} | {E | Installation} | {2 | 2 | 0} | {15| 17}"]; F [label= "{15 | 19} | {F | Anpassung} | {4 | 2 | 0} | {19| 23}"]; G [label= "{11 | 14} | {G | Dokumentation} | {3 | 6 | 0} | {17| 20}"]; H [label= "{19 | 23} | {H | Planung \n Schulung } | {4 | 6 | 2} | {25 | 29}"]; I [label= "{19 | 26} | {I | Test} | {7 | 6 | 2} | {25 | 32}"]; J [label= "{26 | 27} | {J | Übergabe} | {1 | 2 | 2} | {29 | 30}"]; T [label = "{FAZ|FEZ} | {Vorgang|Beschreibung} | {Dauer|GP|FP} | {SAZ|SEZ}"] A -> B B -> {rank=same; C; D} C -> {rank=same; E; G} D -> F E -> F F -> {rank=same; H; I} G -> I H -> J I -> J } ``` ### GA1 1. ca) kritischer Pfad: **A, B, C, E, F, H, J** ### GA1 1. cb) Da der Puffer am Ende bei 2 Tagen liegt (Vorgänge nach der Installation), verschiebt sich das Projektende um 1 Tag und der Puffer wird aufgebraucht. ## GA1 2. Handlungsschritt Hicham Lösung in PHP ```php <?php $unkomprimiert = ["Z", "Z", "Z", "Z", "7", "7", "7", "7", "7", "7", "7","7","7","7","M", "P", "P", "P", "P", "P", "H", "H"]; $komprimiert = []; $laenge = count($unkomprimiert); $zaehler = 1; for ($i = 1; $i < $laenge; $i++) { if ($unkomprimiert[$i] === $unkomprimiert[$i-1]) { $zaehler++; } else { if ($zaehler > 4) { $komprimiert[] = '%' . $zaehler . $unkomprimiert[$i-1]; } else { for ($j = 0; $j < $zaehler; $j++) { $komprimiert[] = $unkomprimiert[$i-1]; } } $zaehler = 1; } } if ($zaehler > 4) { $komprimiert[] = '%' . $zaehler . $unkomprimiert[$laenge - 1]; } else { for ($j = 0; $j < $zaehler; $j++) { $komprimiert[] = $unkomprimiert[$laenge - 1]; } } echo implode("", $komprimiert); ``` ## GA1 3. Handlungsschritt ### GA1 3. a) 1. View -> Controller D View informiert Controller über Nutzereingabe 2. Controller -> Model A Controller forder Model zu Zustandsänderung auf 3. Model -> View B Model informiert View über Zustandsänderung 4. View -> Model C View fordert die geänderten Daten vom Model zur Ansicht für den Benuter an ### GA1 3. b) ```plantuml skinparam style strictuml abstract "<<abstract>>\nModel" as M { - observers: Observer[] + setData(int, String): void {abstract} + getData(): String[] + addObserver(Observer): void # notifyObserver(): void } interface "<<interface>>\nObserver" as O { + update(): void } class "PatientModel" as PM extends M { } class "TabelView" as TV implements O { - model: Model + TableView(model: Model) + update() #red + display(): void } M *--right O M --> TV ``` ## GA1 4. Handlungsschritt Rel. Tabellenmodell in 3. NF für ein Abrechnungsmodell im Krankenhaus auf Basis zweier Übersichten erstellen. Inkl. PK und FK :::spoiler Aufgabenstellung medizinische Leistungen: ![grafik](https://hackmd.io/_uploads/S1ZWdjjrgx.png) nichtmedizinische Leistungen ![grafik](https://hackmd.io/_uploads/r1WrOojHxg.png) ::: ### GA1 4. a) ```plantuml hide circle scale 0.9 entity "Patient" as P { P_Nummer (PK) -- Name Straße Hausnummer PLZ Stadt } entity "Arzt" as A { A_Nummer (PK) -- Name Faktor } entity "Leistung_Med" as LM { LM_Nummer (PK) -- Datum A_Nummer (FK) P_Nummer (FK) LMArt_Nummer (PK) } entity "Leistung_Zusatz" as LZ { LZ_Nummer (PK) -- Datum_von Datum_bis P_Nummer (FK) LZArt_Nummer (FK) } entity "Leistung_Med_Art" as LMA { LMArt_Nummer (PK) -- Bezeichnung Preis } entity "Leistung_Zusatz_Art" as LZA { LZArt_Nummer (PK) -- Bezeichnung Tagespreis } ' Beziehungen ' P "1" -- "n" LM P "1" -- "n" LZ A "1" -- "n" LM LMA "1" -- "n" LM LZA "1" -- "n" LZ ``` ### GA1 4. b) Der Teil, der man loescht, ist innerhalb ein foreign key,was darf man nicht loeschen. man muss zum Beispiel zuerst Alter Table Tablename drop foreign key keyname benutzen um foreign key zu loeschen. ## GA1 5. Handlungsschritt ```plantuml hide circle left to right direction entity "Patient" as P { Pat_ID (PK) -- Pat_Name Pat_Vorname Pat_GebDatum } entity "Patien_Aufenthalt" as PA { PatAuf_ID (PK) PatAuf_PatID (FK) PatAuf_ZID (FK) -- PatAuf_AufnahmeDatum PatAuf_EntlassDatum } entity "Zimmer" as Z { Z_ID (PK) Z_BettID (FK) Z_StatID (FK) -- Z_ZimmerNummer } entity "Bett" as B { Bett_ID (PK) -- Bett_Nummer } entity "Station" as S { Stat_ID (PK) -- Stat_Station } ' Beziehungen ' P "1" -- "n" PA Z "1" -- "m" PA B "1" -- "n" Z S "1" -- "n" Z ``` :::spoiler Daten als SQL ```sql= -- ---------------------------- -- Table structure for `bett` -- ---------------------------- DROP TABLE IF EXISTS `bett`; CREATE TABLE `bett` ( `bett_id` varchar(20) DEFAULT NULL, `bett_nummer` varchar(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- ---------------------------- -- Records of bett -- ---------------------------- INSERT INTO `bett` VALUES ('1', '00347783'); INSERT INTO `bett` VALUES ('2', '00448637'); INSERT INTO `bett` VALUES ('3', '00358999'); INSERT INTO `bett` VALUES ('4', '07785688'); INSERT INTO `bett` VALUES ('5', '55800987'); -- ---------------------------- -- Table structure for `patient` -- ---------------------------- DROP TABLE IF EXISTS `patient`; CREATE TABLE `patient` ( `pat_id` varchar(20) DEFAULT NULL, `pat_name` varchar(20) DEFAULT NULL, `pat_vorname` varchar(20) DEFAULT NULL, `pat_gebdatum` date DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- ---------------------------- -- Records of patient -- ---------------------------- INSERT INTO `patient` VALUES ('1', 'muller', 'peter', '1966-02-06'); INSERT INTO `patient` VALUES ('2', 'trostan', 'jannick', '1957-02-15'); INSERT INTO `patient` VALUES ('3', 'sardon', 'sandra', '1988-03-31'); INSERT INTO `patient` VALUES ('4', 'grenzfeld', 'thorsten', '1990-06-04'); INSERT INTO `patient` VALUES ('5', 'neuhaus', 'anne', '1988-06-01'); -- ---------------------------- -- Table structure for `patient_aufenthalt` -- ---------------------------- DROP TABLE IF EXISTS `patient_aufenthalt`; CREATE TABLE `patient_aufenthalt` ( `patauf_id` varchar(20) DEFAULT NULL, `patauf_patid` varchar(20) DEFAULT NULL, `patauf_zid` varchar(20) DEFAULT NULL, `patauf_aufnahmedatum` date DEFAULT NULL, `patauf_entlassdatum` date DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- ---------------------------- -- Records of patient_aufenthalt -- ---------------------------- INSERT INTO `patient_aufenthalt` VALUES ('1', '2', '2', '2020-02-07', '2020-02-24'); INSERT INTO `patient_aufenthalt` VALUES ('2', '1', '2', '2020-02-01', '2020-02-26'); INSERT INTO `patient_aufenthalt` VALUES ('3', '3', '2', '2020-02-26', '2020-02-28'); INSERT INTO `patient_aufenthalt` VALUES ('4', '2', '3', '2020-04-11', '2020-04-30'); INSERT INTO `patient_aufenthalt` VALUES ('5', '4', '3', '2020-05-01', '2020-05-08'); INSERT INTO `patient_aufenthalt` VALUES ('6', '2', '1', '2020-05-02', '2020-05-18'); -- ---------------------------- -- Table structure for `station` -- ---------------------------- DROP TABLE IF EXISTS `station`; CREATE TABLE `station` ( `stat_id` varchar(20) DEFAULT NULL, `stat_station` varchar(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- ---------------------------- -- Records of station -- ---------------------------- INSERT INTO `station` VALUES ('1', 'innere'); INSERT INTO `station` VALUES ('2', 'kardiologie'); INSERT INTO `station` VALUES ('3', 'onkologie'); -- ---------------------------- -- Table structure for `test` -- ---------------------------- DROP TABLE IF EXISTS `test`; CREATE TABLE `test` ( `id` varchar(20) NOT NULL, `name` varchar(20) NOT NULL, `birth` date NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- ---------------------------- -- Records of test -- ---------------------------- INSERT INTO `test` VALUES ('1', 'zhang', '2022-06-23'); INSERT INTO `test` VALUES ('2', 'zhang', '2022-06-22'); INSERT INTO `test` VALUES ('3', 'li', '2022-06-25'); INSERT INTO `test` VALUES ('1', 'li', '2022-06-22'); INSERT INTO `test` VALUES ('2', 'wang', '2022-06-23'); -- ---------------------------- -- Table structure for `zimmer` -- ---------------------------- DROP TABLE IF EXISTS `zimmer`; CREATE TABLE `zimmer` ( `z_id` varchar(20) DEFAULT NULL, `z_bettid` varchar(20) DEFAULT NULL, `z_statid` varchar(20) DEFAULT NULL, `z_zimmernummer` varchar(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- ---------------------------- -- Records of zimmer -- ---------------------------- INSERT INTO `zimmer` VALUES ('1', '2', '1', '212'); INSERT INTO `zimmer` VALUES ('2', '3', '1', '212'); INSERT INTO `zimmer` VALUES ('3', '4', '1', '214'); -- ---------------------------- -- Table structure for `zimmer_abfrage` -- ---------------------------- DROP TABLE IF EXISTS `zimmer_abfrage`; CREATE TABLE `zimmer_abfrage` ( `pat_name` varchar(20) DEFAULT NULL, `pat_vorname` varchar(20) DEFAULT NULL, `pat_gebdatum` date DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- ---------------------------- -- Records of zimmer_abfrage -- ---------------------------- INSERT INTO `zimmer_abfrage` VALUES ('grenzfeld', 'thorsten', '1990-06-04'); INSERT INTO `zimmer_abfrage` VALUES ('neuhaus', 'anne', '1988-06-01'); INSERT INTO `zimmer_abfrage` VALUES ('sardon', 'sandra', '1988-03-31'); INSERT INTO `zimmer_abfrage` VALUES ('muller', 'peter', '1966-02-06'); INSERT INTO `zimmer_abfrage` VALUES ('trostan', 'jannick', '1957-02-15'); ``` ::: ### GA1 5. a) ```sql= SELECT Pat_Name, Pat_Vorname, Pat_GebDatum FROM Patient ORDER BY year(now()) - year(Pat_GebDatum), Pat_Name, Pat_Vorname DESC; ``` Es könnte noch `SELECT "Zimmer Abfrage";` vorangestellt werden, um die Ausgabe wie im Beispiel zu vervollständigen. ### GA1 5. b) ```sql= SELECT PatAuf_AufnahmeDatum, PatAuf_EntlassDatum, DATEDIFF(PatAuf_EntlassDatum,PatAuf_AufnahmeDatum) AS Dauer, Z_ZimmerNummer, Stat_Station, Bett_Nummer FROM Patient_Aufenthalt, Zimmer, Station, Bett WHERE Z_ID = PatAuf_ZID AND Bett_ID = Z_BettID AND Stat_ID = Z_StatID AND PatAuf_AufnahmeDatum >= '2020.2.1' AND PatAuf_EntlassDatum <= '2020.2.29' AND PatAuf_EntlassDatum IS NOT NULL; ``` ### GA1 5. c) ```sql= SELECT Bett_Nummer FROM Bett b WHERE Bett_ID NOT IN ( SELECT Z_BettID FROM Zimmer z inner JOIN Patient_Aufenthalt pa ON z.Z_ID = pa.PatAuf_ZID WHERE pa.PatAuf_AufnahmeDatum <= '2020.4.21' AND pa.PatAuf_EntlassDatum >= '2020.04.21' ); ``` ## GA2 1. Handlungsschritt Planungsdaten: - Roboter Anschaffungskosten 240.000 Euro - 8 (Roboter)-Arbeitsplätze (8 * 240.000 Euro = 1.920.000) - 1000 m² Nutzfläche - Netzwerk: 6 Accesspoints, POE-Switche, netzwerküberwachte Ladestationen - Qualitätsprüfung mit automatischen Messungen ### GA2 1. a) Stakeholder Stakeholder: Interessen - Mitarbeiter: Skeptisch bzgl. der ansteigenden Automatisierung und des Anpassungsdrucks - Gewerkschaften: Kritische Haltung aufgrund möglichen Personalabbaus und schwindem Einfluss im Unternehmen - Konkurrenten: Notwendigkeit ebenfalls mehr zu automatisieren, um wettbewerbsfähig zu bleiben - Kapitalgeber(Banken, Investoren): Interesse an höherer Produktivität und mehr Dividende bzw. besserer Finanzstärke - ... ### GA2 1. b) SWOT-Analyse **Stärken** - junges aufgeschlossenes Team, welches Einsatz von Robotern positiv gegenüber steht **Schwächen** - Das Image des Unternehmens ist bisher nicht gut ausgebaut und steht für veraltete Produkte/Prozesse **Chancen** - Auf Basis der Teilautomaisierung kann eine bessere Verbindung mit Lieferanten und Kunden erfolgen (bspw. Schnittstellen zu ERP etc.) **Risiken** - Konkurrenten haben Produktion voll automatisiert, Kapazität erhöht/Preise gesenkt - negative Berichterstattung in Presse/Öffentlichkeit ### GA2 1. c) Englisch - Kraftbegrenzung der Roboter - Dank Sensoren verlangsamte Abläufe, wenn Mensch in der Nähe bzw. Stop bei Berührung - Nutzer können den Roboter selbst programmieren/einstellen ### GA2 1. d) Finanzierung **Raten- und Abzahlungsdarlehen** für 1 Roboter - 4 Jahre (4 fester Tilgungsraten) - 5 % Zins Tilgungsrate: 240.000 : 4 = 60.000 Euro | Jahr | Schuld | Zinsen | Tilgung |Kreditrate|Restschuld| | ---- | -------: | -------: | -------: | -------: | -------: | | 1 | 240.000 | 12.000 | 60.000 | 72.000 | 180.000 | | 2 | 180.000 | 9.000 | 60.000 | 69.000 | 120.000 | | 3 | 120.000 | 6.000 | 60.000 | 66.000 | 60.000 | | 4 | 60.000 | 3.000 | 60.000 | 63.000 | 0 | | |**gesamt**| 30.000 |240.000 |270.000 | | - 30.000 Euro Zinsen (+240.000 Tilgung) = 270.000 Euro **Leasing** für 1 Roboter - 4 Jahre - monatlicher Leasingrate von 6.000 Euro - Restwert 16.000 Euro (wenn Übernahme) Leasing: - 6.000 * 12 = 72.000 Euro pro Jahr - 4 * 72.000 Euro = 288.000 Euro (+16.000 Restwert) Was ist wirtschaftlicher? (RM: wäre noch zu prüfen - Vergleich 30.000 Euro Zinsen mit Leasingrate wäre besser, ist hier aber schwieriger) RM Vorschlag: 270.000 = 100 % 288.000 = x % x = 106,667 Raten-Tilgung ist wirtschaftlicher, da Leasing 6,67 % höhere Kosten verursacht. ## GA2 2. Handlungsschritt Elektrotechnik ### GA2 2. a) Virtualisierung aa) Server-Virtualisierung ab) 2 Vor- und Nachteile virtuelle gegenüber physiche Server - :heavy_plus_sign: einfacher zu konfigurieren und aufzusetzen (VM-Ware/Docker etc.) - :heavy_plus_sign: günstiger, da je Hardware extrem viele virtuelle Server aufgesetzt werden können - :heavy_minus_sign: Direkter Zugriff auf einen physischen Rechner - :heavy_minus_sign: (HB) wenn ein physicher ausfällt, sind viele virtuelle Server betroffen - :heavy_minus_sign: Zum Einrichten von virtuellen Servern sind zusätzliche Fähigkeiten/Kenntnisse notwendig (Lernkurve) ac) Hardware die Virtualisiert werden kann - Prozessor(kerne), Leistung - Ram - Festplatte ### GA2 2. b) Vorteile virtueller Arbeitsplatzrechner: - :heavy_plus_sign: Bei Problemen (Fehlern, Abstürzen etc.) ist der Server in Sekunden wieder in der Ausgangskonfiguration verfügbar - :heavy_plus_sign: Alle haben die gleiche Konfiguration (bzw. können sehr schnell auf gleiches Niveau angepasst werden) - :heavy_plus_sign: Einfachere Erweiterung/Skalierung um weitere Rechner bzw. Arbeitsplätze - :heavy_plus_sign: Es muss nicht die Hardware von 20 Servern gewartet werden, sondern nur 1 zentraler leistungsstarker Server und einfache "Terminals" ### GA2 2. c) 1) Core-Switch: Verbindet verschiedene Netzwerkelemente miteinander (schnelle Datenübertragung) 2) Proxyserver: Vermittler zwischen Computer/Netzwerk und dem Internet. Dient der Sicherheit, Anonymisierung, etc. der hinter dem Proxy liegenden PCs/Netzwerke 3) Domain Controller: Authentifiziert Benutzer (Nutzername/Passwort) in einem Netzwerk 4) DMZ: Demilitarisierte Zone ist ein sicherer Bereich hinter der Firewall/Proxy bzw. ein Puffer; Schützt das interne Netzwerk ## GA2 3. Handlungsschritt Netzwerktechnik ### GA2 3. aa) Scans/Aufnamen pro Tag: 800 ### GA2 3. ab) b) Datenmenge pro Tag berechnen Gegeben: Fläche: 50 cm × 30 cm Auflösung: 400 dpi × 400 dpi Farbtiefe: 24 Bit = 3 Byte 1 inch = 2,54 cm 1. Umrechnung in Zoll: 50 cm = 50 ÷ 2,54 ≈ 19,69 inch 30 cm = 30 ÷ 2,54 ≈ 11,81 inch → Fläche in Inch²: 19,69 × 11,81 ≈ 232,54 inch² 2. Pixelanzahl pro Inch² bei 400 dpi: 400 × 400 = 160.000 Pixel pro Inch² 3. Gesamtanzahl Pixel pro Scan: 232,54 inch² × 160.000 = 37.206.400 Pixel 4. Speicher pro Scan (wegen 3 Byte Farbtiefe): 37.206.400 × 3 = 111.619.200 Byte 5. Umrechnung in GiB 89.295.360.000 / 2^30 = 84GB ### GA2 3. ba) USV - 3 Gefährdnungen Server ohne USV - Datenverlust - Hardwaredefekt - Inkonsitente Daten (bspw. verschiedener Datenbankserver/RAID-Systeme) - Überspannungsschutz ### GA2 3. bb) USV Beispielanwendung Eine USV gleicht Spannungsschwankungen aus und lässt die dahinter liegende Hardware mit einem stabilen (bspw. 50 Hz) Strom. Bei einem Stromausfall überbrückt die USV die Zeit bis der Strom wieder da ist oder ein Notstromaggregat anspringt. ### GA2 3. bc) Berechnungen: - Leistung: 7500W - Gesamtkapazität 8 Akkus: 1600 Ah - elektrische Energie (8 Akkus bei 12 V): 19200 Wh (W = Q * U = 1600Ah * 12V) - Überbrückungszeit USV: 2 Std 34 Min (19200Wh/7500W) ## GA2 4. Handlungsschritt ### GA2 4. a) Entscheidungstabelle aa) 2 Bedingungen in Entscheidungstabelle ab) 4 mögliche Aktionen ac) :::danger **TODO:** Aufgabe und Ablauf in der BBS nachfragen. ::: | | Re | ge | ln | | | ---------------------------------------- | -- | -- | -- | -- | | **Bedingungen** | R1 | R2 | R3 | R4 | | Auftrag liegt vor | 1 | 1 | 0 | 0 | | Akku ist zu 100% geladen | 1 | 0 | 1 | 0 | | **Aktionen** | R1 | R2 | R3 | R4 | | Roboter laden bis 100 % | 1 | 0 | 1 | 0 | | Roboter warten auf nächsten Auftrag | 1 | 0 | 1 | 0 | | ... | 1 | 0 | 1 | 0 | | ... | 1 | 0 | 1 | 0 | ### GA2 4. b) Datenformate CSV ~ Inhalte werden durch `,` oder `;` getrennt. Eher für tabellarische Inhalte geeignet. XML ~ Inhalte werden von Tags `<...>Inhalt</...>` umschlossen und sind in Baumstruktur zusammensstellbar. Es können zusatzlich Regeln für die Struktur festgelegt werden. ### GA2 4. c) Nutzwertanalyse ca) | Kriterien | Gewicht | Software A | | Software B | | | --------------- | ------: | ---------- | --: | ---------- | --: | | Funktionalität | 6 | 2 | 12 | 1 | 6 | | Effizienz | 1,5 | 2 | 3 | 1 | 1,5 | | Zuverlässigkeit | 2,5 | 1 | 2,5 | 2 | 5 | | **Ergebnis** | 10 | | 17,5| | 12,5 | cb) Software A sollte gekauft werden. ## GA2 5. Handlungsschritt IT Sicherheit ### GA2 5. a) Schutzmaßnahmen - Auch mit angemeldetem PC sollten kritische Inhalte (Statistiken Vertrieb) geschützt sein (Login) - Einsatz von Fido-Stick/Dongel (inkl. Schulung) um Nutzer davon abzuhalten, den PC in angemeldeten Zustand zu verlassen - Schulung: Tastenkürzel <kbd>Win</kbd> + <kbd>L</kbd> für Lock-Screen beibringen und für Sicherheit sensibilisieren ### GA2 5. b) Angriffe ba) Phising Durch Kontakte (E-Mail, soz. Medien, Telefon) oder über Webseiten wird von Kriminellen versucht an vertrauliche Daten (Passwörter, Zugangsdaten) zu kommen oder ggf. kritische Software (Trojaner etc.) zu installieren. bb) Hacking Kriminelle nutzen Sicherheitslücken in Software aus, um ohne Anmeldedaten in Computer einzubrechen (die Wege dazu können recht vielfältig sein). ### GA2 5. c) Passwörter ca) Je länger ein Passwort ist, desto schwieriger ist es bspw. durch Brute-Force-Attaken zu erraten. cb) Früher bestanden PW oft nur Zahlen (0..9) oder Buchstaben (a..zA..Z). Durch Sonderzeichen wird der verwendete Zeichensatz für alle mind. 12 Zeichen erweitert und die Sicherheit erhöht (Aufwand zum Knacken gesteigert). cc) 10 <sup>5</sup> = 100.000 ### GA2 5. d) Angriffe da) Angreifer können so das Passwort kaum erraten. Ohne die zeitliche Begrenzung wäre wie bspw. bei einer .zip-Datei mehrere Millionen Prüfungen, ob das PW stimmt pro Sekunde möglich. Mit der langen Zeit können nur wenige dutzend Passwörter pr Stunde getestet werden. db) (durch KI nicht mehr aktuell) Software die sich automatisiert registeriert fällt es schwer das Captcha korrekt einzugeben. --- :::spoiler sonstiges ChatGPT 4o Vorschlag HS 2 ```graphviz digraph Netzplan { node [shape=record]; rankdir=LR; A [label="{0|4} | {A|Istanalyse} | {4|0|0} | {0|4}"]; B [label="{4|9} | {B|Grobkonzeption} | {5|0|0} | {4|9}"]; C [label="{9|11} | {C|Vorstellung der \n Grobkonzeption} | {2|0|0} | {9|11}"]; D [label="{9|15} | {D|Feinkonzeption} | {6|0|0} | {9|15}"]; E [label="{11|13} | {E|Installation} | {2|2|0} | {15|17}"]; F [label="{15|19} | {F|Anpassung} | {4|2|0} | {19|23}"]; G [label="{11|14} | {G|Dokumentation} | {3|6|0} | {17|20}"]; H [label="{19|23} | {H|Planung \n Schulungsmaßnahmen} | {4|6|2} | {25|29}"]; I [label="{19|26} | {I|Tests} | {7|6|2} | {25|32}"]; J [label="{26|27} | {J|Übergabe} | {1|2|2} | {29|30}"]; A -> B; B -> C; B -> D; C -> E; C -> G; D -> F; E -> F; F -> H; F -> I; G -> I; H -> J; I -> J; } ``` HS 4 a) Vorschlag RM vereinfacht ```plantuml left to right direction hide circle entity "Patient" as P { P_Nummer (PK) -- Name Straße Hausnummer PLZ Stadt } entity "Arzt" as A { A_Nummer (PK) -- Name Faktor } entity "Leistung_Med" as LM { LM_Nummer (PK) -- Bezeichnung Datum Preis A_Nummer (FK) P_Nummer (FK) } entity "Leistung_Zusatz" as LZ { LZ_Nummer (PK) -- Bezeichnung Tagespreis Datum_von Datum_bis P_Nummer (FK) } ' Beziehungen ' P "1" -- "n" LM P "1" -- "n" LZ A "1" -- "n" LM ``` Texte zur HS 5 a) **Erklaeren:** Die 'order by'-Sortierung wird entsprechend der Reihenfolge der Sortierobjekte nach 'order by' sortiert. Bei dieser Frage wird das Pat_Gebdatum, das 'order by' am nächsten liegt, zuerst sortiert(HIER DARF MAN NICHT ALS:order by Pat_GebDatum schreiben,weil bei Geburstagsdatum aufsteigende sortieren ist zum Beispiel:01.01.1955,01.09.1988,01.09,1996), nur der Geburtsjahr(WICHTIG:NUR AUF JAHR KONZENTRIEREN NICHT AUF MONAT UND TAG) des Patienten wird nach dem ersten wiederholt Name des Nachnamens Alphabetische Sortierung, bei Wiederholung des Anfangsbuchstabens des Geburts- und Nachnamens wird nach dem Anfangsbuchstaben des Vornamens sortiert b) **Erklaeren:** als Dauer kann man verstehen: Dauer=EntlassDatum-AufnahmeDatum, hier verlangt Dauer wie viel Tage Patienten geblieben, deswegen benutzt man DATEDIFF(PatAuf_EntlassDatum,PatAuf_AufnahmeDatum)as Dauer. Der von der Frage angeforderte Datumsbereich ist also Februar 2020,deswegen PatAuf_AufnahmeDatum>='01.02.2020' and PatAuf_EntlassDatum<='29.02.2020'. PatAuf_EntlassDatum is not null heisst Patienten sind schon entlasst werden, wenn die Patienten nicht entlasst werden ,soll PatAuf_EntlassDatum null sein. c) **Erklaeren:** Wenn das Aufnahmedatum vor dem 21. April und das Entlassungsdatum vor dem 21. April oder das Krankenhausdatum vor dem 21. April und das Entlassungsdatum vor dem 21. April liegt, muss das Bett leer sein. Umgekehrt, wenn das Aufnahmedatum kleiner oder gleich dem 21.04 und das Entlassungsdatum größer oder gleich dem 21.04 ist, ist das Bett definitiv nicht leer. Solange also die „bett_id“ nicht in dem Zeitraum liegt, in dem das Aufnahmedatum kleiner oder gleich dem 21.04 und das Entlassungsdatum größer oder gleich dem 21.04 ist, kann das Ergebnis erhalten werden. :::