Datenbanken und Informationssysteme II (Test 2)

Werbung
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
Herunterladen