Händler-Datenbank (SQL-Beispiel)/Identität
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
- Kowarschick (MMDB): Wolfgang Kowarschick; Vorlesung „Multimedia-Datenbanksysteme“; Hochschule: Hochschule Augsburg; Adresse: Augsburg; Web-Link; 2016; Quellengüte: 3 (Vorlesung)