-
Notifications
You must be signed in to change notification settings - Fork 0
Anwendungen_Labeling
Florian Fehring edited this page May 7, 2024
·
1 revision
Labeling ist das Kennzeichnen von Datensätzen oder einzelnen Werten mit vordefinierten Labeln. Sie dienen häufig der Bildung von Datensatz-Gruppen.
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
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
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
Es ist keine besondere Einrichtung im SmartData notwendig. Die label_labels und label_observedobject Tabellen sind direkt zugreifbar.
POST http://localhost:8080/SmartDataTest/smartdata/records/label_labels?storage=smartmonitoring
{
"name": "Testlabel"
}
POST http://localhost:8080/SmartDataTest/smartdata/records/label_observedobject?storage=smartmonitoring
{
"label_id": 2,
"set_id": 1
}
<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