Habe da gerade ein designtechnisches Problem...
folgende Entitäten sind gegeben:
- Kunde
- Kontaktperson
- Termin
folgende Anforderungen sollen erfüllt werden:
- zu einem Kunden können mehrere Termin gehören aber ein Termin gehört immer zu genau einem Kunden
- zu einem Kunden können mehrere Ansprechpartner gehören aber ein Ansprechpartner gehört immer zu genau einem Kunden
- zu einem Termin kann ein Kunde gehören
- zu einem Termin können mehre Ansprechpartner gehört (und jetzt kommt das Problem) diese müssen aber zu dem Kunden gehören der zu dem Termin gehört
OK, also im Anhang ist ein ER-Diagramm wie ich drauf gekommen bin das man das machen könnte, andere Ideen hat ich bis jetzt keine...
Das ganze in Tabellen umgesetzt sieht dann etwa so aus (Attribute (ausser Schlüssel), Datentypen, etc. spar ich mir):
Code:
._______________.
| Kontaktperson | ._________.
1+---------------+ | Kunde |
.---| id (PK) |n 1+---------+1
| | kunde (FK) |------| id (PK) |----------------.
| '---------------' '---------' |
| |
| ._________________________. .____________. |
| | TerminKontaktperson | | Termin | |
| +-------------------------+n 1+------------+ |
| n| termin (PK) (FK) |------| id (PK) |n |
'---| kontaktperson (PK) (FK) | | kunde (FK) |---'
'-------------------------' '------------'
Schön und gut, so umgesetzt ist es aber möglich, dass wärend in der Tabelle `Termin` auf einen Eintrag in der Tabelle `Kunden` gezeigt wird, in der Tabelle `TerminKontaktperson` jedoch auf diesen Eintrag in `Termin` wird während auf einen Eintrag in `Kontaktperson` verwiesen wird der nicht auf den selben Eintrag in `Kunden` verweist, also Beispiel:
Code:
________.
/ Termin |
+------------.
| id | kunde |
+----+-------+
| 1 | 1 |
'----+-------'
_______.
/ Kunde |
+-------+
| id |
+----+
| 1 |
+----+
| 2 |
'----'
_______________.
/ Kontaktperson |
+---------------+
| id | kunde |
+----+-------+
| 1 | 2 |
'----+-------'
_____________________.
/ TerminKontaktperson |
+------------------------.
| termin | kontaktperson |
+--------+---------------+
| 1 | 1 |
'--------+---------------'
Hier ist der Termin 1 dem Kunden 1 zugehörig, gleichzeitig jedoch ist die Kontaktperson 1 dem Termin 1 zugewiesen obwohl diese Kontaktperson nicht dem Kunden 1 angehört...
Kann man das irgendwie vom Design her schon auflösen ohne dass die Abbildungsmöglichkeiten dahinter (siehe Anforderungen am Anfang) verloren gehen?
Und bitte, ich weiss, was Check-Constraints sind, auf sowas will ich nicht hinaus, so wirds zur Not gelöst wenns nicht anders geht.
Mir ginge das darum, dass das ganze so umgeformt werden kann, dass es nur durch Foreign-Key-Constraints abgefangen werden kann...
Danke für jeden Hinweis!
Lesezeichen