Händler-Datenbank (SQL-Beispiel)/Selektion: Unterschied zwischen den Versionen
Kowa (Diskussion | Beiträge) |
Kowa (Diskussion | Beiträge) |
||
Zeile 34: | Zeile 34: | ||
explizit aufzählen, da sich die Anzahl und die Reihenfolge der Attribute einer Tabelle im Laufe | explizit aufzählen, da sich die Anzahl und die Reihenfolge der Attribute einer Tabelle im Laufe | ||
der Zeit ändern kann ([[Schemaevolution]]). | der Zeit ändern kann ([[Schemaevolution]]). | ||
===Selektion aller Tupel der Tabelle <code>haendler</code> ([[Händler-Datenbank (SQL-Beispiel)/Identität|Identität]])=== | |||
<source lang="sql"> | |||
SELECT h_id, h_name, h_ortschaft | |||
FROM haendler | |||
WHERE true | |||
</source> | |||
<table> | |||
<tr><td><math>\texttt{haendler}</math></td><td>→ </td><td><math>\pi_{\texttt{h_id},\,\texttt{h_name},\,\texttt{h_ortschaft}}(\texttt{haendler})</math></td></tr> | |||
<tr> | |||
<td><table class="datatable-sql"> | |||
<tr><th>h_id</th><th>h_name</th><th>h_ortschaft</th></tr> | |||
<tr><td> 1 </td><td> Maier </td><td> Königsbrunn </td></tr> | |||
<tr><td> 2 </td><td> Müller </td><td> Königsbrunn </th></tr> | |||
<tr><td> 3 </td><td> Maier </td><td> Augsburg </th></tr> | |||
<tr><td> 4 </td><td> Huber </td><td> NULL </th></tr> | |||
<tr><td> 5 </td><td> Schmidt </td><td> Hamburg </th></tr> | |||
</table></td> | |||
<td>→ </td> | |||
<td><table class="datatable-sql"> | |||
<tr><th>h_id</th><th>h_name</th><th>h_ortschaft</th></tr> | |||
<tr><td> 1 </td><td> Maier </td><td> Königsbrunn </td></tr> | |||
<tr><td> 2 </td><td> Müller </td><td> Königsbrunn </th></tr> | |||
<tr><td> 3 </td><td> Maier </td><td> Augsburg </th></tr> | |||
<tr><td> 4 </td><td> Huber </td><td> NULL </th></tr> | |||
<tr><td> 5 </td><td> Schmidt </td><td> Hamburg </th></tr> | |||
</table></td> | |||
</tr> | |||
</table> | |||
===Selektion von keinem Tupel der Tabelle <code>haendler</code>=== | |||
<source lang="sql"> | |||
SELECT h_id, h_name, h_ortschaft | |||
FROM haendler | |||
WHERE false | |||
</source> | |||
<table> | |||
<tr><td><math>\texttt{haendler}</math></td><td>→ </td><td><math>\pi_{\texttt{h_id},\,\texttt{h_name},\,\texttt{h_ortschaft}}(\texttt{haendler})</math></td></tr> | |||
<tr> | |||
<td><table class="datatable-sql"> | |||
<tr><th>h_id</th><th>h_name</th><th>h_ortschaft</th></tr> | |||
<tr><td> 1 </td><td> Maier </td><td> Königsbrunn </td></tr> | |||
<tr><td> 2 </td><td> Müller </td><td> Königsbrunn </th></tr> | |||
<tr><td> 3 </td><td> Maier </td><td> Augsburg </th></tr> | |||
<tr><td> 4 </td><td> Huber </td><td> NULL </th></tr> | |||
<tr><td> 5 </td><td> Schmidt </td><td> Hamburg </th></tr> | |||
</table></td> | |||
<td>→ </td> | |||
<td><table class="datatable-sql"> | |||
<tr><th>h_id</th><th>h_name</th><th>h_ortschaft</th></tr> | |||
</table></td> | |||
</tr> | |||
</table> | |||
{{TBD}} | {{TBD}} |
Version vom 10. Oktober 2019, 10:31 Uhr
Dieser Artikel erfüllt die GlossarWiki-Qualitätsanforderungen nur teilweise:
Korrektheit: 0 (nicht überprüft) |
Umfang: 0 (viel zu gering) |
Quellenangaben: 4 (fast vollständig vorhanden) |
Quellenarten: 5 (ausgezeichnet) |
Konformität: 5 (ausgezeichnet) |
Die nachfolgenden Beispiele können beispielsweise mit SQLite oder PostgreSQL getestet werden. Installieren Sie dazu die zugehörige Händler-Datenbank.
Die Selektionsfunktion
In jeder Relationalen Algebra gibt es unendlich viele (üblicherweise abzählbar viele) partielle Selektionsfunktionen.
Es sein $ b $ eine Funktion, die jedem Tupel der Art $ (a_1:v_1, \ldots, a_n:v_n) $ einen booleschen Wert (true
/$ \top $, false
/$ \bot $, unknown
/$ U $) zuweist. Dabei seien $ a_1, \ldots a_n $ Attributnamen und $ v_1, \ldots v_n $ Werte der zugehörigen Domänen $ D_1, \ldots D_n $.
Die Selektionsfunktion
$ σ_b: R \rightharpoonup R $
überprüft für jedes Tupel $ (a_1:v_1, \ldots, a_n:v_n) $ einer Relation $ r $, die nur Tupel dieser Art enthält,
ob die Bedingungsfunktion $ b $ für das jeweilige Tupel den Wert true
liefert:
Ist dies der Fall, so wird das entsprechende Tupel in die Ergebnisrelation eingefügt, anderenfalls wird es „entfernt“.
Für Relationen, die Tupel anderer Bauart enthalten, d. h. andere Attribute oder gleichnamige Attribute mit nicht-kompatiblen Domänen, ist die Selektionsfunktion $ σ_b $ nicht definiert.
Beispiele bezüglich der Händler-Datenbank
In SQL muss in der SELECT
-Klausel immer eine Projektionsliste angegeben werden,
auch wenn gar keine Projektion benötigt wird. Da es in den folgenden Beispielen nur um die Selektion geht
(WHERE
-Klausel), wird jeweils die Projektionsklausel SELECT *
verwendet. In produktivem Code sollte man dies vermeiden und in SELECT
-Klausel immer alle benötigten Attribute
explizit aufzählen, da sich die Anzahl und die Reihenfolge der Attribute einer Tabelle im Laufe
der Zeit ändern kann (Schemaevolution).
Selektion aller Tupel der Tabelle haendler
(Identität)
SELECT h_id, h_name, h_ortschaft
FROM haendler
WHERE true
$ \texttt{haendler} $ | → | $ \pi_{\texttt{h_id},\,\texttt{h_name},\,\texttt{h_ortschaft}}(\texttt{haendler}) $ | ||||||||||||||||||||||||||||||||||||
|
→ |
|
Selektion von keinem Tupel der Tabelle haendler
SELECT h_id, h_name, h_ortschaft
FROM haendler
WHERE false
$ \texttt{haendler} $ | → | $ \pi_{\texttt{h_id},\,\texttt{h_name},\,\texttt{h_ortschaft}}(\texttt{haendler}) $ | |||||||||||||||||||||
|
→ |
|
TO BE DONE
Quellen
- Kowarschick (MMDB-Skript): Wolfgang Kowarschick; Vorlesung Multimedia-Datenbanksysteme – Sommersemester 2018; Hochschule: Hochschule Augsburg; Adresse: Augsburg; Web-Link; 2018; Quellengüte: 4 (Skript)
- Kowarschick (MMDB): Wolfgang Kowarschick; Vorlesung „Multimedia-Datenbanksysteme“; Hochschule: Hochschule Augsburg; Adresse: Augsburg; Web-Link; 2016; Quellengüte: 3 (Vorlesung), https://kowa.hs-augsburg.de/mmdb/mmdb-beispiele/haendler-datenbank/