Tutti gli attributi della classe Product in figura sono nativi. Il primo, name
, è anche Object title.
Creare un attributo nativo #
Fai click destro su una classe per aprire il suo Class menu
e seleziona New attribute
; scegli il tipo di attributo dalla lista in base al tipo di dato che vuoi memorizzare.
Modificare il tipo di dato #
Fai click destro su un attributo nativo per aprire il suo Attribute menu
e seleziona Change Data type
; scegli il tipo di dato che vuoi memorizzare attraverso l’attributo.
Il dominio #
Per ogni attributo nativo vi è un insieme dei valori che esso può assumere. Questo insieme è detto dominio dell’attributo e dipende dal tipo di dato: ad esempio, il dominio di un attributo integer
comprende qualunque numero intero non decimale, ma non comprende i caratteri alfabetici e i simboli.
È possibile limitare i valori che un attributo può assumere restringendone il dominio. All’interno di Livebase, ciò avviene mediante l’editor dei domini specifico per il tipo di dato dell’attributo. Non è possibile restringere il dominio di attributi di tipo boolean
o text
.
Quando il dominio di un attributo è stato modificato il suo tipo di dato appare scritto tra parentesi quadre (come price: [real]
, nell’esempio riportato in figura all’inizio della pagina).
Restringere il dominio di un attributo #
Fai click destro su un attributo per aprire il suo Attribute menu
e seleziona Edit domain
. A seconda del tipo di dato a cui l’attributo fa riferimento si aprirà un editor diverso; in ognuno di essi, è possibile verificare il corretto funzionamento della restrizione inserendo un valore di prova nella tab Test value
.
String domain editor #
Consente di impostare un numero minimo e massimo di caratteri, e di definire uno o più pattern che gli attributi devono rispettare per essere considerati validi; per utilizzare quest’ultima funzionalità è necessario spuntare l’opzione values must match any of the following patterns
e cliccare su Add
per aprire lo String pattern editor. I pattern disponibili per la verifica sono i seguenti:
- Constant: un valore unico
- Set of constants: una lista di valori accettati; la lista deve contenere un valore per ogni riga;
- Simple pattern: un pattern nel quale è possibile specificare con quali caratteri iniziano (
start with
) e finiscono (end with
) i valori accettabili; inoltre è possibile definire quali caratteri devono essere contenuti all’interno dei valori accettabili (contain
); - Regular expression: un’espressione regolare (maggiori informazioni qui).
È possibile aggiungere un numero qualsiasi di pattern accettati. La verifica avviene in OR
logico, dunque sono considerate valide tutte le stringhe che rispettano almeno uno dei pattern definiti nell’editor.
L’opzione Match case
consente di differenziare le lettere maiuscole da quelle minuscole.
File domain editor #
Consente di definire la dimensione massima del file in MB e i formati accettati (selezionabili attraverso le checkbox).
L’opzione Advanced view
raggruppa i formati per tipologia di file; selezionandone una attraverso la checkbox verranno accettati tutti i formati di quella tipologia (ad esempio, tutti i formati audio).
Domain editor per tipi di dato numerici e date #
Attributi che possiedono Integer, Real, Year, Date, Time, DateTime e Serial come tipo di dato condividono possiedono editor per la modifica del dominio molto simili. Nell’immagine sottostante viene mostrato soltanto l’Integer domain editor, ma il funzionamento è analogo per gli editor degli altri data type.
Spuntando l’opzione values must match any of the following patterns
e premendo il tasto Add
, questi editor consentono di definire uno o più intervalli nei quali devono essere compresi i valori accettabili per l’attributo selezionato.
È possibile aggiungere un numero qualsiasi di intervalli. La verifica avviene in OR
logico, dunque sono considerati validi tutti i valori compresi in almeno un intervallo.
Vincoli di integrità #
Se si vuole impedire la memorizzazione di valori nulli (ovvero non specificati) per un attributo, è necessario imporre su di esso un vincolo di integrità che renda obbligatorio definirne il valore nel momento di creazione/modifica di un oggetto di una classe. L’attributo in questione sarà impostato come required, sarà evidenziato in blu e accanto ad esso comparirà un punto esclamativo.
Imporre un vincolo d’integrità su un attributo #
Seleziona l’attributo e fai click destro per aprire l’Attribute menu
; dal menu a tendina spunta l’opzione Required
.
Vincoli di unicità (chiavi) #
E’ possibile impedire la memorizzazione di oggetti che possiedono lo stesso valore per un determinato attributo o per una combinazione di attributi. Ciò avviene imponendo un vincolo di unicità, o chiave. Quando in una classe è presente un vincolo di unicità, in basso a destra del riquadro appare l’icona (). Se è presente più di una chiave per la stessa classe, appaiono tante icone quante sono le chiavi dichiarate; cliccando su ciascuna delle icone (), viene evidenziato l’attributo (o gli attributi) su cui è specificato il relativo vincolo.
Quando una chiave è definita su un insieme di attributi la restrizione è attiva solo se i valori di tutti gli attributi che compongono la chiave coincidono tra oggetti della stessa classe. Ciò non impedisce che due oggetti possano avere lo stesso valore per alcuni degli attributi coinvolti nel vincolo.
Definire un vincolo di unicità #
Seleziona l’attributo e fai click destro per aprire l’Attribute menu
; dal menu a tendina scegli l’opzione Make unique
.
Per definire una chiave su più attributi, tieni premuto il tasto Ctrl mentre selezioni contemporaneamente gli attributi necessari; fai click destro su uno di essi e seleziona Make unique
dall’Attribute menu
. Dopo questa operazione, in fondo alla classe apparirà un’icona () a indicare che sulla classe è stato imposto un vincolo di unicità; cliccandoci, tutti gli attributi coinvolti nel vincolo vengono evidenziati.
In alternativa, fai click destro sull’header della classe e selezionare Set unique constraints...
dal Class menu
. Dal pannello che si aprirà clicca su Add
; spunta gli attributi che vuoi includere nel vincolo e clicca su OK
per farlo comparire nella lista dei vincoli.
Modificare un vincolo di unicità #
Clicca sull’icona () in basso a destra nel riquadro della classe per visualizzare a quale attributo si riferisce. Fai click destro sull’icona per aprire il menu Unique constraint
, seleziona l’opzione Edit
e seleziona dal Class unique constraint editor
gli attributi che vuoi includere nel vincolo.
Rimuovere un vincolo di unicità #
Clicca sull’icona () in basso a destra nel riquadro della classe per visualizzare a quale attributo si riferisce. Fai click destro sull’icona per aprire il menu Unique constraint
, seleziona l’opzione Delete
.