# Entität (Informatik)

Als Entität (auch Informationsobjekt genannt, englisch entity) wird in der Datenmodellierung ein eindeutig zu bestimmendes Objekt bezeichnet, über das Informationen gespeichert oder verarbeitet werden sollen. Das Objekt kann materiell oder immateriell, konkret oder abstrakt sein. Beispiele: Ein Fahrzeug, ein Konto, eine Person, ein Zustand.

## Entität, Entitätstyp

Entitäten sind individuell identifizierbare Gegenstände/Personen usw. Diesen lassen sich – in einem gegebenen Betrachtungsbereich – individuell Eigenschaften (wie z. B. Farbe = rot, Geburtsdatum = 28. August 1749, Höhe = 2962 Meter, Temperatur = −4,5 Grad) zuordnen. Durch Typisierung (Erkennen gleicher Attribute/Merkmale von Entitäten) können Entitätstypen (gelegentlich Entitätsklasse genannt) abgeleitet werden; aus mehreren Personen werden z. B. KUNDEN. Die einzelnen Kunden gelten als Entitäten, also konkrete Ausprägungen (Instanzen) und haben eine Identität.
Die Menge der Entitäten eines Entitätstyps wird Entitätsmenge genannt – die (je nach Auswahl) alle, nur bestimmte oder keine Entitäten umfassen kann. Entitäten als Elemente einer Entitätsmenge werden durch ihre Eigenschaften (Werte von Attributen) unterschieden. Jede Entität eines Entitätstyps wird von den anderen Entitäten desselben Entitätstyps durch einen eindeutigen Wert eines identifizierenden Attributs oder einer Attributkombination (z. B. die Fahrgestellnummer für ein einzelnes Auto oder das Kraftfahrzeugkennzeichen für eine einzelne Zulassung) unterschieden. Dieses Attribut oder diese Attributkombination wird Identifikation, Identifikator oder kurz ID genannt.
Eine Entität kann mit anderen Entitäten wie auch mit sich selbst in einer Beziehung (englisch relationship) stehen. Beispiel: Person X <ist Eigentümer von> Fahrzeug Y, Person A <ist Vorgesetzter von> Person B; <...> = Bedeutung/Name der Beziehung.
Die Typisierung von Entitäten und der zwischen Entitäten möglichen Beziehungen (zu Beziehungstypen) geschieht durch Abstraktion. Diese Unterscheidung von Instanzen und Typen ist notwendig, um zu einem Datenmodell zu gelangen. Darin werden die Entitäten zu Entitätstypen und ihre Beziehungen zu Beziehungstypen, die in einem Entity-Relationship-Diagramm grafisch dargestellt werden. Im Sprachgebrauch wird statt der korrekten Bezeichnung „Entitätstyp“ gelegentlich das kürzere Wort „Entität“ verwendet, wobei aus dem Zusammenhang meist hervorgeht, ob eine Objektinstanz (Entität) oder deren Typisierung (Entitätstyp) gemeint ist.
Für die Erstellung beispielsweise einer relationalen Datenbank wird, ausgehend vom Datenmodell, ein Entitätstyp als eine Tabelle der Datenbank umgesetzt. Jede Tabellenzeile dieser Tabelle (auch Datensatz oder Tupel genannt) wird eine Entität repräsentieren, der Identifikator wird zum Primärschlüssel, Beziehungen werden zum Fremdschlüssel.

## Generalisierung/Spezialisierung

Treten in verschiedenen Entitätstypen Attribute und/oder Beziehungstypen auf, die für dieselbe Entität identisch sind, so können diese unter einem neuen Entitätstyp geführt und zusammengefasst werden, was als Generalisierung bezeichnet wird. Der dabei entstehende Entitätstyp nimmt die gemeinsamen Attribute auf. Die ursprünglichen Entitätstypen bleiben bestehen; sie „erben“ die Attribute des neuen Entitätstyps. So können z. B. die Entitätstypen Kunde und Lieferant zusätzlich zu dem generalisierten Entitätstyp Geschäftspartner zusammengeführt werden, wobei z. B. Name, Anschrift, Bankverbindung etc. sowohl für Kunden als auch für Lieferanten verwendet werden. Die Umkehrung (Erkennen, dass Attribute eines Entitätstyps nur in bestimmten Situationen/Rollen auftreten) kann ebenfalls zu einem neuen Entitätstyp führen (z. B. Privatkunde) und wird als Spezialisierung bezeichnet.
Die Generalisierung, Spezialisierung und die Vererbung der Attribute entsprechen dem Grundgedanken der Objektorientierten Programmierung.

