Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*INIZIO DELLE DEFINIZIONI DELLE TABELLE*/
- --Descrive un Class Diagram
- CREATE TABLE ClassDiagram(
- codCD int, --chiave tecnica atta a identificare univocamente un class diagram
- descrizione VARCHAR2 DEFAULT 'Nessuna descrizione', --eventuale descrizione testuale di un class diagram
- dataCreazione TIMESTAMP DEFAULT SYSTIMESTAMP, --rappresenta l'istante di creazione del class diagram
- nome VARCHAR2 DEFAULT 'Nuovo progetto', --rappresenta il nome del class diagram
- --chiave primaria
- PRIMARY KEY(codCD)
- );
- /
- --Descrive una relazione tra classi
- CREATE TABLE Associazione(
- codA int, --chiave tecnica atta a identificare univocamente una relazione
- nome VARCHAR2, --rappresenta il nome di una relazione
- grado int DEFAULT 2 NOT NULL, --indica il numero di entità coinvolte
- codCD VARCHAR2 NOT NULL,
- discriminante VARCHAR2, --indica se l'associazione è una e una sola (XOR) tra composizione e aggregazione
- --chiave primaria
- primary key(codA),
- --il grado deve essere un numero naturale strettamente positivo
- CONSTRAINT dominio_grado CHECK (grado>0),
- --l'attributo discriminante specifica esclusivamente se si tratta di una composizione o una aggregazione
- CONSTRAINT dominio_discriminante CHECK (discriminante IN('Associazione', 'Composizione', 'Aggregazione')),
- --implementa il vincolo che un class diagram è composto da associazioni e alla sua cancellazione, sono cancellate tutte le associazioni ad esso relative
- CONSTRAINT vincolo_composizione_associazione_cd FOREIGN KEY (codCD)
- REFERENCES ClassDiagram (codcd) ON DELETE CASCADE
- );
- /
- --Descriva una persona
- CREATE TABLE Persona(
- CF CHAR(16), --codice fiscale
- nome VARCHAR2, --nome di una persona
- cognome VARCHAR2, --cognome di una persona
- età int, --età di una persona
- nazione VARCHAR2, --nazione di una persona
- sesso chaar(1), --sesso di una persona
- email VARCHAR2, --email di una persona
- -chiave primaria
- PRIMARY KEY(CF),
- --imposta un dominio sull'età
- CONSTRAINT dominio_età CHECK (età > 0 AND età < 120),
- --il sesso deve essere esclusivamente maschio (M) o femmina (F)
- CONSTRAINT dominio_sesso CHECK (sesso = 'M' OR sesso = 'F'),
- --la mail è unicamente associata
- CONSTRAINT email_unica UNIQUE (email)
- --le email hanno una forma ben precisa
- CONSTRAINT forma_email CHECK (email LIKE '_%@_%.__%'),
- --un CF valido deve necessariamente avere 16 caratteri
- CONSTRAINT lunghezza_CF CHECK (LENGTH(TRIM(cf)) = 16)
- );
- /
- --Rappresenta un gruppo di persone che disegnano dei class diagram
- CREATE TABLE Disegnare(
- CF CHAR(11),
- codCD int,
- --chiave esterna verso Persona
- FOREIGN KEY (CF) references Persona (CF),
- --chiave esterna verso class diagram
- FOREIGN KEY (codCD) references ClassDiagram (codCD)
- );
- /
- --Rappresenta una classe
- CREATE TABLE Classe(
- codClasse int, --chiave tecnica atta a identificare univocamente una classe
- nome VARCHAR2 NOT NULL, --specifica il nome (necessario) di una classe
- descrizione VARCHAR2 DEFAULT 'Nessuna descrizione inserita', --specifica un'eventuale descrizione
- visibilità VARCHAR2 DEFAULT 'Package' NOT NULL, --specifica una ed una sola delle quattro visibilità possibili
- codCD int NOT NULL,
- codClasseGenerale int, --allude ad una eventuale classe padre
- isAbstract CHAR(1), --verifica se la classe è astratta
- --chiave primaria
- PRIMARY KEY (codClasse)
- --la visibilità è necessariamente una ed una sola tra le specificate (XOR)
- CONSTRAINT dominio_visibilità CHECK (visibilità IN ('public', 'protected', 'package', 'private')),
- --una classe non può auto specializzarsi
- CONSTRAINT no_auto_refine CHECK (codClasse <> codClasseGenerale),
- --in un class diagram non ci possono essere due classi con lo stesso nome
- CONSTRAINT "UNIQUE_CLASS_CD" UNIQUE ("NOME", "CODCD"),
- --siccome è essenzialmente un bit di validità, ha esattamente due valori possibili
- CONSTRAINT dominio_isAbstract CHECK (isAbstract = 'y' OR isAbstract = 'n')
- --implementa il vincolo che un class diagram è composto da classi e alla sua cancellazione, sono cancellate tutte le associazioni
- CONSTRAINT vincolo_composizione_classe_CD FOREIGN KEY (codCD) REFERENCES ClassDiagram (codCD) ON DELETE CASCADE
- );
- /
- --Rappresenta una classe di associazione
- CREATE TABLE ClasseDiAssociazione(
- cod int, --chiave tecnica atta a identificare univocamente una classe di associazione
- nome VARCHAR 2 NOT NULL, --identifica il nome (necessario) di una classe di associazione
- --chiave primaria
- PRIMARY KEY(cod),
- --chiave esterna verso classe
- FOREIGN KEY(cod) REFERENCES Classe (codClasse)
- );
- /
- --Rappresenta le partecipazioni tra le classi
- CREATE TABLE Partecipa(
- codPartecip int, --chiave tecnica atta a identificare univocamente un class diagram
- ruolo VARCHAR2, --in una partecipazione con una classe, è possibile specificare un ruolo per rendere più chiara la lettura del CD
- molteplicità VARCHAR2, --da notare il varchar per consentire scritture come '1..*. Si veda in seguito',
- codAss int NOT NULL,
- codClasse int NOT NULL,
- --chiave priamaria
- PRIMARY KEY (codPartecip),
- --chiave esterna verso Associazione
- FOREIGN KEY (codAss) REFERENCES Associazione (codA),
- --chiave esterna verso Classe
- FOREIGN KEY (codClasse) REFERENCES Classe (codClasse)
- );
- /
- --Rappresenta un attributo
- CREATE TABLE Attributo(
- codAtt int, --chiave tecnica atta a identificare univocamente un class diagram
- tipo VARCHAR2 NOT NULL, --rappresenta il tipo di un attributo
- visibilità VARCHAR2 DEFAULT 'Package' NOT NULL, --specifica una ed una sola delle quattro visibilità possibili
- nome VARCHAR2 NOT NULL, --specifica il nome (necessario) di un attributo
- codClasse int NOT NULL,
- isMemorizzato CHAR(1) DEFAULT 'y', --è essenzialmente un bit di validità che specifica se l'attributo è calcolato o memorizzato
- --chiave primaria
- PRIMARY KEY (codAtt),
- --la visibilità è necessariamente una ed una sola tra le specificate (XOR)
- CONSTRAINT dominio_visibilità CHECK (visibilità IN ('public', 'protected', 'package', 'private')),
- --una classe non può avere attributi omonimi
- CONSTRAINT unique_classe_attributo UNIQUE ("NOME", "codClasse")
- --siccome è essenzialmente un bit di validità, ha esattamente due valori possibili
- CONSTRAINT dominio_isMemorizzato CHECK (isMemorizzato = 'y' OR isMemorizzato = 'n'),
- --la visibilità è necessariamente una ed una sola tra le specificate (XOR)
- CONSTRAINT dominio_visibilità CHECK (visibilità IN ('public', 'protected', 'package', 'private')),
- --implementa il vincolo che una classe è composta da attributi e alla sua cancellazione, sono cancellati tutti i suoi attributi
- CONSTRAINT attributo_di_una_classe FOREIGN KEY (codClasse)
- REFERENCES Classe (codClasse) ON DELETE CASCADE
- );
- /
- --Rappresenta un metodo
- CREATE TABLE Metodo(
- codM int, --specifica una ed una sola delle quattro visibilità possibili
- nome VARCHAR2 NOT NULL, --rappresenta il nome (necessario) di un metodo
- visibilità VARCHAR 2 DEFAULT 'Package' NOT NULL, --specifica una ed una sola delle quattro visibilità possibili
- tipoOut VARCHAR 2 NOT NULL, --rappresenta il tipo restituito dal metodo
- descrizione VARCHAR2 DEFAULT 'Nessuna descrizione inserita', --rappresenta un'eventuale descrizione
- codClasse int,
- --chiave primaria
- PRIMARY KEY (codM),
- --la visibilità è necessariamente una ed una sola tra le specificate (XOR)
- CONSTRAINT dominio_visibilità CHECK (visibilità IN ('public', 'protected', 'package', 'private')),
- --chiave esterna verso classe
- CONSTRAINT metodo_di_una_classe FOREIGN KEY (codClasse) REFERENCES Classe (codClasse) ON DELETE CASCADE
- );
- /
- --Rappresenta un parametro
- CREATE TABLE Parametro(
- codP int, --specifica una ed una sola delle quattro visibilità possibili
- nome VARCHAR2 NOT NULL, --rappresenta il nome (necessario) di un CD
- posizione int NOT NULL, --indica la posizione del parametro nella lista dei par. formali del metodo
- tipo VARCHAR2 NOT NULL, --indica il tipo di un parametro
- codMetodo int,
- --chiave primaria
- PRIMARY KEY (codP),
- --la posizione di un parametro deve essere necessariamente un numero naturale strettamente positivo
- CONSTRAINT posizione_intera CHECK (posizione > 0),
- --non sono consentiti più parametri di un metodo nella medesima posizione
- CONSTRAINT unique_posizione_metodo UNIQUE (posizione, codMetodo),
- --alla cancellazione di un metodo, sono cancellati tutti i suoi parametri
- FOREIGN KEY (codMetodo) REFERENCES Metodo (codM) ON DELETE CASCADE
- );
- --è un espediente atto ad implementare alcuni vincoli più sofisticati (si veda più avanti)
- CREATE TABLE BasicType(
- nome VARCHAR2, --contiene tutti i tipi primitivi di UML
- --chiave primaria
- PRIMARY KEY(nome)
- );
- /
- /*FINE DELLE DEFINIZIONI DELLE TABELLE*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement