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 12: Zeile 12:
Sie bildet eine Relation (Tabelle) auf sich selbst ab:
Sie bildet eine Relation (Tabelle) auf sich selbst ab:


<table border = "0">
<math>id: R \rightarrow R</math><br />
  <tr><td><math>id: R \rightarrow R</math></td></tr>
<math>id(r) = r</math>
  <tr><td><math>id(r) = r</math></td></tr>
</table>


/*
Es gilt folgendes triviales Gesetz:
* Ermittle den Inhalt der gesamten Tabelle.
*
* Die erste Lösung ist, gerade im Web-Bereich, im Hinsicht auf Sicherheit
* und Performanz deutlich schlechter, als die zweite Lösung. Die gilt vor
* allem, wenn zur Tabelle später weitere Attribute hinzugefügt werden.
* Ausnahmen: COUNT(*), EXISTS(SELECT * ...)
*
*/


<math>id(id(r)) = id(r) = r</math>
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: <code>COUNT(*)</code>, </code>EXISTS(SELECT * ...)</code>)
<source lang="sql">
SELECT * FROM haendler;                 
SELECT * FROM haendler;                 
SELECT hnr, name, adresse FROM haendler;
SELECT hnr, name, adresse FROM haendler;
</source>


/*
/*

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)