## Beispiele

Entitätstypen sind:
* Artikel mit (beispielsweise) identifizierendem Attribut EAN
* Buch mit identifizierendem Attribut ISBN und beschreibendem Attribut Lagermenge (im Falle eines Verlags mit vielen (aus Sicht des Verlages identischen) Kopien)
* Buch mit identifizierendem Attribut ISBN plus Exemplarnummer (im Falle einer Bibliothek)
* Konto mit identifizierendem Attribut Kontonummer
* Kunde mit identifizierendem Attribut Kundennummer

## Gegenüberstellung von Grundbegriffen

| Tabelle | Relationale Datenbank | Entity-Relationship-Modell (ERM) | Unified Modeling Language (UML) |
| Wertebereich (Domäne, Domain) | Wertebereich (Domäne, Domain) | Wertebereich (Domäne, Domain) | Wertebereich (Domäne, Domain) |
| Kopfzeile | Relationstyp/Relationsformat/Relationenschema | Entitätstyp | Klasse |
| Spaltenüberschrift | Attribut | Attribut | Attribut |
| Inhalt | Relation | Entitätsmenge | Objektmenge, Instanzmenge |
| --/-- | Fremdschlüsselbeziehung | Beziehung (Relationship) | Assoziation |
| Zeile | Tupel | Entität | Objekt, Instanz |
| Zelle | Attributwert | Attributwert | Attributwert |

## Unterschied Entität/Objekt

Der Begriff der Entität ist mit dem Begriff des Objekts in der Objektorientierten Programmierung verwandt. Den Begriffen kommt jedoch in ihrer jeweiligen Begriffswelt, der Datenmodellierung und der Objektorientierten Programmierung (OOP), unterschiedliche Bedeutung zu. Sie entsprechen einander im Wesentlichen, sind aber weder identisch noch synonym:
* So ist eine Entität lediglich ein auf Daten bezogenes Konstrukt, das für die im jeweiligen Entitätstyp festgelegten Attribute und Beziehungen die konkreten Wertausprägungen aufnimmt/bereitstellt, z. B. „15.3.1994“ als „Geburtsdatum“ eines bestimmten Kunden. Vereinfacht gesehen entspricht somit eine Entität final einem Datensatz – wobei ‚Entitäten‘ nicht nur zum Zweck der Softwareentwicklung entstehen, sondern z. B. ‚lediglich‘ die Begriffswelt eines Unternehmens beschreiben können.
* Dagegen kennt ein OO-Objekt zusätzlich eine Reihe ihm eigener dynamischer Funktionen, Operationen und Methoden. Das heißt: Dynamischer Objekttyp = programmtechnische Repräsentation des Entitätstyps plus zugehörige Bearbeitungsfunktionen. Weiterhin beziehen sich die Methoden der OOP oft nicht nur auf Entitätstypen aus einem Datenmodell, sondern beispielsweise auch auf Objekte von Benutzerschnittstellen (GUI) sowie in Anwendungen zur Textverarbeitung oder Computerspielen auf dort auftretende ‚Objekte‘.
Beiden Begriffen (Entität und Objekt) ist gemeinsam: Sie werden – meist im Rahmen von Softwareentwicklungsprozessen – identifiziert, strukturiert, zu Entitäts-/Objekttypen abgeleitet und dokumentiert; die Festlegungen werden in den Computerprogrammen technisch durch Deklarationen und auf die Daten bezogene Verarbeitungsbefehle implementiert, und existieren letztlich als Inhalte von Datenbeständen. Die methodisch detailliertere OOP-Modellierung setzt dabei nicht selten auf einer klassischen Datenmodellierung mit ihren Entitäten, Attributen und Beziehungen auf.