Scarica Progetto PHP Rivista Culinaria e più Prove d'esame in PDF di Basi di Dati solo su Docsity!
INDICE
- Prova pratica
- PROGETTAZIONE CONCETTUALE……………………………………………………………………….PAGINA
- PROGETTAZIONE LOGICA………………………………………………………………………..…….…PAGINA
- PROGETTAZIONE FISICA..…………………………………………………………………………………PAGINA
Redazione rivista culinaria
DESCRIZIONE DELL’AZIENDA
Una redazione giornalistica di una rivista culinaria vuole creare un sistema di gestione delle ricette
inviate dai lettori. Nella redazione lavorano da 1 a 5 redattori collaboratori e 1 caporedattore. Ogni
settimana i redattori verificano le ricette inviate dai lettori e scartano quelle ritenute non idonee, le
idonee vengono sottoposte, alla fine del mese, al caporedattore per l’approvazione definitiva che
comporterà la pubblicazione sulla rivista. Ogni ricetta è contraddistinta da: autore, tipologia* lista
ingredienti, quantità per ogni ingrediente, tempo di cottura, modalità di preparazione, difficoltà (da
1 – facile a 5 - difficile), numero di porzioni, note. La redazione sta valutando la possibilità di
mettere su un sito Internet le ricette e di consentire ricerche di ricette per calorie per favorire
anche i visitatori che desiderano seguire un regime dietetico controllato. I visitatori / autori di
ricette dovranno essere registrati e dovrà essere tenuta traccia delle ricette pubblicate per ogni
visitatore / autore. Per ogni visitatore / autore si dovrà conoscere: nome, cognome, indirizzo,
telefono abitazione, telefono cellulare, indirizzo e-mail* e data di nascita. Ogni visitatore / autore
dovrà firmare una liberatoria per la legge sulla privacy e per garantire l’originalità della ricetta. I
redattori saranno caratterizzati da: nome, cognome, matricola. Il capo redattore sarà
caratterizzato da: nome, cognome, matricola e dovrà poter essere in grado di gestire i profili dei
collaboratori che potranno variare in numero nel tempo.
OPERATIVITÀ
1. Carico delle ricette con frequenza 100 operazioni a settimana.
2. Validazione delle ricette non ancora visionate e inoltro al caporedattore (100/sett).
3. Ricerca ricette per tipologia, ingredienti, tempo di cottura e difficoltà (500/gg).
4. Ricerca ricette per calorie (500/gg).
5. Calcolo delle calorie di più ricette combinate scelte attraverso precedenti ricerche (100/gg).
6. Calcolo delle ricette validate da un singolo redattore con possibilità di stampa selettiva
(solo di alcuni campi) o dell’intero record.
COSA SI DEVE REALIZZARE
A. Definire lo schema concettuale e formalizzare tutti i documenti allegati
B. Definire lo schema logico e formalizzare tutti i documenti allegati.
C. Fornire una spiegazione circa le scelte fatte in termini di ristrutturazione schema E-R.
D. Definire un possibile schema fisico.
E. Implementare con linguaggio php le funzioni descritte nelle slide: “operatività”
distinguendo gli ambienti operativi per i diversi livelli: visitatore/autore, redattore,
capo-redattore.
Progettazione logica
OPERAZIONI
FREQUENZA DELLE OPERAZIONI
VOLUMI DEGLI ACCESSI
(IPOTESI DEI VOLUMI)
N Operazione Frequenza
1 Caricamento delle ricette^ 100 a settimana
2 Validazione delle ricette non ancora visionate e inoltro al
caporedattore
100 a settimana
3 Ricerca ricette per tipologia, ingredienti, tempo di cottura e difficoltà^ 500 al giorno
4 ricerca ricette per calorie^ 500 al giorno
5 Calcolo delle calorie di più ricette combinate scelte attraverso
precedenti ricerche
100 al giorno
6 Calcolo delle ricette validate da un singolo redattore con possibilità
di stampa selettiva (solo di alcuni campi) o dell’intero record.
Ipotizzo 10 al giorno
Operazione Tipo Frequenza
1 Batch 100 a settimana
2 Interativa 100 a settimana
3 Interativa 500 al giorno
4 Interativa 500 al giorno
5 Interativa 100 al giorno
6 Interativa 10 al giorno
Concetto Tipo Volume Note Autore Entita 1000 1000 visitatori con profilo di autore ricette Lettore Entita 5000 5000 visitatori con profilo di lettore ricette Condivisione Relazione 500 500 ricette originali idonee alla pubblicazione Caporedattore Entita 1 1 caporedattore Pubblicazione Relazione 100 100 ricette pubblicate (ipotesi 1 ogni 5) Lettura Relazione 500 500 Verifica delle ricette originali inserite da autori Collaboratore Entita 5 5 redattori (non il capo) Ingrediente Entita 100 ingredienti diversi tra di loro Lista Relazione 5000 10 ingredienti che formano 500 ricette Ricetta Entita 1000 ipotesi di 1000 ricette già pubblicate
ACCESSI PER OPERAZIONE 1
CARICO DELLE RICETTE CON FREQUENZA (100/SETT)
(SUPPONGO CHE SIA L’UTENTE AUTORE A CARICARE UNA NUOVA RICETTA PERCHÉ NON
CHIARO NEL TESTO)
ACCESSI PER OPERAZIONE 2
VALIDAZIONE DELLE RICETTE NON ANCORA VISIONATE E INOLTRO AL CAPOREDATTORE (100/
SETT).
ACCESSO PER OPERAZIONE 3
RICERCA RICETTE PER TIPOLOGIA, INGREDIENTI, TEMPO DI COTTURA E DIFFICOLTÀ (500/GG).
Concetto Tipo Accessi Tipo Autore Entità 1 Lettura Ricetta Entità 1 Scrittura Ingrediente Entità 10 Scrittura Lista Relazione 1 Scrittura Condivisione Relazione 1 Scrittura Concetto Tipo Accessi Tipo Collaboratore Entità 1 Lettura Lettura Relazione 1 Scrittura Ricetta Entità 1 Lettura Ingrediente Entità 10 Lettura Lista Relazione 1 Lettura Concetto Tipo Accessi Tipo Ricetta Entità 1 Lettura Lettore Entità 1 Lettura Ingrediente (^) Entità 10 Lettura Autore Entità 1 Lettura Lista Relazione 1 Lettura Condivisione Relazione 1 Lettura
ACCESSO PER OPERAZIONE 6
CALCOLO DELLE RICETTE VALIDATE DA UN SINGOLO REDATTORE CON POSSIBILITÀ DI STAMPA
SELETTIVA (SOLO DI
ALCUNI CAMPI) O DELL’INTERO RECORD.
Concetto Tipo Accessi Tipo Caporedattore Entità 1 Lettura Ricetta Entità 1 Lettura Ingrediente Entità 10 Lettura Lista Relazione 1 Lettura Pubblicazione Relazione 1 Lettura
RISTRUTTURAZIONE DELLO SCHEMA E/R
SCHEMA LOGICO
Collaboratore (Matricola, Nome, Cognome)
Caporedattore (Matricola, Nome, Cognome)
Ricetta (ID Ricetta, Nome, Preparazione, Tipologia, Tempo Cottura, Note, Porzioni, Difficoltà)
ingrediente (ID Ingrediente, Nome, Descrizione, Calorie)
Lettore (ID Utente, Nome, Cognome, Email, Privacy, Indirizzo Data Nascita, Tel fisso, Tel Mobile)
Autore (ID Utente, Nome, Cognome, Email, Privacy, Indirizzo Data Nascita, Tel fisso, Tel Mobile)
Lettura (Collaboratore, Ricetta, Idonea)
Pubblicazione (Caporedattore, Ricetta)
Lista (Ingrediente, Ricetta, Quantità)
Fruizione (Utente, Ricetta,)
Condivisione (Autore, Ricetta, Originale)
-- Struttura della tabella ricetta
CREATE TABLE ricetta (
docID int(11) NOT NULL,
titolo varchar(40) NOT NULL,
autore int(4) NOT NULL,
validate tinyint(1) NOT NULL,
calorie int(3) NOT NULL,
preparazione longtext NOT NULL,
cottura int(3) NOT NULL,
tipologia varchar(10) NOT NULL,
difficolta int(1) NOT NULL,
porzioni int(2) NOT NULL,
note longtext NOT NULL,
approvatore int(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- Struttura della tabella utente
CREATE TABLE utente (
userID int(11) NOT NULL,
login varchar(30) NOT NULL,
password char(64) NOT NULL,
session_key char(32) DEFAULT NULL,
name varchar(30) DEFAULT NULL,
mail varchar(30) DEFAULT NULL,
cognome varchar(40) NOT NULL,
tel varchar(10) NOT NULL,
cell varchar(10) NOT NULL,
indirizzo varchar(40) NOT NULL,
nascita date NOT NULL,
privacy tinyint(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Indici per le tabelle scaricate
-- Indici per le tabelle ingrediente
ALTER TABLE ingrediente
ADD PRIMARY KEY (id_ingrediente);
-- Indici per le tabelle redattore
ALTER TABLE redattore
ADD PRIMARY KEY (userID);
-- Indici per le tabelle ricetta
ALTER TABLE ricetta
ADD PRIMARY KEY (docID);
-- Indici per le tabelle utente
ALTER TABLE utente
ADD PRIMARY KEY (userID);
-- AUTO_INCREMENT per le tabelle scaricate
-- AUTO_INCREMENT per la tabella ingrediente
ALTER TABLE ingrediente
MODIFY id_ingrediente int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;
-- AUTO_INCREMENT per la tabella redattore
ALTER TABLE redattore
MODIFY userID int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;
-- AUTO_INCREMENT per la tabella ricetta
ALTER TABLE ricetta
MODIFY docID int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=16;
-- AUTO_INCREMENT per la tabella utente
ALTER TABLE utente
MODIFY userID int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;