Händler-Datenbank (SQL-Beispiel)/Projektion

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg

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: 4
(großteils überprüft)
Umfang: 4
(unwichtige Fakten fehlen)
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 Projektionsfunktion

Fehler beim Erstellen des Vorschaubildes:
Eine Projektionsfunktion berechnet für jedes Tupel einer Tabelle ein neues Tupel; Duplikatzeilen werden üblicherweise entfernt

Eine Projektionsfunktion einer Relationalen Algebra

$ π_{f_1 \,\text{as}\, b_1, \ldots, f_k \,\text{as}\, b_k}: R \rightarrow R $

berechnet für jedes Tupel einer Relation ein neues Tupel: $f_i$ ist dabei eine Funktion, die für jedes Tupel $(v_1:a_1, \ldots, v_n:a_n) \in r$ jeweils einen Wert $f_i((v_1:a_1, \ldots, v_n:a_n))$ berechnet, der in das Ergebnistupel unter dem Namen $b_i$ eingefügt wird.

Man beachte: Dabei entstehende Duplikate müssen ebenfalls entfernt werden (sofern die relationale Algebra nicht multimengenbasiert, sondern mengenbasiert ist).

Beispiele bezüglich der Händler-Datenbank

(Diese Beispiele wurden mit PostgreSQL und SQLite getestet.)

Selektion aller Attribute der Tabelle haendler (Identität):

SELECT h_id, h_name, h_adresse
FROM   haendler
h_id h_name h_adresse
1 Maier Königsbrunn
2 Müller Königsbrunn
3 Maier Augsburg
4 Huber NULL
5 Schmidt Hamburg


Änderung der Position der Attribute:

SELECT h_name, h_adresse, h_id
FROM   haendler
h_name h_adresse h_id
Maier Königsbrunn 1
Müller Königsbrunn 2
Maier Augsburg 3
Huber NULL 4
Schmidt Hamburg 5


Entfernen einer Spalte:

SELECT h_name, h_adresse
FROM   haendler
h_name h_adresse
Maier Königsbrunn
Müller Königsbrunn
Maier Augsburg
Huber NULL
Schmidt Hamburg

Das Ergebnis enthält keine Duplikate, da die Attribute (h_name, h_adresse) gemäß Datenmodell einen Schlüsselkandidat (key candidate, unique key) bilden.
Entfernen zweier Spalten:

SELECT h_name
FROM   haendler

oder auch

SELECT ALL h_name
FROM       haendler
h_name
Maier
Müller
Maier
Huber
Schmidt

Das Ergebnis enthält den namen Maier doppelt, da es zwei Händler mit dem gleichen Namen gibt.
Mit Hilfe des DISTINCT-Operators können Duplikate entfernt werden:

SELECT DISTINCT h_name
FROM            haendler
h_name
Huber
Maier
Müller
Schmidt

Beachten Sie bitte, dass sich die Reihenfolge geändert hat. SQL garantiert keine bestimmte Reihenfolge der Daten. Diese kann sich auch jederzeit ändern (z. B. nach einer einfachen Schemaevolution , bei der beispielsweise VARCHAR (30) durch VARCHAR (50) ersetzt wurde. Sollten die Daten in einer bestimmte Reihenfolge benötigt werden, müssen sie immer sortiert werden:

SELECT DISTINCT h_name
FROM            haendler
ORDER BY        h_name  DESC
h_name
Schmidt
Müller
Maier
Huber

Quellen

  1. Kowarschick (MMDB-Skript): Wolfgang Kowarschick; Vorlesung Multimedia-Datenbanksysteme – Sommersemester 2018; Hochschule: Hochschule Augsburg; Adresse: Augsburg; Web-Link; 2018; Quellengüte: 4 (Skript)
  2. 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/

Siehe auch