# Local-as-View

Local-as-View (LaV, Lokal-als-Sicht) ist ein Fachbegriff aus der Informatik, der sich auf die Art der Verarbeitung von Daten bezieht.
Local-as-View bezeichnet ein Muster zur Zusammenführung von Schemata im Rahmen der Informationsintegration. Kernidee ist, dass einzelne Relationen von lokalen Schemata der Datenquellen als Sichten auf das gemeinsame globale Schema ausgedrückt werden. Im Gegensatz zum umgekehrten Ansatz Global-as-View, der von den lokalen Schemata ausgeht, bleibt bei Local-as-View das globale Schema beim Ändern, Hinzufügen und Entfernen von Quellen konstant. Es wird daher vor allem bei Mediator-basierten Informationssystemen angewandt.
Sowohl Assoziationen über mehrere Relationen des globalen Schemas als auch Nebenbedingungen der Quellen können modelliert werden. Dies gilt jedoch nicht für Assoziationen über Relationen verschiedener Quellen sowie Nebenbedingungen des globalen Schemas.
Mit Global-Local-as-View oder Both-as-View existiert eine Methode, die Eigenschaften von Global-as-View und Local-as-View kombiniert, indem zwischen globalem und lokalem Schema Sichten auf Sichten abgebildet werden.

## Beispiele

Gegeben sind drei lokale Datenquellen mit folgenden Schemata:
* Q1: Ausweisnummer, Name, Ort
* Q2: Name, Ausweisnummer, Alter
* Q3: Ausweisnummer, Alter, Beruf
Diese sollen auf das folgende globale Schema abgebildet werden
* Person: Ausweisnummer, Name, Alter
Die Sichten der Quellen auf das globale Schema sind (in SQL)
* CREATE VIEW S1 AS SELECT Ausweisnummer, Name, NULL FROM Person
* CREATE VIEW S2 AS SELECT Name, Ausweisnummer, Alter FROM Person
* CREATE VIEW S3 AS SELECT Ausweisnummer, Alter, NULL FROM Person
Auch Assoziationen über mehrere Relationen des globalen Schemas können modelliert werden. Sei im globalen Schema eine weitere Relation enthalten, die Ausweisnummern und Orte einander zuordnet:
* Adresse: Ausweisnummer, Ort
Dann lässt sich die Quelle Q1 darstellen als
* CREATE VIEW S1 AS SELECT Person.Ausweisnummer, Person.Name, Adresse.Ort FROM Person, Adresse WHERE Person.Ausweisnummer = Adresse.Ausweisnummer
Nebenbedingungen von Quellen werden direkt übernommen. Falls beispielsweise die Quelle Q2 nur Personen ab 18 Jahren enthält, ist die Sicht
* CREATE VIEW S2 AS SELECT Ausweisnummer, Name, Alter FROM Person WHERE Alter >= 18

## Anfragebearbeitung

Die Bearbeitung von Anfragen an das globale Schema ist bei Local-as-View wesentlich komplexer als bei Global-as-View. Die einzelnen Sichten müssen geschickt so kombiniert werden, dass ihr Ergebnis einen Teil der Anfrage oder die gesamte Anfrage beantwortet. Das Gesamtergebnis ergibt sich aus einer Vereinigung der verschiedenen Teilantworten.
Da sich die Teilanfragen häufig überlappen oder auch nicht benötigte Daten liefern, besteht viel Potential für Optimierung. Eine offensichtlich triviale Form der Anfragebearbeitung bestände darin, die gesamten Quellen auszulesen. Eine Anfrage kann beispielsweise so optimiert werden, dass möglichst wenig Daten aus den Quellen übertragen werden müssen, dass sie möglichst schnell beantwortet werden kann oder dass die Quellen möglichst gleichmäßig angesprochen werden.
Effiziente Algorithmen zur Zusammenstellung von Quellen sind:
* Bucket-Algorithmus
* Inverse-Rules-Algorithmus
* MiniCon-Algorithmus

### Beispiel

Im oben aufgeführten Beispiel sei eine Anfrage auf das globale Schema mit den Relationen Person und Adresse gegeben:
    SELECT Person.Alter, Adresse.Ort FROM Person, Adresse WHERE Person.Ausweisnummer=Adresse.Ausweisnummer
Zur Beantwortung wird die Anfrage so umgeschrieben, dass sie über die Sichten gestellt ist (genaueres zur Anfrageumschreibung siehe unter Bucket-Algorithmus):
Die so umformulierte Anfrage kann nun über den Quellen ausgeführt werden, die den Sichten entsprechenden.