Skip to content

Anwendungen_Labeling

Florian Fehring edited this page May 7, 2024 · 1 revision

Anwendungsszenario: Labeling

Labeling ist das Kennzeichnen von Datensätzen oder einzelnen Werten mit vordefinierten Labeln. Sie dienen häufig der Bildung von Datensatz-Gruppen.

Einrichtung: Datenbank

Für ein Labeling müssen die folgenden Tabellen eingerichtet werden:

  • Tabelle zur Verwaltung der verfügbaren Labels
  • Eine Tabelle für jede Tabelle, in der Datensätze mit einem Label versehen werden sollen

Tabelle für Labels

Die Tabelle für die Labels besitzt eine id und den Namen des Labels.

CREATE TABLE smartmonitoring.label_labels (
	id bigserial NOT NULL,
	name varchar NOT NULL,
        CONSTRAINT label_labels_pk PRIMARY KEY (id),
        CONSTRAINT label_labels_un UNIQUE ("name")
);

Erläuterungen:

  • name ist unique, um Verwechslungen bei der Nutzung des Labels zu vermeiden

Tabelle für Datensatz-Labeling

CREATE TABLE smartmonitoring.label_observedobject (
	id bigserial NOT NULL,
	label_id bigint NOT NULL,
	set_id bigint NOT NULL,
	CONSTRAINT label_observedobject_pk PRIMARY KEY (id),
	CONSTRAINT label_oo_label_fk FOREIGN KEY (label_id) REFERENCES smartmonitoring.label_labels(id) ON DELETE CASCADE ON UPDATE CASCADE,
	CONSTRAINT label_oo_fk FOREIGN KEY (set_id) REFERENCES smartmonitoring.tbl_observedobject(id) ON DELETE CASCADE ON UPDATE CASCADE
);

Erläuterungen:

  • label_id und set_id verbinden ein Label mit einem Datensatz, da beide Werte mehrfach vorkommen dürfen, handelt es sich um eine n:n Beziehung
  • label_oo_label_fk DELETE CASCADE und UPDATE CASCADE sorgt dafür, dass alle Datensatz-Label gelöscht werden, wenn das entsprechende Label gelöscht wird und die id des labels aktualisiert wird, falls diese in der label_label geändert werden sollte
  • label_oo_fk DELETE CASCADE und UPDATE CASCADE sorgt dafür, dass alle Datensatz-Label gelöscht werden, wenn der zugehörige Datensatz aus tbl_observedobject gelöscht wird und dass die id des set_id aktualisiert wird, falls die id des Datensatzes in tbl_observedobject geändert wird

Einrichtung: SmartData

Es ist keine besondere Einrichtung im SmartData notwendig. Die label_labels und label_observedobject Tabellen sind direkt zugreifbar.

Nutzung: SmartData

Label anlegen

POST http://localhost:8080/SmartDataTest/smartdata/records/label_labels?storage=smartmonitoring

{
    "name": "Testlabel"
}

Datensatz labeln

POST http://localhost:8080/SmartDataTest/smartdata/records/label_observedobject?storage=smartmonitoring

{
    "label_id": 2,
    "set_id": 1
}

Nutzung: SWAC

Label anzeigen

<div id="labels_head" swa="Present FROM label_observedobject WHERE filter=set_id,eq,{{id}}">
  <span class="swac_repeatForSet">
     <span id="label_{id}" swa="Present FROM label_labels WHERE filter=id,eq,{label_id}">
       <span class="uk-label">{name}</span>
     </span>
  </span>
</div>

Erläuterungen:

  • Die {{id}} wird per URL als Parameter z.B. ?id=10 übergeben
  • Es handelt sich um zwei geschachtelte Komponenten, die Äußere ruft die Verbindung ab, die innere den Namen des Labels