In Tabellen sollten Sie nur einwertige Merkmale verwenden. Bei mehrwertigen Merkmalen kann es zu Schwierigkeiten bei der Abarbeitung in Beziehungswissen kommen.
Wenn das Merkmal der Klasse mehrwertig ist, sollten Sie daher für die Tabelle ein eigenes einwertiges Merkmal anlegen, das das gleiche Format und die gleichen Werte hat, wie das Merkmal der Klasse, dem es zugewiesen wird.
Beispiel
In der Klasse FAHRRAD ist das mehrwertige Merkmal ZUBEHOER und das einwertige Merkmal MODELL. Sie möchten eine Tabelle definieren, in der abhängig vom Modell des Fahrrads das Zubehör festgelegt wird.
Dazu ist es notwendig für die Tabelle ein zusätzliches Merkmal ZUBEHOER_EINW zu definieren. Für das Merkmal MODELL braucht kein eigenes Merkmal für die Tabelle definiert zu werden, da es einwertig ist.
In der Tabelle erfassen Sie die Wertekombinationen für MODELL und ZUBEHOER_EINW.
In einer Aktion wird das einwertige Merkmal mit dem mehrwertigen Merkmal verglichen:
TABLE Zubehoer (Modell = Modell, Zubehoer_einw = $Self.Zubehoer)
Herleitung für ein mehrwertiges Merkmal
Die Herleitungen aus einer Tabelle müssen immer eindeutig sein. Das bedeutet, daß auch für mehrwertige Merkmale über eine Tabelle nur ein Wert hergeleitet werden kann:
Table Zubehoer01
Modell |
Zubehoer_einw |
JOURNEY |
Seitenständer |
CITY |
Korb |
COUNTRY |
Mantelschoner |
Für ein Modell können nicht gleichzeitig ein Seitenständer und ein Korb als Zubehör über die Tabelle hergeleitet werden.
Mehrwertige Merkmale in Bedingungen
Ein einwertiges Merkmal der Tabelle kann in Bedingungen nicht mit einem mehrwertigen Merkmal der Klasse verglichen werden, da die Aussage nicht eindeutig interpretiert werden kann.
Folgender Tabellenaufruf ist z.B. in einer Vorbedingung unzulässig:
TABLE Zubehoer (Modell = Modell, Zubehoer_einw = Zubehoer)
Für das System ist nicht eindeutig, wie es den Vergleich von ZUBEHOER_EINW und ZUBEHOER interpretieren soll, damit die Bedingung gültig ist:
Muß der Wert von ZUBEHOER_EINW in den Werten, die für ZUBEHOER gesetzt wurden, enthalten sein?
Oder darf nur genau der in der Tabelle angegebene Wert für ZUBEHOER gesetzt sein?
Siehe auch: