Rolf B: unterschiedliche logisch Beziehungen in einer DB-Tabelle speichern

Beitrag lesen

Hallo Camping_RIDER,

sorry, hatte wohl Knöpfe auf den Augen. Klar - binäre Terme kann man als binären Baum aufbauen und per SQL rekursiv zusammensuchen. Dagegen steht dann alternativ mein Vorschlag mit der DNF und einem n-ären zweistufigen Baum, der sich ohne Rekursion auslesen lässt. Letztendlich hast Du ja nur eine Klammer mehr gesetzt (und dich bei KursD vertippt 😉)

wKovacz: KursX = KursA UND (KursB ODER (KursC UND KursD) ODER KursE)

CampRid: KursX = KursA UND (KursB ODER (KursE ODER (KursC UND KursD)))

Das sind 5 Kurse, die Wahrheitstabelle ist demnach etwas umständlicher. Der Term ist hier aber so gestaltet, dass die DNF relativ einfach zu finden ist. Man muss das UND hinter KursA nur ausmultiplizieren und bekommt (boolescher Term, UND wird nicht geschrieben und $$\lor$$ (lat. vel = oder) steht für ODER. Ein NOT würde als $$\overline{A} $$ geschrieben). Sei X die Regel für Kurs X und ABCDE die Kurse A-E. Dann sieht euer mehrstufiger Term als DNF so aus:

$$X = AB \lor ACD \lor AE$$

Im Allgemeinen ist das Finden der DNF bei verschachtelten Termen umständlicher, aber da ist auch das Schreiben des Terms umständlich, und es ist einfacher, von der Wahrheitstabelle auszugehen. Um dann aus einer Wahrheitstabelle eine optimale DNF zu bauen, gibt es Techniken (Karnaugh-Veitch-Diagramm und Quine-McCluskey Algorithmus) und bestimmt auch Tools (wobei ich gerade keins finde, das eine Wahrheitstafel als Input nimmt - seltsam).

Wenn das zu kompliziert ist - eine optimierte DNF ist nicht zwingend nötig. Auf sowas reiten die Schaltalgebra-Ingenieure herum, bei denen unnötige Siliziumatome oder Quadratnanometer Geld richtig teuer sind.

In den von mir vorgeschlagenen Tabellen sähe es so aus:

OderTerme

Kurs     Gruppe
KursX    201
KursX    202
KursX    203

UndTerme

Gruppe  Vor_Kurs   Erforderlich
201     KursA       1
201     KursB       1
202     KursA       1
202     KursC       1
202     KursD       1
203     KursA       1
203     KursE       1

Rolf

--
sumpsi - posui - clusi