# Schema (Informatik)

Ein Schema, Datenschema oder Relationsschema (Plural Schemata oder Schemas, auch Schemen) ist in der Informatik eine formale Beschreibung der Struktur von Daten. Besondere Bedeutungen haben Schemata im Zusammenhang mit Datenbanken. Ein Datenbankschema umfasst alle Objekte, die ein privilegierter Datenbanknutzer (Schema-Eigentümer) kreiert hat. Zu diesen Objekten zählen Tabellen, Ansichten (Views), Synonyme, Sequenzen usw. und können von anderen Datenbanknutzern verwendet werden, sofern der Schema-Eigentümer die Privilegien entsprechend vergeben hat.
Üblicherweise ist das Schema selbst in einer formalen Sprache definiert, so dass sich Daten automatisch darauf überprüfen lassen, ob sie dem Schema entsprechen. Ein bekanntes Beispiel für eine solche Beschreibungssprache ist XML-Schema für XML.

## Aspekte

Schemata können hinsichtlich ihrer Komplexität von einfachen Attributlisten bis zu komplexen Ontologien reichen. Grundsätzlich enthalten Schemata Definitionen von Relationen als Tupel von Attributen, denen in vielen Fällen Datentypen zugewiesen sein können. Je nach Art des Schemas sind zusätzlich Beziehungen und Bedingungen zwischen verschiedenen Relationen und zusätzliche Regeln möglich. Datentypen (beispielsweise Zahlen, Zeichenketten, Datumsformate …) sind als Bestandteil eines Schemas selbst durch Regeln beschrieben, die jedoch meist als gegeben vorausgesetzt werden. Im Rahmen der Objektorientierten Modellierung werden komplexe Datentypen aus einfachen Datentypen zusammengesetzt, wobei man statt von Datentypen auch von Objekten spricht.

## Schemata in Datenbanken

Eine wichtige Rolle spielen Schemata im Zusammenhang mit Datenbanken. Hier spricht man oft auch vom Datenbankschema. Das Schema legt dabei fest, welche Daten in einer Datenbank in welcher Form gespeichert werden können und welche Beziehungen zwischen den Daten bestehen. Speziell bei Relationalen Datenbanken ist Schema ein SQL-Objekt, in dem die Tabellen und deren Attribute sowie zur Sicherstellung der Konsistenz die Integritätsbedingungen festgelegt werden. Hierzu gehören insbesondere die Festlegung von Wertebereichen einzelner Attribute und von Fremdschlüsselbeziehungen sowie Existenz- und Eindeutigkeitsbedingungen. Datenbanksysteme speichern die Schemata der verwaltenden Datenbanken in einem besonderen Bereich, dem Data-Dictionary, ab.
Die ANSI-SPARC-Architektur, auch Drei-Ebenen-Architektur genannt, beschreibt den grundlegenden Aufbau eines relationalen Datenbanksystems, wobei drei Schemata verwendet werden:
* Die externen Schemata, die formal beschreiben, wie sich die Datenbank den Benutzer(gruppe)n und Anwendungen darstellt (individuelle anwendungsorientierte Sicht).
* Das konzeptionelle oder konzeptuelle Schema, in dem auf Basis des semantischen Datenmodells die Sachlogik formal beschrieben wird (fachliche Sicht).
* Das interne Schema, das formal darstellt, wie und wo die Daten in der Datenbank gespeichert werden (technische Sicht).

## Beispiele
### Schema für XML-Daten in Form einer Dokumenttypdefinition (DTD)

Diese Dokumenttypdefinition (nicht zu verwechseln mit XML Schema) beschreibt, dass PERSON-Elemente aus genau einem Vornamen, genau einem Nachnamen und mindestens einer Adresse bestehen. Adresse besteht aus Straße und Ort; Vorname, Nachname, Straße und Ort bestehen aus #PCDATA, d. h. parsed character data, also einfachem Text, der nicht weiter gegliedert ist.

### Schemata für Daten im Semantischen Web

Ein Beispiel für eine Ontologie findet sich unter Web Ontology Language.

## Entwurf

Der Entwurf von Schemata (Datenmodellierung) hängt stark von der Herangehensweise ab. Grundsätzlich lassen sich unter anderem das Entity-Relationship-Modell und die Objektorientierte Modellierung unterscheiden.

## Schematische Heterogenität

Um Daten, denen unterschiedliche Schemata zugrunde liegen, zu konvertieren oder zusammenzuführen, ist auch eine Transformation und Integration ihrer Schemata notwendig. Dies ist in der Praxis vor allem bei der Datenmigration und Informationsintegration notwendig.
Die Heterogenität kann sowohl die Struktur als auch die Semantik betreffen, wobei sich strukturelle Unterschiede wesentlich leichter überbrücken lassen. Der Übergang von strukturellen zu semantischen Unterschieden ist jedoch nicht immer eindeutig.
Typische strukturelle Unterschiede betreffen die Reihenfolge von Attributen, Namenskonflikte, das sind unterschiedliche Namen für gleiche Attribute (Synonyme) oder gleiche Namen für unterschiedliche Attribute (Homonyme), flache Strukturen (SQL) im Gegensatz zu hierarchischen Strukturen (XML), der Grad der Normalisierung und unterschiedliche Datenformate mit gleicher Ausdruckskraft.
Semantische Heterogenität besteht, wenn die einzelnen Konzepte der unterschiedlichen Schemata nicht übereinstimmen. Stattdessen liegt eine Inklusion oder Überlappung vor, die bis zu einem gewissen Grad hingenommen werden muss.
Eine zwischen struktureller und schematischer anzusiedelnde Heterogenität sind im Detail voneinander abweichende Datentypen (Maßeinheiten, Genauigkeiten etc.).