# ERD Abbildung "nur gültig von"



## MoxxiManagarm (24. Apr 2018)

Ich hoffe ich knn mein Problem ausreichend wiedergeben.

Es gehören immer mindestens 3 Entities zu diesem Fall. Beispiel:

Eine Bestellung kennt die Zieladresse und den Kunden. Der Kunde hat mehrere Adressen. Wie kann man im ERD abbilden, dass die Zieladresse der Bestellung eine dem Kunden zugeordnete Adresse sein muss. Oder kann man das nicht abbilden und diese Rahmenbedingung ist applikationsseitig zu gewährleisten?


----------



## AndiE (24. Apr 2018)

Wenn man "Filiale" mit rein nimmt?
1 Kunde kann mehrere Filialen,  haben aber eine Filiale nur zu einem Kunden gehören
1 Filiale kann mehrere Bestellungen bekommen, aber 1 Rechnung gehört zu einer Filiale
1 Kunde kann mehrere Rechnungen bekommen, aber jede Rechnung kann nur einem Kunden zugeordnet sein.

Wobei Bestellung und Rechnung nicht 1:1 sein braucht.

Meinst du das so?


----------



## MoxxiManagarm (24. Apr 2018)

Wäre das gleiche Problem wie die Adresse.

Nein ich mein rein relational gesehen könnte die Bestellung in meinem Fall eine Adresse aufzeigen an dem der Kunde nicht wohnhaft ist.

Ich würde gerne dartellen dass der Kunde an der Lieferadresse auch wohnhaft sein muss und ich würde gerne wissen ob und wie dass auf der DB Schicht möglich ist


----------



## Thallius (24. Apr 2018)

Also ich würde es nicht auf DB Schicht binden aber wenn du es unbedingt willst, dann binde halt die Rechnung an die Adresse und nicht den Kunden.

Gruß

Claus


----------



## MoxxiManagarm (24. Apr 2018)

Danke für die Antworten. Ich hatte nur Bedenken weil es potenziell eine Fehlerquelle ist. Aber ich lese heraus, dass es anscheinend dafür nicht unbedingt ein best practice gibt, die Bedenken muss dann einfach die Applikation übernehmen.


----------



## Thallius (24. Apr 2018)

MoxxiManagarm hat gesagt.:


> Danke für die Antworten. Ich hatte nur Bedenken weil es potenziell eine Fehlerquelle ist. Aber ich lese heraus, dass es anscheinend dafür nicht unbedingt ein best practice gibt, die Bedenken muss dann einfach die Applikation übernehmen.



Du kannst, wenn du es unbedingt sicher machen willst, ja noch einen trigger nach dem insert und Update starten der testet ob die Bedingung erfüllt ist.


----------



## AndiE (24. Apr 2018)

Ist das nicht zuviel des Guten?

Kunde(Kunden-ID(PK), Firma, Name, Straße, Ort, PLZ)

Bestellpos(Bestellpos-ID(PK), Waren-ID,Anzahl, Rechnungs-ID(FK))

Rechnung(Rechnungs-ID(PK), Kunden-ID(FK))

Wäre mein Entwurf. 

De Frage ist doch, wieso Kunde und Adresse getrennt werden sollen?


----------



## thecain (24. Apr 2018)

Weil ein Kunde mehrere Adressen hat


----------



## mrBrown (24. Apr 2018)

In einem (z.B.) Domänen-Modell würde man das mit OCL ausdrücken, etwa:

```
context Bestellung inv: self.kunde.adressen->includes(self.zieladresse)
```

Äquivalentes für ERD gibts afaik nicht, ich würd sowas auch sowieso Applikationsseitig lösen.


----------

