# Umwandlung von ER-Modell in ein Relationales Schema



## Mole23 (12. Jan 2012)

Hallo zusammen,

auch wenn dieses Thema sich nicht wirklich auf Java bezieht, hoffe ich auf eure Hilfe. Ich besuche zur Zeit einen Datenbankkurs auf einer Hochschule. Leider weigert sich mein Dozent mir eine PVL zu geben, wenn ich nicht folgendes Problem bis heute Abend 23.59 Uhr löse:

Ich habe ein ER-Modell erstellt, welches ich in ein relationales Schema umwandeln muss. Lustigerweise macht mir SQL und Java weniger Schwierigkeiten aber bei der Theorie harperts etwas.

Zunächst mein Modell und mein Schema:

ER-Modell: klick me

Relationales Schema: klick me


Jetzt bemängelt meinen Dozent den Primärschlüssel des Schemas: "Position". Ich bin mir nicht ganz sicher wieso. Müsste ich das Schema um eine art ID oder Positionsnummer erweitern? Ich hatte auch eine lösung gesehen in der es zwei Spalten mit Primär- und Fremdschlüssel gab. Wie kann das denn sein? Da wüsste ich garnicht wie ich das in SQL umsetzte... 

Wenn jemand eine Idee hat, wäre super... Mir fällt nur das mit der zusätzlichen Id ein... 

Beste Grüße, Ole!


----------



## andiv (12. Jan 2012)

Wenn in der Tabelle Position alleine die Spalte Bestellnr Primärschlüssel ist dann darf es dort ja zu jeder Bestellnr nur einen Eintrag geben. Das würde dann heißen dass jede Bestellung nur aus einem Artikel besteht (in einer bestimmten Stückzahl).

Eine extra Id-Spalte als Primärschlüssel ist aber auch nicht ideal, denn jede Kombination aus Bestellnr und Artikelnr sollte ja nur einmal in der Tabelle vorkommen. (Warum zwei Einträge mit Stückzahl 2 wenn auch ein Eintrag mit Stückzahl 4 geht?)

Lösung sollte meiner Meinung nach sein dass Bestellnr und Artikelnr einen zusammengesetzten Primärschlüssel bilden. Dann wird von der Datenbank sichergestellt dass die Kombination aus Bestellnr und Artikelnr eindeutig ist.

Je nach Datenbank sieht das dann z.B. so aus:

```
ALTER TABLE Position ADD CONSTRAINT pk_position PRIMARY KEY (BestellNr, ArtikelNr)
```


----------



## Mole23 (12. Jan 2012)

Ach wie cool, vielen vielen Dank!

Ich glaube die Kombination ist auch genau das was mein Dozent sehen will. Ich hatte schon öfters Schemen mit zwei Primärschlüsseln gesehen, aber hatte nie verstanden wie das funktionieren soll. 

Das man einen zusammengesetzten Primärschlüssel bilden kann, war mir so nicht bewusst. Das ist ja klasse. Dann brauch ich nämlich meinen Code auch garnicht groß umschreiben.

Ja super! Da fällt mir ein Stein vom Herzen. Vielen, vielen Dank und beste Grüße!


----------

