• Non ci sono risultati.

Soluzione DDL ed Algebra Relazionale

N/A
N/A
Protected

Academic year: 2021

Condividi "Soluzione DDL ed Algebra Relazionale"

Copied!
7
0
0

Testo completo

(1)

Soluzione DDL ed Algebra Relazionale

Banca del Tempo

a) Istruzioni DDL (realizzate con Toad Data Modeler)

-- CREATE TABLES SECTION --- -- Table Zona

CREATE TABLE Zona(

ID Integer NOT NULL,

Descrizione Varchar2(25 CHAR) NOT NULL, Immagine Blob NOT NULL

)

-- Add keys for table Zona

ALTER TABLE Zona ADD CONSTRAINT PKDitta PRIMARY KEY (ID)

-- Table Socio

CREATE TABLE Socio(

ID Integer NOT NULL,

Nome Varchar2(25 CHAR) NOT NULL, Cognome Varchar2(25 CHAR) NOT NULL, Via Varchar2(30 CHAR) NOT NULL,

NumeroCivico Varchar2(7 CHAR) NOT NULL, Citta Varchar2(20 CHAR) NOT NULL,

RecapitoTelefonico Varchar2(10 CHAR), FKZona Integer NOT NULL

)

-- Add keys for table Socio

ALTER TABLE Socio ADD CONSTRAINT PKSocio PRIMARY KEY (ID)

-- Table Categoria

CREATE TABLE Categoria(

ID Integer NOT NULL,

Descrizione Varchar2(30 CHAR) NOT NULL )

-- Add keys for table Categoria

ALTER TABLE Categoria ADD CONSTRAINT PKCategoria PRIMARY KEY (ID)

(2)

-- Table Servizio

CREATE TABLE Servizio(

ID Integer NOT NULL, Data Date NOT NULL,

NumeroOre Integer NOT NULL, FKPrestazione Integer NOT NULL, FKSocioOfferente Integer NOT NULL, FKSocioRicevente Integer NOT NULL )

-- Add keys for table Servizio

ALTER TABLE Servizio ADD CONSTRAINT PKServizi PRIMARY KEY (ID)

-- Table Prestazione

CREATE TABLE Prestazione(

ID Integer NOT NULL,

Descrizione Varchar2(30 CHAR) NOT NULL, FKCategoria Integer NOT NULL

)

-- Add keys for table Prestazione

ALTER TABLE Prestazione ADD CONSTRAINT PKPrestazione PRIMARY KEY (ID) -- Table Competenza

CREATE TABLE Competenza(

FKSocio Integer NOT NULL, FKPrestazione Integer NOT NULL )

-- Add keys for table Competenza

ALTER TABLE Competenza ADD CONSTRAINT Key1 PRIMARY KEY (FKSocio,FKPrestazione)

-- CREATE SEQUENCES SECTION ---

CREATE SEQUENCE SeqZona INCREMENT BY 1

START WITH 1

CREATE SEQUENCE SeqSocio INCREMENT BY 1

START WITH 1

CREATE SEQUENCE SeqServizio INCREMENT BY 1

START WITH 1

CREATE SEQUENCE SeqPrestazione

(3)

INCREMENT BY 1 START WITH 1

CREATE SEQUENCE SeqCategoria INCREMENT BY 1

START WITH 1

-- CREATE RELATIONSHIPS SECTION ---

ALTER TABLE Prestazione ADD CONSTRAINT Categoria-Prestazione FOREIGN KEY (FKCategoria) REFERENCES Categoria (ID)

ALTER TABLE Servizio ADD CONSTRAINT Prestazione-Servizio FOREIGN KEY (FKPrestazione) REFERENCES Prestazione (ID)

ALTER TABLE Socio ADD CONSTRAINT Zona-Socio FOREIGN KEY (FKZona) REFERENCES Zona (ID)

ALTER TABLE Servizio ADD CONSTRAINT Socio Offerente-Servizio FOREIGN KEY (FKSocioOfferente) REFERENCES Socio (ID)

ALTER TABLE Servizio ADD CONSTRAINT Socio Ricevente-Servizio FOREIGN KEY (FKSocioRicevente) REFERENCES Socio (ID)

ALTER TABLE Competenza ADD CONSTRAINT Socio-Competenza FOREIGN KEY (FKSocio) REFERENCES Socio (ID)

ALTER TABLE Competenza ADD CONSTRAINT Prestazione-Competenza FOREIGN KEY (FKPrestazione) REFERENCES Prestazione (ID)

-- CREATE TRIGGER SECTION ---

-- trigger for sequence seqzona for column id in table zona ---

CREATE OR REPLACE TRIGGER t_SeqZona BEFORE INSERT ON Zona FOR EACH ROW

BEGIN

SELECT SeqZona.nextval INTO :new.ID FROM DUAL;

