Sommer 2017

HS 5


In [1]:
%load_ext sql

In [2]:
%sql mysql://steinam:steinam@localhost/sommer_2017


Out[2]:
'Connected: steinam@sommer_2017'

Die Bioscan GmbH plant ein System zur Zugangskontrolle. Dazu wurde bereits folgende Datenbank entwickelt und mit Testdaten gefüllt.

so_2015_hs_5_datenmodell.png

a) Liste aller Gebäude mit deren Räumen jeweils aufsteigend sortiert nach Gebäudebezeichnung und Raumtyp


In [3]:
%%sql

select G.*, R.*
from `gebaeude` G
left join Raum R on G.`GebID` = R.`GebID`
order by G.`Bezeichnung`, R.`Typ`


9 rows affected.
Out[3]:
GebID Bezeichnung Strasse PLZ Ort RaumID Typ GebID_1 MerkID
1 Forschung H Heinrich-Hertz-Str. 12 50501 Köln 5 Besprechungsraum 1 1
1 Forschung H Heinrich-Hertz-Str. 12 50501 Köln 3 Labor 1 2
1 Forschung H Heinrich-Hertz-Str. 12 50501 Köln 4 Labor 1 2
3 Forschung I Heinrich-Hertz-Str. 16 50501 Köln 6 Labor 3 2
3 Forschung I Heinrich-Hertz-Str. 16 50501 Köln 7 Labor 3 2
3 Forschung I Heinrich-Hertz-Str. 16 50501 Köln 8 Labor 3 2
2 Forschung U Heinrich-Hertz-Str. 14 50501 Köln 1 Besprechungsraum 2 1
2 Forschung U Heinrich-Hertz-Str. 14 50501 Köln 2 Labor 2 2
4 Verwaltung Transalee 22 50555 Köln None None None None

b) Liste aller Daten, die in der Tabelle Zugang gespeichert sind und die dazugehörigen Personendaten

Hinweis: Die Darstellung entspricht nicht dem erwarteten Ergebnis (redaktioneller Fehler in der Kammerprüfung (Dilettanten :-))


In [ ]:
%%sql

-- b
-- Ausgabe in der Kammerprüfung kann laut Datenbestand nicht ausgegeben werden
select p.*, Z.*
from Zugang Z
 left join Person P on P.`PersID` = Z.`PersID`

c) Anzahl der Räume, die bei derZugangskontrolle das Merkmal "Fingerabdruck prüfen" bzw. das Merkmal Iris prüfen


In [5]:
%%sql

 Select M.Merkmal, COUNT(R.RaumID) as AnzahlRaueme
 from Raum R left join Merkmal m on M.`MerkID` = R.`MerkID`
 group by M.`Merkmal`


2 rows affected.
Out[5]:
Merkmal AnzahlRaueme
Fiingerabdruck 2
Iris 6

d) Liste der Zugangsdaten von Max Müller. Hinweis: Es ist nur der Name, nicht die PersID bekannt


In [6]:
%%sql
select P.`Nachname`, P.`Vorname`, Z.RaumID, Z.`ZeitVon`, Z.`ZeitBis`from Zugang Z
 	left join Person P
    	on P.`PersID` = Z.`PersID`
        where P.`Nachname` = 'Müller' and P.`Vorname` = 'Max'


2 rows affected.
Out[6]:
Nachname Vorname RaumID ZeitVon ZeitBis
Müller Max 1 08:00 10:00
Müller Max 2 14:00 18:00

e) Liste aller Personen aus dem PLZ-Gebiet 5000 bis 5999


In [7]:
%%sql

Select P.*
 from Person P
 where P.`PLZ` like '5%'


2 rows affected.
Out[7]:
PersID Nachname Vorname Strasse PLZ Ort
101 Müller Max Müllerweg 1 52335 Köln
404 Wester Klaus Hauptstr. 13 55667 Köln