Um dies zu verwalten, müssen Ihre Untertypen vom Supertyp bestimmt werden (dh die PK des Untertyps ist auch eine FK vom Untertyp zum Supertyp.)
Die Herausforderung besteht darin zu verstehen, ob sich etwas wirklich gegenseitig ausschließt oder nicht. Die Attribute von Untertypen sollten nur für diese Untertypen gelten, aber es kann durchaus sein, dass sich einige Untertypen gegenseitig ausschließen und andere nicht.
Wenn Sie einige sich gegenseitig ausschließende Untertypen haben, können Sie ein Partitionierungsattribut für den Supertyp verwenden, um anzugeben, welcher der (zwei oder mehr) sich gegenseitig ausschließenden Untertypen gilt. Dieses Partitionierungsattribut kann mit Einschränkungen oder Auslösern verwendet werden, um die gegenseitige Ausschließlichkeit zu erzwingen.
Wenn Sie Untertypen haben, die sich nicht gegenseitig ausschließen, können diese ohne Verwendung eines Partitionierungsattributs vorhanden sein.
Betrachten Sie dieses Datenmodell:
Sie haben drei Supertypen, aber die Typen FREE_SOFTWARE
und schließen NON-FREE_SOFTWARE
sich gegenseitig aus, basierend auf dem SOFTWARE.free_not_free
Flag-Partitionierungsattribut. Jede gegebene Software ist möglicherweise auch eine OPERATING_SYSTEM
, unabhängig davon, ob sie kostenlos ist oder nicht.