Schlüssel/Wert-Paar: Unterschied zwischen den Versionen

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg
Zeile 127: Zeile 127:
indem man anstelle von Schlüssel/Wert-Paaren und Schlüssel/Schlüssel/Wert-Tripeln auch Schlüssel/Schlüssel/Schlüssel/Wert-Quadrupel etc. zulässt.
indem man anstelle von Schlüssel/Wert-Paaren und Schlüssel/Schlüssel/Wert-Tripeln auch Schlüssel/Schlüssel/Schlüssel/Wert-Quadrupel etc. zulässt.
Diese kommen in der Praxis allerdings kaum vor.
Diese kommen in der Praxis allerdings kaum vor.
Schlüssel/Wert-Paare sind so universell einsetzbar, dass sie nicht nur in Programmiersprachen zum Einsatz kommen, sondern auch in
Dateiformaten, Auszeichnungssprachen, Transferprotokollen und sicher noch vielen weiteren Stellen im IT-Bereich:
* [[Initialisierungsdatei]]en (INI-Dateien)<ref>[https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc731332(v=ws.11) Microsoft: Configure an Ini File Item]</ref>
* [[XML]]-Attribute-Lists<ref>[https://www.w3.org/TR/xmlhttp://www.w3.org/TR/2008/REC-xml-20081126/#attdecls Extensible Markup Language (XML) 1.0 (Fifth Edition), 3.3 Attribute-List Declarations]</ref>
* [[HTTP]]-Header-Attribute<ref></ref>


==Formale, verallgemeinerte Definition (Kowarschick<ref>{{Quelle|Kowarschick (MMDB)}}</ref>)==
==Formale, verallgemeinerte Definition (Kowarschick<ref>{{Quelle|Kowarschick (MMDB)}}</ref>)==

Version vom 9. August 2019, 18:03 Uhr

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

Korrektheit: 2
(teilweise überprüft)
Umfang: 2
(wichtige Fakten fehlen)
Quellenangaben: 1
(fehlen großteils)
Quellenarten: 3
(gut)
Konformität: 5
(ausgezeichnet)

Definition (Kowarschick[1])

Schlüssel-/Wert-Paare (key-value pairs) sind geordnete Paare $ (\rm{key}, \rm{value}) $ oder auch
key: value, die zur Benennung von Werten dienen. Der Schlüssel (englisch: key) dient dabei als Name des zugehörigen Wertes (englisch: value).

Dem Schlüssel kann ein Datentyp $ \rm{typ} $, d. h. eine nicht-leere Menge (oder Klasse) zugeordnet werden, der die möglichen Werte, die unter diesem Namen „gespeichert“ werden können, beschränkt. Das geordnete Paar $ (\rm{key}, \rm{typ}) $ heißt Typdefinition zum Schlüssel-/Wert-Paar $ (\rm{key}, \rm{value}) $, falls $ \rm{value} \in \rm{typ} $.

Varianten

Schlüssel/Wert-Paare kommen in der Mathematik und der Informatik unter ganz verschiedenen Bezeichungen vor:

Name Schlüssel Wert Datentyp EcmaScript/TypeScript-Beispiel
Attribut

property
Attributname
Attributbezeichner
property
name
Attributwert

property
value
Domäne
domain
property
type
Attribut: Objekt: {a: 5}
Attributname: a
Attributwert: 5
Domäne: JavaScript-Universum
Variable Variablenname Variablenwert Typ
Variable: let a: number = 5
Variablenname: a
Variablenwert: 5
Typ: number
Parameter Parameter Argument Typ
Funktion: let f =
(a: number) => {a*a}
Funktionsaufruf: f(5)
Parameter: a
Argument: 5
Typ: number
hash entry hash key hash value hash type
Map: let m = new Map(); m.set('a', 5);
hash key: a
hash value: 5
type: JavaScript-Universum

In SQL werden Tupel als Zeilen in Tabellen (das sind spezielle Relationen) gespeichert. Die Tupelattribute haben dabei zwar nur einen Wert (5 bzw. 6) aber jeweils zwei unterschiedliche Attributbezeichner: einen Namen (a bzw. b) und eine Position (Spalte 1 bzw. Spalte b2).

a b
5 6

Ein derartiges Attribut kann durch ein Schlüssel/Schlüssel/Wert-Tripel dargestellt. Prinzipiell kann man auch Attribute mit noch mehr Namen definieren, indem man anstelle von Schlüssel/Wert-Paaren und Schlüssel/Schlüssel/Wert-Tripeln auch Schlüssel/Schlüssel/Schlüssel/Wert-Quadrupel etc. zulässt. Diese kommen in der Praxis allerdings kaum vor.

Schlüssel/Wert-Paare sind so universell einsetzbar, dass sie nicht nur in Programmiersprachen zum Einsatz kommen, sondern auch in Dateiformaten, Auszeichnungssprachen, Transferprotokollen und sicher noch vielen weiteren Stellen im IT-Bereich:

  • Initialisierungsdateien (INI-Dateien)[2]
  • XML-Attribute-Lists[3]
  • HTTP-Header-AttributeReferenzfehler: Ungültige Verwendung von <ref>: Der Parameter „ref“ ohne Namen muss einen Inhalt haben.

Formale, verallgemeinerte Definition (Kowarschick[4])

Vorbemerkung
Nachfolgend werden 'Attribute definiert. Diese Definition kann eins zu eins für jede ander Art von Schlüssel-Wert-Tupeln übernommen werden, wobei natürlich die Begriffe entsprechend angepasst werden müssen.

Definition
Es seien $ a^1, \ldots, a^m $ paarweise verschiedene Werte ($ m \ge 1 $), die als Bezeichner fungieren, $ D $ eine Domäne, d. h. eine nicht-leere Menge (oder Klasse), und $ v \in D $ ein Element von $ D $.

Dann heißt das $ m+1 $-Tupel $ (a^1, \ldots, a^m, D) $ Attributdefinition mit Attributnamen $ a^1, \ldots, a^m $ und Domäne $ D $. Das Tupel $ (a^1, \ldots, a^m, v) $ heißt Attribut (zur Domäne $ D $) mit Attributnamen $ a^1, \ldots, a^m $ und Attributwert $ v $.

Anmerkung
Zur Definition von Attributen wurde der Begriff Tupel als bekannt vorausgesetzt. Andererseits benötigt man zur Definition von allgemeinenTupel den zuvor definierten allgemeinen Attributbegriff. Es liegt hier jedoch kein Circulus vitiosus (Zirkelschluss) vor, da man Attribute auch allein mit Hilfe von geordneten Paaren $ [a,b] $ definieren kann:

$ \begin{array}[t]{lcl} (a^1, \ldots, a^m, D) & := & [a^1, [a^2, \ldots [a^m, D]\ldots]] \\ (a^1, \ldots, a^m, v) & := & [a^1, [a^2, \ldots [a^m, v]\ldots]] \end{array} $

(Formal müsste diese Definition rekursiv über die Anzahl der Attributnamen erfolgen.)

Spezialfälle

Es seien $ i \in \mathbb N_0 $ eine natürliche Zahl und $ a $ eine Zeichenkette, die mit einem Buchstaben beginnt sowie evtl. endlich viele weitere Zeichen enthält (Buchstaben, Ziffern und einige ausgewählte Sonderzeichen wie +, -, _, @, $ etc.).

Dann heißen

  • $ (i, v) $ Positionsattribut
  • $ (a, v) $ benanntes Attribut
  • $ (a, i, v) $ benanntes Positionsattribut

Folgende alternative Schreibweisen können verwendet werden:

  • Positionsattribut: $ i: v $ (Formel) bzw. i: v (Pseudocode)
  • benanntes Attribut: $ a: v $ (Formel) bzw. a: v (Pseudocode)
  • benanntes Positionsattribut: $ a/i: v $ (Formel) bzw. a/i: v (Pseudocode)

Beispiele (Pseudocode)

Attributart Beispiel Domäne
Benanntes Attribut name: 'Anton' name: String
Positionsattribut 1: 'Anton' 1: String
Benanntes Positionsattribut 1/name: 'Anton' 1/name: String

Quellen

Siehe auch