Händler-Datenbank (SQL-Beispiel)/Identität: Unterschied zwischen den Versionen

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg
Kowa (Diskussion | Beiträge)
Kowa (Diskussion | Beiträge)
Zeile 25: Zeile 25:
und Performanz deutlich schlechter, als die zweite. Die gilt vor
und Performanz deutlich schlechter, als die zweite. Die gilt vor
allem, wenn zur Tabelle später weitere Attribute hinzugefügt werden.  
allem, wenn zur Tabelle später weitere Attribute hinzugefügt werden.  
(Ausnahmen: <code>COUNT(*)</code>, </code>EXISTS(SELECT * ...)</code>)
(Ausnahmen: <code>COUNT(*)</code>, <code>EXISTS(SELECT * ...)</code>)





Version vom 5. Juli 2012, 06:50 Uhr

Dieser Artikel wird derzeit von einem Autor gründlich bearbeitet. Die Inhalte sind daher evtl. noch inkonsistent.

Dieser Artikel erfüllt die GlossarWiki-Qualitätsanforderungen:

Korrektheit: 5
(vollständig überprüft)
Umfang: 4
(unwichtige Fakten fehlen)
Quellenangaben: 5
(vollständig vorhanden)
Quellenarten: 5
(ausgezeichnet)
Konformität: 5
(ausgezeichnet)

Die Identität

Die Identitätsfunktion der Realtionalen Algebra ist eine triviale Funktion: Sie bildet eine Relation (Tabelle) auf sich selbst ab:

$ id: R \rightarrow R $
$ id(r) = r $

Es gilt folgendes triviales Gesetz:

$ id(id(r)) = id(r) = r $

In SQL gibt es die Identitätsfunktion nicht. Es gibt aber mehrere Möglichkeiten den Inhalt einer gesamten Tabelle zu ermitteln:

Die erste der beiden folgenden Lösungen ist, gerade im Web-Bereich, im Hinsicht auf Sicherheit und Performanz deutlich schlechter, als die zweite. Die gilt vor allem, wenn zur Tabelle später weitere Attribute hinzugefügt werden. (Ausnahmen: COUNT(*), EXISTS(SELECT * ...))


SELECT * FROM haendler;                 
SELECT hnr, name, adresse FROM haendler;

/*

* Die folgenden Befehle sind korrekte SQL92-Befehle, jedoch keine SQL99-Befehle.
* Das Ergebnis ist ebenfalls jeweils die ganze Tabelle.
* Diese Befehle werden von PostgreSQL nicht unterstützt.
*/

-- TABLE haendler; -- SELECT * FROM TABLE haendler;

/*

* Als Tabelle dürfen auch komplexe SQL-Ausdrücke verwendet werden.
* Allerdings entfernt SQL Duplikate nicht automatisch.
* Um dies zu erzwingen, muss "SELECT DISTINCT" verwendet werden:
* 
* SELECT DISTINCT * FROM <komplexer Ausdruck>;
  • /
  /* Standard-SQL, aber PostgreSQL-Fehler */

-- SELECT DISTINCT * FROM (SELECT typ FROM ware); i

SELECT DISTINCT * FROM (SELECT typ FROM ware) AS ware_typ; SELECT * FROM (SELECT typ FROM ware) AS ware_typ; /* Duplikate */

Quellen

  1. Kowarschick (MMDB): Wolfgang Kowarschick; Vorlesung „Multimedia-Datenbanksysteme“; Hochschule: Hochschule Augsburg; Adresse: Augsburg; Web-Link; 2016; Quellengüte: 3 (Vorlesung)