Name: __________________ Matrikelnummer: __________ Hochschule Karlsruhe –Technik und Wirtschaft- 1.12.2016 Fakultät für Informatik und Wirtschaftsinformatik Prof. Schmidt WS 2016 Gruppe (b) Datenbanken und Informationssysteme II (Test 2) Szenario: Auktionen (Schema in Anhang A, Programmierrahmen Anhang B). Hinweis: Du kannst entweder die PDO- Library oder die PDO_Util Library zur Bearbeitung der beiden Aufgaben verwenden. Im Falle dass du direkt mit der PDO Library arbeitest, geh davon aus, dass dir eine globale Variable $dbHdle zur Verfügung steht, welche eine geöffnete Datenbankverbindung repräsentiert. Aufgabe 1: Erstelle für die Klasse CRUD_Person eine Instanzenmethode abgegebeneGebote(), welche für die entsprechende Person alle bisherigen Gebote, sortiert nach dem Gebotszeitpunkt zurückliefert, in Form eines Arrays von Instanzen vom Typ Gebot zurückliefert. Aufgabe 2: Erstelle in einer von CRUD_Person abgeleiteten Klasse eine Methode neuesGebot($artikel, $betrag), welche ein neues Gebot für den entsprechenden Artikel abgibt. Dabei soll überprüft werden, ob die Person nicht mit dem Anbieter übereinstimmt (das ist verboten!). In diesem Fall soll eine Exception geworfen werden, die folgende Meldung ausgibt: <vorname> <nachname> ist der Anbieter des Artikels <artikelbeschreibung> und darf deshalb nicht mitbieten. Hinweise: <vorname> <nachname> und <artikelbezeichnung> sind mit den entsprechenden Werten zu belegen. Du darfst kein SQL benutzen. Anhang A (Tabellendefinitionen): create table person ( id integer primary key, vorname varchar(20), nachname varchar(20) ); create table auktionsartikel ( id integer primary key, bezeichnung varchar(40) not null, mindestgebot float not null, auktionsstart timestamp not null, auktionsende timestamp not null, verkaeufer_fk integer not null references person(id) ); create table gebot ( artikel_fk integer references auktionsartikel (id) on delete cascade, bieter_fk integer references person (id) on delete cascade, betrag float not null, zeitpunkt timestamp, primary key(artikel_fk, bieter_fk, zeitpunkt) ); Anhang B (OR-Schicht Programmierrahmen): class CRUD_Gebot { protected protected protected protected $artikel_fk; $bieter_fk; $zeitpunkt; $betrag; function __construct($dic) { ... } function getId() { ... } function getBetrag() { ... } } class CRUD_Person { protected $id; protected $nachname; protected $vorname; function __construct($dic) { ... } function getId() { ... } function getNachname() { ... } function getVorname() { ... } function neuesGebot($artikel, $betrag) { ... } # trägt das Gebot für den # angegebenen Artikel ein. } class CRUD_Auktionsartikel { protected protected protected protected protected protected $id; $bezeichnung; $mindestgebot; $auktionsstart; $auktionsende; $verkaeufer_fk; function __construct($dic) { ... } function getId() { ... } function getBezeichnung() { ... } function getVerkaeufer() { ... } } # liefert Personeninstanz