Tipi di dati personalizzati

Per un database i tipi di dati gestiti sono ovviamente una caratteristica di base molto importante e Postgres ha una scelta  estremamente ampia dando anche la possibilità di estenderla .

Uno dei comandi più semplici da usare per creare un proprio tipo di dato è il CREATE DOMAIN in Scuola247 è stato usato diverse volte ad esempio con:CREATE DOMAIN giorno_settimana
AS smallint

abbiamo definito “giorno_settimana” che in questa forma altro non è che un semplice sinonimo di smallint  ( numero intero a 16 bit) ma l’utilità della definizione diventa più chiara se la associamo ad una constraint del tipo:

CONSTRAINT giorno_settimana_range CHECK (VALUE >= 1 AND VALUE <= 7);

in maniera che i valori accettato dal nuovo tipo dati non sono più compresi da -2^15 (-32,768) a 2^15-1 (32,767) ma, come  suggerito dal nome, da 1 a 7 compresi.

Possiamo quindi utilizzare il nostro nuovo tipo dato nella creazione della tabella orari_settimanali:

CREATE TABLE orari_settimanali
(
orario_settimanale bigint NOT NULL DEFAULT nextval(‘pk_seq’::regclass),
classe bigint NOT NULL,
giorno_settimana giorno_settimana NOT NULL,
periodo_lezione periodo_lezione NOT NULL,
materia bigint NOT NULL
)

In maniera che la colonna giorno_settimana accetterà solo valori compresi fra 1 e 7 qualunque sia il programma e/o il metodo di input usato.

Alla prossima

Andrea

 

55 risposte a “Tipi di dati personalizzati”

    1. Non abbiamo ancora rilasciato i sorgenti, pensiamo di farlo a breve (qualche settimana).
      C’è stata una prova su Symfony ma non è stata completata adesso rimuovo la directory.
      Per il back-end la tecnologia adottata è Java+Tomcat+Lambico+CXF
      Ciao

  1. Bruits stimulation resolve place with you which binds to exercise requiring on how extended your Preparation drugs online is, how it does your regional canker, and any side effects that you may be undergoing received. free slots Bnqjai aqdntm

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *