Foreign Key und Primary Key < Datenbanken < Praktische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 20:21 Fr 05.06.2009 | Autor: | Sir_Knum |
Aufgabe | Mitarbeiter verschiedener Firmen arbeiten gemeinsam an Projekten, wobei jeder Mitarbeiter an mindestens einem Projekt arbeitet und jedes Projekt durch mindestens einen Mitarbeiter bearbeitet wird. Jeder Mitarbeiter hat ein bestimmtes Stundenkontingent und eine bereits erbrachte Stundenanzahl für jedes durch ihn zu bearbeitende Projekt. Da verschiedene Arbeiten aufeinander aufbauen, gelten je nach Mitarbeiter und Projekt unterschiedliche Fertigstellungstermine, wobei der früheste mögliche Termin der 1.7.2005 ist. Die Relationen Mitarb (Id-Schlüssel mnr als char (4)) und Projekte (Id-Schlüssel pnr als char(3)) wurden bereits definiert.
Definieren Sie mittels SQL eine Relation Arbeiten, die genau nur die nötigen Attribute, aber alle sinnvollen Integritätsbedingungen enthält, um Mitarbeiter mit ihren Stunden und Terminen für Projekte zu verwalten
|
Okay meine Lösung mit Oracle wäre:
CREATE TABLE Arbeiten
( mnr char(4),
pnr char(3),
Termin date check (Termin >'01.07.2005'),
erbrStd integer,
KontiStd integer,
PRIMARY KEY (mnr, pnr),
FOREIGN KEY mnr references on Mitarb(mnr),
FOREIGN KEY mnr references on Projekte(pnr)
);
Kann man das so lösen? Ergibt es überhaupt einen Sinn ein Attribut als Foreign Key und als Primary Key zu deklarieren?
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 21:05 Fr 05.06.2009 | Autor: | rainerS |
Hallo!
> Mitarbeiter verschiedener Firmen arbeiten gemeinsam an
> Projekten, wobei jeder Mitarbeiter an mindestens einem
> Projekt arbeitet und jedes Projekt durch mindestens einen
> Mitarbeiter bearbeitet wird. Jeder Mitarbeiter hat ein
> bestimmtes Stundenkontingent und eine bereits erbrachte
> Stundenanzahl für jedes durch ihn zu bearbeitende Projekt.
> Da verschiedene Arbeiten aufeinander aufbauen, gelten je
> nach Mitarbeiter und Projekt unterschiedliche
> Fertigstellungstermine, wobei der früheste mögliche Termin
> der 1.7.2005 ist. Die Relationen Mitarb (Id-Schlüssel mnr
> als char (4)) und Projekte (Id-Schlüssel pnr als char(3))
> wurden bereits definiert.
> Definieren Sie mittels SQL eine Relation Arbeiten, die
> genau nur die nötigen Attribute, aber alle sinnvollen
> Integritätsbedingungen enthält, um Mitarbeiter mit ihren
> Stunden und Terminen für Projekte zu verwalten
>
> Okay meine Lösung mit Oracle wäre:
> CREATE TABLE Arbeiten
> ( mnr char(4),
> pnr char(3),
> Termin date check (Termin >'01.07.2005'),
> erbrStd integer,
> KontiStd integer,
> PRIMARY KEY (mnr, pnr),
> FOREIGN KEY mnr references on Mitarb(mnr),
> FOREIGN KEY mnr references on Projekte(pnr)
> );
Das "on" hinter "references" ist zuviel, es heisst:
FOREIGN KEY mnr references Mitarb(mnr)
> Kann man das so lösen? Ergibt es überhaupt einen Sinn ein
> Attribut als Foreign Key und als Primary Key zu
> deklarieren?
Ja. Schau mal hier zu diesem Thema!
Viele Grüße
Rainer
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:25 Fr 05.06.2009 | Autor: | Sir_Knum |
Jo, danke für die Antwort!
|
|
|
|