Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Attributo un nome che la differenzia
da ogni altra Storia.
NomeCollan Nome della Stringa di SI Nome Descrizione Tipo ID
a Collana di caratteri Attributo
Fumetti
DataInizioC Data Data - TitoloStoria Nome della Stringa di SI
oll pubblicazio Storia di caratteri
ne iniziale Fumetti
della
Collana AnnoPubbl Anno in cui Intero -
è stata
pubblicata
la storia
DataPubbl Data in cui è Data -
stata
pubblicata
la storia
Pagine Numero Intero -
delle pagine
della storia Pag. | 6
E’ l’ideatore e Dipendente della Società
Fumettista CapoProgetto
disegnatore dei che coordina altri
fumetti coordinato da dipendenti per
un capo-progetto. raggiungere un obiettivo
Essendo un comune. Il CapoProgetto
Dipendente della casa nel nostro caso coordina
editrice, ha tutte le fumettisti con l’intento di
caratteristiche dello ultimare un progetto
stesso ( ereditandole). d’interesse.
Nome Descrizione Tipo ID Nome Descrizione Tipo ID
Attributo Attributo
TUTTI GLI Stringa di TUTTI GLI Stringa di
CodiceFisc SI CodiceFisc SI
ATTRIBUTI Caratteri ATTRIBUTI Caratteri
aleDip …… aleDip .....
DI ….. DI …..
….. …..
DIPENDENT DIPENTENT
E E
TitoloDiStu Istruzione Stringa di - DataAssunz Data di Data -
dio primaria, caratteri ione assunzione
Secondaria del
e/o dipendente
Universitari capo-
a progetto
FormaContr Forma Stringa di -
attuale indetermina Caratteri
ta,
determinata
o Formativa Pag. | 7
2° Passo: Individuazione e definizione ASSOCIAZIONI
- Afferenza, Compimento, Riferimento, Composizione, Direzione
- Per ogni associazione andremo a definire le cardinalità ( e quindi anche il rapporto
di cardinalità)
GENERALIZZAZIONE PARZIALE
Generalizzazione (PARZIALE) di Fumettista/Capoprogetto Dipendente.
La Generalizzazione implica un ’ ASSOCIAZIONE padre-figli tra le varie entità d’interesse. Ogni figlio
erediterà le caratteristiche (attributi/associazioni) del padre. La Generalizzazione è PARZIALE in
quanto non tutti i dipendenti sono fumettista o capo-progetto. Pag. | 8
1) Associazione Afferenza tra le entità Dipendente e Sede
Un Dipendente può lavorare all’interno di una ed una sola Sede. In una Sede possono lavorare da
1 a Molti Dipendenti. Il Rapporto di Cardinalità è UNO A MOLTI.
2) Associazione Compimento tra le Entità Dipendente e Esperienza
Un Dipendente può aver compiuto varie esperienze , così come può non aver pregresso alcuna
esperienza passata. L’esperienza professionale è stata compiuta dall’ unico dipendente di
interesse. Esperienza ha identificatore esterno in Dipendente. Il Rapporto di Cardinalità è di UNO
A MOLTI. Pag. | 9
3) Associazione Riferimento tra le Entità Esperienza e Referente
Un’Esperienza può eventualmente contenere riferimenti a Referenti (identificati da un indirizzo
email). Il Referente avrà come riferimento l’Esperienza specifica. Il Rapporto di Cardinalità per la
relazione è di UNO A MOLTI.
4) Associazione Composizione tra le Entità Collana e Storie
Una Collana può essere composta fino ad un certo numero di storie. Ogni Storia fa parte di una
sola Collana. Il Rapporto di Cardinalità per l’associazione è di UNO A MOLTI. P a g . | 10
5) Associazione Direzione tra le Entità Fumettista e CapoProgetto
Ricordiamo che Fumettista e CapoProgetto sono associate in una relazione padre-figli con l’Entità
Dipendenti. Per cui l’associazione Direzione è Ricorsiva (Dipendenti dirigono/sono diretti da altri
Dipendenti). Un Fumettista può essere diretto da un solo CapoProgetto. Un CapoProgetto può
dirigere 1 o più fumettisti. Il Rapporto di Cardinalità è di UNO A MOLTI. P a g . | 11
P a g . | 12
La Tabella delle Regole Vincoli e Derivazioni
RV1 La FormaContrattuale DEVE essere Indeterminata o Determinata o
Formativa
IL SECONDO PASSO… PROGETTAZIONE
CONCETTUALE
PROGETTAZIONE
LOGICA
La Progettazione Logica è il secondo passo verso quella che sarà l’effettiva implementazione a
livello fisico del nostro progetto. Possiamo suddividere tale progettazione in due fasi ben distinte:
- TRASFORMAZIONE Che consiste in una ristrutturazione del Modello E-R
costruito in precedenza. La ristrutturazione dello schema si rende necessaria perché
non tutti i costrutti del modello E-R hanno una traduzione naturale nei modelli
logici!
- TRADUZIONE verso un modello relazionale P a g . | 13
1) Trasformazione dell’attributo composto Recapito in attributi semplici (Via/Civico/Città)
In ogni Entità/Associazione gli attributi composti vengono eliminati ed i loro componenti
diventano attributi semplici l’attributo deve essere atomico in questa fase.
2) Trasformazione della generalizzazione parziale Fumettista/Capoprogetto Dipendente
Tra le possibili azioni attraverso cui effettuare la Trasformazione scegliamo:
- Assorbimento delle Entità figlie nell’Entità padre. Andremo pertanto a definire un
nuovo attributo che ci specificherà la tipologia di Dipendente! TipoDipendente:
fumettista, capoprogetto o altro? P a g . | 14
Modello E-R dopo la Ristrutturazione P a g . | 15
Traduzione verso il Modello Relazionale
Adesso dobbiamo esaminare la traduzione verso il modello Relazionale, andiamo quindi a tradurre
tutte le Relazioni:
1. Afferenza
Dipendenti ≡ {CodiceFiscaleDip, NomeDip, CognomeDip, DataNascita, LuogoNascita ,EmailDip,
TitoloStudio , FormaContrattuale, DataAssunzione, TipoDipendente, Sede}
Sedi ≡ {Denominazione , Via, Civico, Città, Telefono, Fax}
NOTE: Vincolo di integrità referenziale di Sede a Denominazione
2. Direzione
Dipendenti ≡ {CodiceFiscaleDip, NomeDip, CognomeDip, DataNascita, LuogoNascita ,EmailDip,
TitoloStudio , FormaContrattuale, DataAssunzione, TipoDipendente, Sede}
Direzioni ≡ {Fumettista, Capoprogetto)
Note: Fumettista e Capoprogetto referenziano CodiceFiscaleDip
3. Compimento
Dipendenti ≡ {CodiceFiscaleDip, NomeDip, CognomeDip, DataNascita, LuogoNascita ,EmailDip,
TitoloStudio , FormaContrattuale, DataAssunzione, TipoDipendente, Sede}
Esperienze ≡ {DipendenteEsp, DatoreLavoro, DataInizioEsp, DataFineEsp)
Note: Per DipendenteEsp vincolo di referenza esterna all’attributo CodiceFiscaleDip di Dipendenti
4. Relazione: Riferimento
Esperienze ≡ {DipendenteEsp, DatoreLavoro, DataInizioEsp, DataFineEsp }
Referenti ≡ {EmailRef, NomeRef, CognomeRef, Esperienza }
Note: Per Esperienza vincolo di referenza esterna all’attributo DatoreLavoro. P a g . | 16
5. Relazione: Composizione
Collane ≡ {NomeCollana, DataInizioColl, Storia}
Storie ≡ {TitoloStoria, AnnoPubbl, DataPubbl,Pagine}
NOTE: Vincolo di integrità referenziale di Storia a TitoloStoria di Storie P a g . | 17
Raccogliamo tutto il ricavato dalla traduzione…
SCHEMA RELAZIONALE
Dipendenti ≡ {CodiceFiscaleDip, NomeDip, CognomeDip, DataNascita, LuogoNascita ,EmailDip,
TitoloStudio , FormaContrattuale, DataAssunzione, TipoDipendente, Sede}
Sedi ≡ {Denominazione , Via, Civico, Città, Telefono, Fax}
Direzioni ≡ {Fumettista, Capoprogetto)
Esperienze ≡ {DipendenteEsp, DatoreLavoro, DataInizioEsp, DataFineEsp)
Referenti ≡ {EmailRef, NomeRef, CognomeRef, Esperienza }
Collane ≡ {NomeCollana, DataInizioColl}
Storie ≡ {TitoloStoria, AnnoPubbl, DataPubbl,Pagine,Collana }
Vincoli di Integrità Referenziale
Attributo Vincolato Attributo Vincolante
Dipendenti.Sede Sedi.Denominazione
Direzioni.Fumettista Dipendenti.CodiceFiscaleDip
Direzioni.Capoprogetto Dipendenti.CodiceFiscaleDip
Esperienze.DipendenteEsp Dipendenti.CodiceFiscaleDip
Referenti.Esperienza Esperienze.DatoreLavoro
Storie.Collana Collana.NomeCollana P a g . | 18
IL TERZO E ULTIMO PASSO…
PROGETTAZIONE
LOGICA PROGETTAZIONE
FISICA
Per la progettazione fisica del nostro Database per la CasaEditrice, ho utilizzato uno tra i più noti
RDBMS : MySQL.
CREAZIONE DATABASE
mysql> CREATE DATABASE casaeditrice;
CREAZIONE TABELLE PER IL DATABASE casaeditrice
CREAZIONE TABELLA SEDI
mysql> CREATE TABLE sedi(
-> denominazione VARCHAR(30) PRIMARY KEY,
-> via VARCHAR(30) NOT NULL,
-> civico TINYINT NOT NULL,
-> citta VARCHAR(30) NOT NULL,
-> telefono VARCHAR(15) NOT NULL,
-> fax VARCHAR(15) NULL );
Query OK, 0 rows affected (0.09 sec)
CREAZIONE TABELLA DIPENDENTI P a g . | 19
mysql> CREATE TABLE dipendenti(
-> codicefiscaledip CHAR(16) PRIMARY KEY,
-> nomedip VARCHAR(30) NOT NULL,
-> cognomedip VARCHAR(30) NOT NULL,
-> datanascita DATE NOT NULL,
-> luogonascita VARCHAR(30) NOT NULL,
-> emaildip VARCHAR(30) NULL,
-> titolostudio VARCHAR(60) NULL,
-> formacontrattuale ENUM('indeterminata','determinata','formativa') NOT NULL,
-> dataassunzione DATE NULL,
-> tipodipendente ENUM('fumettista','capoprogetto','altro') NOT NULL,
-> sede VARCHAR(30) NOT NULL,
-> FOREIGN KEY(sede) REFERENCES sedi(denominazione)
-> ON UPDATE CASCADE ON DELETE CASCADE);
Query OK, 0 rows affected (0.05 sec)
CREAZIONE TABELLA DIREZIONI
mysql> CREATE TABLE direzioni(
-> fumettista CHAR(16) PRIMARY KEY,
-> capoprogetto CHAR(16) NOT NULL,
-> FOREIGN KEY(fumettista) REFERENCES dipendenti(codicefiscaledip)
-> ON UPDATE CASCADE ON DELETE CASCADE,
-> FOREIGN KEY(capoprogetto) REFERENCES dipendenti(codicefiscaledip)
-> ON UPDATE CASCADE ON DELETE CASCADE);
Query OK, 0 rows affected (0.34 sec)
CREAZIONE TABELLA ESPERIENZE P a g . | 20
mysql> CREATE TABLE esperienze(
-> dipendenteesp CHAR(16) NOT NULL,
-> datorelavoro VARCHAR(30) NOT NULL,
-> datainizioesp DATE NULL,
-> datafineesp DATE NULL,
-> PRIMARY KEY(dipendenteesp,datorelavoro),
-> FOREIGN KEY(dipendenteesp) REFERENCES dipendenti(codicefiscaledip)
-> ON UPDATE CASCADE ON DELETE CASCADE);
Query OK, 0 rows affected (0.36 sec)
CREAZIONE TABELLA REFERENTI
mysql> CREATE TABLE referenti(
-> emailref VARCHAR(30) PRIMARY KEY,
-> nomeref VARCHAR(30) NULL,
-> cognomeref VARCHAR(30) NULL,
-> esperienza VARCHAR(30) NULL,
-> FOREIGN KEY(esperienza) REFERENCES dipendenti(codicefiscaledip)
-> ON UPDATE CASCADE ON DELETE CASCADE);
Query OK, 0 rows affected (0.05 sec)
CREAZIONE TABELLA COLLANE
mysql> CREATE TABLE collane(
-> nomecollana VARCHAR(60) PRIMARY KEY,
-> datainiziocoll DA