END;

-- trigger for sequence seqsocio for column id in table socio ---

CREATE OR REPLACE TRIGGER t_SeqSocio BEFORE INSERT ON Socio FOR EACH ROW

BEGIN

SELECT SeqSocio.nextval INTO :new.ID FROM DUAL;

END;

(4)

-- trigger for sequence seqcategoria for column id in table categoria ---

CREATE OR REPLACE TRIGGER t_SeqCategoria BEFORE INSERT ON Categoria FOR EACH ROW

BEGIN

SELECT SeqCategoria.nextval INTO :new.ID FROM DUAL;

END;

-- trigger for sequence seqservizio for column id in table servizio ---

CREATE OR REPLACE TRIGGER t_SeqServizio BEFORE INSERT ON Servizio FOR EACH ROW

BEGIN

SELECT SeqServizio.nextval INTO :new.ID FROM DUAL;

END;

-- trigger for sequence seqprestazione for column id in table prestazione ---

CREATE OR REPLACE TRIGGER t_SeqPrestazione BEFORE INSERT ON Prestazione FOR EACH ROW

BEGIN

SELECT SeqPrestazione.nextval INTO :new.ID FROM DUAL;

END;

(5)

b) Interrogazioni in Algebra Relazionale:

1) per ogni zona, visualizzare la descrizione e la relativa immagine;

( Zona )

magine e

Descrizion , Im

π

2) mostrare nome e cognome dei soci di Rovereto;

( )

( Citta Rovereto Socio )

Cognome

Nome

,

σ

=" "

π

3) visualizzare le informazioni relative alle prestazioni di tipo culinario;

Scomponiamo l’interrogazione in una serie di operazioni, che indicheremo con opportune sigle:

A1 : = ρ ID Pr estazione , Descrizion e Pr estazione ID , Descrizion e ( Pr estazione )

A2 : = σ Descrizion e

="

Culinario

"

( Categoria )

A3 : = A 1 ><

Categoria.ID=FKCategoria

A 2

A4 : = π ID

Pr

estazione

,

Descrizion e

Pr

estazione ( ) A 3

4) nome e cognome dei soci che hanno erogato servizi nel mese di gennaio 2009;

( ) ( )

( )

( Socio

SocioID FKSocioOfferetnte Data AND Data

Servizio )

Cognome

Nome, . =

σ

>=01/01/2009 <=31/01/2009

π ><

(6)

5) nome e cognome dei soci che hanno erogato servizi di tipo famiglia;

Per ragioni di spazio, rappresentiamo l’interrogazione con una struttura ad albero.

a FKCategori ID

Categoria . =

><

estazione FK

ID estazione

. Pr

Pr =

><

"

"Famiglia e

Descrizion =

σ

erente FKSocioOff ID

Socio. =

><

Cognome Nome,

π

Socio

Prestazione

Categoria

Servizio

(7)

6) nome e cognome dei soci che sono disponibili ad effettuare servizi di tipo sport.

Per ragioni di spazio, rappresentiamo l’interrogazione con una struttura ad albero.

a FKCategori ID

Categoria . =

><

estazione FK

ID estazione

. Pr

Pr =

><

"

"Sport e Descrizion =

σ

FKSocio ID

Socio

. =

><

Cognome Nome,

π

Socio

Prestazione

Categoria

Competenza

Riferimenti

Documenti correlati

Ricordiamo che in caso di obbligatorietà della prescrizione, sarà necessario allegare due file uno per la fattura e uno per la prescrizione, in mancanza della prescrizione

della regola del 133 di rendimento, derivante dagli studi della Medicina del Lavoro sul metabolismo basale, la quale ci dice che il massimo che una persona può dare senza

Ai fini dell'applicazione della presente legge, sono sportivi professionisti gli atleti, gli allenatori, i direttori tecnico-sportivi ed i preparatori atletici, che

Sulla base delle attuali conoscenze, il prodotto non contiene SVHC (sostanze altamente pericolose) in concentrazione superiore al 0,1 % in peso, secondo l’elenco pubblicato da

di ESSERE lavoratore dipendente presso altra Pubblica Amministrazione e di impegnarsi, nel caso dovesse risultare vincitore della selezione, a presentare il

f) supporto tecnico alle amministrazioni e agli enti competenti, con particolare riferimento alla caratterizzazione dei fattori ambientali causa di danni alla salute pubblica,

In caso di risoluzione del contratto, per qualsiasi causa e nel caso di ritiro dell’allievo nel corso dell’anno scolastico, l’Ente ha diritto alla riscossione delle rate

n.52 settimane per i soggetti che, a seguito di eventi di cessazione dal lavoro avvenuti nel 2015 e fino al 30 aprile 2015, hanno percepito dodici mesi di prestazione avendo