unterschiedliche logisch Beziehungen in einer DB-Tabelle speichern
bearbeitet von Camping_RIDERAloha ;)
Zunächst: wenn du das vorstehende [Geschwurbel](https://forum.selfhtml.org/self/2019/oct/19/unterschiedliche-logisch-beziehungen-in-einer-db-tabelle-speichern/1759021#m1759021) nicht verstanden hast, denk dir nichts dabei. Manch Lösung eines genialen Geistes ist für solche wie uns einfach unverständlich.
> etwa:
>
> dabei ist "fürKurs" ein Fremdschlüssel der entweder auf die Kurstabelle verweist oder auf sich selbst.
>
> | fürKurs | Bed1 | verknüpfung | bed2 |
> |---------|-------|-------------|-------|
> | KursK | KursA | oder | 2 |
> | 2 | KursB | und | KursC |
>
> Nun habe ich 2 Probleme die ich aktuell sehe:
>
> A wie unterscheide ich, auf welche Tabelle sich der Fremdschlüssel bezieht, mal ganz davon abgesehen, wie kann ich eine Spalte auf 2 Tabellen referenzieren lassen
"Einfach" geht das nicht. Ich schlage daher einen leicht geänderten Ansatz vor:
ID | fürKurs | Element | verknüpfung | mit |
---|---------|---------|-------------|-------|
0 | KursK | KursA | oder | 1 |
1 | KursK | KursB | und | 2 |
2 | KursK | KursC | oder | Null |
So ist an jeder Spalte klar, für welche Tabelle der Schlüssel gilt.
> B Mit diesem Entwurf kann ich sowas wie KursA UND (KursB ODER (KursC UND KursD) ODER KursE) nicht abbilden.
Doch, kannst du! Du musst die Bedingung nur gleichwertig umordnen:
KursA UND (KursB ODER (KursE ODER (KursC UND KursE)))
In deinem Beispiel war ein oder-oder drin. Das lässt sich in zwei hintereinander ausgeführte oders umschreiben. Das klappt für alle und- bzw. oder-Verknüpfungen, weil diese assoziativ und kommutativ sind.
Wie du die Eingabemöglichkeit gestaltest steht auf einem anderen Blatt, aber entweder muss deine Software vor dem Speichern umordnen oder (wahrscheinlicher) es stellt sich heraus, dass es für dich schon bei der Eingabe geschickt ist, ein solches Format zu fordern.
Ich hoffe die Idee hilft dir weiter.
Grüße,
RIDER
--
Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
# [Twitter](https://twitter.com/Camping_RIDER) # [Steam](http://steamcommunity.com/id/Camping_RIDER) # [YouTube](https://www.youtube.com/user/RidersFlame) # [Self-Wiki](http://wiki.selfhtml.org/wiki/Benutzer:Camping_RIDER) #
[Selfcode](http://community.de.selfhtml.org/fanprojekte/selfcode.htm): sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[