# IDEF1X

IDEF1X ist eine Modellierungssprache im Computer-aided-Manufacturing-Standard und gehört zur Gruppe der IDEF-Sprachen. Die 1 steht für die Modellierung von Informationsstrukturen, mit X wird die Erweiterung (engl. Extension) gegenüber dem ursprünglichen Standard gekennzeichnet.
IDEF1X ist eine Datenmodellierungstechnik und fokussiert sich daher auf das Entity-Relationship-Modell (ERM).

## Geschichte

Im Rahmen des ICAM-Programms der US Air Force wurde IDEF1 1981 veröffentlicht. Mit den zur gleichen Zeit rasant fortschreitenden Entwicklungen auf dem Gebiet der relationalen Datenbanken musste der Standard relativ schnell erheblich erweitert werden. Diese Erweiterung wurde unter dem Namen IDEF1X erstmals 1985 publiziert. 1994 wurde IDEF1X als U.S.-Behördenstandard übernommen (FIPS 184).

## Bedeutung

Wegen der frühen Offenlegung und der gewollten Unabhängigkeit der Modellierungssprache von Herstellern von Datenbank-Software haben viele CASE-Tool-Hersteller die Notation unterstützt. Die Forderung von U.S.-Militär und Behörden machte IDEF1X schließlich zu einem De-facto-Standard (neben anderen).

## Umfang

Zu IDEF1X gehört im ursprünglich veröffentlichten Kontext die Datenmodellierung als Methode der Softwareentwicklung mit hinzu. So werden Datenmodellierungskonzepte und Modellierungsrichtlinien mit aufgeführt.
Da diese Themen mittlerweile in der allgemeinen Informatik aufgegangen sind, stehen Syntax und Semantik der Notation bei der Betrachtung von IDEF1X heute im Vordergrund.

## Notation

Der Standard legt Notationen für das ER-Diagramm und den zusätzlichen Angaben in der ERM-Dokumentation fest. Im Diagramm gelten zusammengefasst die folgenden Konventionen:

### Entity Syntax

Entities werden als abgerundetes Rechteck dargestellt, wenn sie von einer Beziehung existenzabhängig sind, sonst in einem normalen Rechteck.
Der Name (oder eine Nummer) wird darüber gestellt.

### Attribute

Die Namen der Attribute werden in das Entity-Rechteck geschrieben. Attribute, die zum Primärschlüssel gehören stehen über, alle anderen unter einem Trennungsstrich.
Zusätzlich zu den Namen werden weitere Kennzeichnungen aufgenommen, z. B. "(O)" für optional.

### Beziehungen

Beziehungen kennen (wie z. B. auch in UML) eine Richtung, Sprechweise: Sie gehen vom Eltern-Entity zum Kind-Entity. Das Kind-Ende der Beziehung ist mit einem kleinen schwarzen Kreis gekennzeichnet. Zusätzlich wird durch Linienart, -ende und Kommentierung die Kardinalität der Beziehung dargestellt.
Neben dem Kreis am Kind-Ende der Beziehungslinie steht die Kardinalität der Kind-Entities:
| nichts | Null, Eins oder beliebig viele |
| P | Eins bis beliebig viele |
| Z | Null oder Eins |
| n | Genau n |
| n-m | zwischen n und m |
| (i) | Verweis auf Notiz i |
Die Kardinalität der Eltern-Seite der Beziehung kann nur als Kann oder Muss definiert werden. Eine optionale Beziehung wird am Linienende der Elternseite mit einer Raute versehen, eine zwingende Beziehung hat ein normales Linienende. Dies bedeutet, dass in IDEF1X keine n:m Beziehungen erlaubt sind, die es unter anderem in der Chen-Notation gibt. Eine n:m-Beziehung muss bei der Modellierung in zwei 1:n-Beziehungen aufgebrochen werden. Eine weitere Besonderheit gegenüber anderen Notationen ist die explizite Darstellung von Fremdschlüssel-Attributen, obwohl diese aus Modellierungssicht redundant sind.

### Identifizierende Beziehungen

Eine identifizierende Beziehung ist eine Eltern-Kind Beziehung, in der das Kind-Entity existenzabhängig vom Eltern-Entity ist und den Primärschlüssel des Eltern-Entities im eigenen Primärschlüssel mit aufnimmt. Diese Beziehungsart wird mit zwei Darstellungserweiterungen modelliert:
* Die Beziehungslinie ist durchgezogen (eine nicht identifizierende Beziehung ist gestrichelt).
* Das Kind-Entity wird in einem abgerundeten Rechteck dargestellt, siehe oben.

### Sub- und Supertypen

Das Konzept der Vererbung, bei der Datenmodellierung als Sub- und Supertyp bezeichnet, wird in IDEF1X über Kategorisierung dargestellt.
Die Kategorisierung ist eine Menge spezieller Beziehungen vom Supertyp zu seinen Subtypen, die mit einem Diskriminator versehen werden. Eine durchgezogene Linie geht vom Supertyp zum Diskriminator, einem Kreis mit einer waagerechten einfachen oder Doppellinie darunter. Von der Diskriminatorlinie aus geht jeweils eine durchgezogene Linie zu jedem Subtyp. Die Doppellinie des Diskriminators steht für die Vollständigkeit der aufgeführten Subtypen, in IDEF1X auch Kategorien genannt.