Annunci Immobiliari - AffittaUnProgrammatore.it

Transcript

Annunci Immobiliari - AffittaUnProgrammatore.it
Corso di Gestione dell’Informazione
Studenti NON frequentanti
A.A. 2009/2010
Progettazione e realizzazione di un applicativo Web
“Annunci Immobiliari”
1
Scopo del progetto
Si vuole realizzare un’applicazione Web per la gestione di un ipotetico sito di annunci immobiliari
per compra-vendita di immobili ad uso abitativo e commerciale.
2
Gruppo di lavoro
Il progetto deve essere svolto da gruppi di al più 2 studenti. Il progetto è pensato per essere svolto
da 2 persone, per cui si incoraggia gli studenti a formare gruppi da due persone. I gruppi possono
essere formati da studenti appartenenti a due turni differenti. Non sono ammessi gruppi in cui uno
studente svolge il progetto per frequentanti e l’altro studente svolge il progetto per non frequentanti.
3
Premessa
Nel seguito viene descritto in maniera informale il dominio applicativo di interesse. Si sottolinea che,
come in genere avviene nei casi reali, la specifica fornita può non essere completa e può presentare
contraddizioni e/o ambiguità. È compito del progettista di basi di dati individuare eventuali punti
critici, analizzarli e proporre soluzioni progettuali congruenti con l’intero sviluppo del progetto. Il
risultato di questa fase di analisi dovrà essere adeguatamente argomentato nella documentazione
di progetto in cui andranno discusse e motivate tutte le scelte progettuali effettuate.
4
Descrizione del dominio applicativo
Un privato o un’agenzia immobiliare si può registrare al sito per inserire annunci di vendita di
immobili o per rispondere a richieste di vendita. Al momento della registrazione occorre fornire login
e password per accedere al sistema. Di un privato si è interessati a memorizzare nome, cognome,
codice fiscale, numero di telefono ed email. Di un’agenzia, invece, si è interessati alla ragione sociale,
il nome e cognome del responsabile dell’agenzia, la partita IVA o il codice fiscale, le regioni italiane
in cui l’agenzia opera e i numeri di telefono, fax ed email. Un’agenzia non può operare in più di
tre regioni contemporaneamente. Un privato può delegare ad un’agenzia l’incarico di occuparsi di
vendere un immobile. L’incarico è valido solo per un certo periodo ed è specifico per un determinato
immobile. Tutti gli incarichi sono “in esclusiva” dunque un privato non può incaricare per lo
stesso immobile due agenzie diverse durante lo stesso periodo. Si vuole tenere traccia del numero
di incarichi assegnati correntemente ad un’agenzia. Un privato o un’agenzia per poter operare
nel sistema devono essere autorizzati da parte dell’amministratore del sito. L’amministratore del
sistema può sospendere l’autorizzazione in un qualunque momento e in tal caso il privato o l’agenzia
non possono più aggiungere immobili o postare nuovi annunci.
Gli immobili che possono essere pubblicizzati su questo sito sono di diverso tipo. Si possono
pubblicizzare immobili ad uso privato e ad uso commerciale. Per gli immobili ad uso privato, si
1
è interessati a memorizzare il tipo di immobile (appartamento, attico, monolocale, casa indipendente, dimora tipica, garage/posto auto, loft/open space, palazzo/stabile, rustico/casale, terreno
uso residenziale, villa), la regione e la città in cui si trova l’immobile, i metri quadrati, l’indirizzo,
una descrizione dell’immobile, il piano a cui si trova e il numero di locali nel caso di appartamento.
Per gli immobili ad uso commerciale si è interessati a memorizzare il tipo di immobile (agriturismo,
albergo/B&B/residence, azienda agricola, bar/ristorante, capannone, laboratorio, locale commerciale, magazzino, negozio, palazzo/stabile, terreno uso commerciale, ufficio), la regione e la città in
cui si trova l’immobile, i metri quadrati, l’indirizzo.
Sul sito vengono postati annunci di vendita di immobili. Un immobile può essere oggetto di
vendita in momenti diversi e si vuole tenere traccia degli annunci che lo riguardano. Per tutti
gli annunci si deve memorizzare la data di pubblicazione, il periodo di validità dell’annuncio, un
identificatore univoco dell’annuncio, il venditore e il prezzo da lui richiesto (a meno che la trattativa
non sia privata) e l’agenzia che tratta la vendita (nel caso in cui la pratica è trattata da una terza
parte). A volte si vuole riportare lo stato di occupazione dell’immobile (in uso, libero, libero a
partire da una certa data). Gli annunci devono rimanere disponibili per tutti gli utenti solo per il
periodo di validità dell’annuncio. Al termine di tale periodo l’annuncio rimane visibile ai soli utenti
che hanno risposto all’annuncio per un periodo di 15 giorni dalla data di scadenza dell’annuncio. È
comunque sempre visibile da parte dell’amministratore del sistema e del soggetto che lo ha postato.
Agli annunci possono rispondere privati che si sono già registrati nel sistema. Ogni risposta
viene numerata in modo progressivo relativamente allo stesso annuncio. Inoltre, si vuole mantenere
la data e il testo della risposta. Si vogliono considerare due tipi di risposte. Richieste di maggiori
informazioni relative all’immobile e offerte per l’immobile. Nel caso di offerte si vuole memorizzare
l’importo offerto e la data di scadenza dell’offerta (di base questa data è 7 giorni dopo l’offerta,
ma può essere modificata da parte dell’offerente da 3 giorni dopo la data dell’offerta fino a 3 giorni
dopo la scadenza dell’annuncio).
Il proprietario dell’immobile o l’agenzia incaricata può visionare le risposte ai suoi annunci
e inviare i chiarimenti richiesti (per semplicità si assume un singolo invio). Per ogni annuncio
può essere attiva una sola offerta. Questo vuol dire che quando è presente un’offerta per un
annuncio, questo annuncio deve essere marcato come in fase di valutazione e nessun utente può
fare un’offerta. Il proprietario dell’immobile (o l’agenzia in caso di delega) ha tempo 7 giorni per
rispondere all’offerta (dopo tale periodo l’offerta non è più valida). Non è possibile rispondere ad
offerte che non sono più attive (anche se si possono vedere). L’amministratore del sistema deve
avere la possibilità di cambiare il proprietario corrente di tutti gli immobili a cui corrisponde una
offerta accettata.
Di seguito vengono riportate le operazioni minime che si richiede di sviluppare per la base di dati:
1. Immobili.
(a) Registrazione di un nuovo immobile.
(b) Eliminazione di un immobile (e di tutte le informazioni che lo riguardano).
(c) Assegnazione dell’immobile ad un proprietario.
(d) Eliminazione degli annunci scaduti da almeno 1 anno.
(e) Visualizzazione degli immobili per cui è stata effettuata un’offerta.
2. Utenti.
(a) Registrazione di un nuovo utente.
(b) Autorizzazione ad operare.
2
(c) Sospensione dell’autorizzazione ad operare.
(d) Eliminazione di un utente (un utente può essere eliminato se non ci sono suoi annunci
validi)
3. Annunci, risposte e offerte.
(a) Inserimento di un annuncio.
(b) Rimozione di un annuncio.
(c) Inserimento di una risposta/offerta.
(d) Visualizzazione dell’offerta attiva.
(e) Rimozione delle offerte non più attive.
(f) Ricerche di annunci rispetto a diversi parametri (posizione, prezzo, tipo, piano, numero
vani, dimensioni) che possono essere combinati tra di loro in modo arbitrario.
4. Altre procedure di gestione (di base).
(a) Elenco, dato un privato o un’agenzia, degli immobili per i quali ha postato un annuncio.
(b) Dato un immobile, restituire la sua storia (vendite e relativi annunci e offerte).
(c) Per un’agenzia, l’elenco degli immobili per i quali ha correntemente il mandato di vendita
e le eventuali offerte che sono già pervenute.
(d) Per un privato, l’elenco degli annunci a cui ha risposto, con le informazioni relative agli
immobili.
(e) Elenco degli annunci che hanno ricevuto il maggior numero di offerte nell’ultimo mese.
(f) Trovare la città con il più alto costo medio di vendita al metro quadro di immobili ad
uso privato rispetto alle città della stessa regione.
(g) Elenco delle agenzie immobiliari che hanno concluso nell’ultimo mese vendite di immobili
situati nella stessa regione in cui hanno sede.
(h) Per ogni città di una data regione, trovare il costo di vendita medio, massimo e minimo
annuale per ogni tipologia di immobile.
(i) Trovare l’agenzia che ha venduto tutti gli immobili per i quali ha correntemente il
mandato di vendita.
(j) Cancellare gli annunci di vendita di immobili il cui costo al metro quadro è inferiore al
20% del costo medio al metro quadro degli annunci attivi per immobili della stessa città
e della stessa tipologia.
5
Svolgimento del progetto
5.1
Gestione base di dati con PostgreSQL
1. Si definisca lo schema concettuale Entità-Relazione per la base di dati, evidenziando le entità e le associazioni di interesse, nonché eventuali vincoli di cardinalità e di identificazione,
motivando le scelte effettuate. Altri eventuali vincoli devono essere espressi in linguaggio
naturale.
3
2. Si effettui la traduzione dello schema E-R in uno schema E-R ristrutturato equivalente, motivando le eventuali scelte effettuate e tenendo conto del volume dei dati e della frequenza con
cui le operazioni principali vengono invocate (questi dati sono a libera scelta).
3. Si effettui la traduzione dello schema E-R ristrutturato in un equivalente schema relazionale.
Si discutano eventuali ottimizzazioni dello schema.
4. Si riporti esplicitamente il codice SQL standard delle interrogazioni richieste al punto 4.4.
Alcune delle funzionalità richieste potrebbero non essere implementabili con singole query
SQL, ma richiedere l’utilizzo di strumenti più avanzati (viste, stored procedure, ...)
5. Fornire gli script PostgreSQL per la creazione delle strutture della base di dati in accordo allo
schema relazionale ottenuto alla fine dalla fase di progettazione. La base di dati creata dovrà
venir popolata con tutte le informazioni che si ritengono necessarie per una simulazione realistica. Inoltre, si dovranno fornire dati sufficienti almeno a verificare che i vincoli di dominio
espressi siano verificati e che in generale le operazioni di cui si richiede l’implementazione
funzionino correttamente.
5.2
Realizzazione dell’applicativo in PHP
La base di dati e le operazioni sviluppate nel punto precedente devono essere accessibile via Web.
Dal momento che la base di dati contiene informazioni riservate che non possono essere accedute
da tutti, si richiede di considerare 4 categorie di utenti.
1. Utente generico. Deve poter vedere solo quelle informazioni che sono considerate di pubblico
dominio (a tale utente non deve essere consentito di effettuare operazioni di modifica e cancellazione). Può solo effettuare ricerche di immobili in vendita, ma non può rispondere ad
alcun annuncio se prima non si registra come utente del sistema.
2. Amministratore del sistema. Può accedere a tutte le informazioni contenute nella base di dati
e gli è consentito di effettuare qualunque operazione permessa agli altri utenti.
3. Privato. Il privato si può registrare al sito, inserire immobili di sua proprietà, effettuare
ricerche di annunci, inserire e rispondere ad annunci, etc. In generale può fare qualunque
operazione di aggiornamento sui dati che lo riguardano. Il privato può dare mandato ad
un’agenzia di vendere un suo immobile. In questo caso ha visione delle interazioni tra agenzia
ed offerte, ma non può intervenire.
4. Agenzia Immobiliare. Può fare le stesse operazioni del privato relativamente agli immobili
per i quale ha ricevuto mandato.
Dopo la prima connessione, l’applicativo deve riconoscere l’utente quando effettua nuove connessioni dalla stessa macchina. È compito del gruppo di lavoro identificare quali informazioni
sono da considerarsi riservate e quali operazioni possono essere effettuate dalle categorie di utenti.
L’applicazione PHP deve consentire di effettuare le usuali operazioni di gestione dati (visualizzazione, cancellazione, modifica) tenendo in considerazione la categoria di utenti.
6
Documentazione da consegnare
Per la valutazione del progetto andrà consegnato uno zip file contenente i seguenti file:
4
• una documentazione tecnica digitale (in formato pdf) che illustri il processo di progettazione
e le scelte effettuate. In particolare, tale documentazione dovrà contenere almeno:
1. uno schema concettuale (E-R), uno schema concettuale ristrutturato.
2. Descrizione dei vincoli di integrità non direttamente desumibili dallo schema ER con la
loro relativa implementazione in SQL. Per quei vincoli che non si possono implementare
in PostgreSQL, indicare la soluzione alternativa adottata.
3. il modello relazionale risultante dalla fase di progettazione (con verifica se il modello è
in una qualche forma normale).
4. il codice SQL sviluppato per implementare le operazioni richieste.
5. Qualunque altra informazione si ritenga di interesse per la comprensione delle scelte
progettuali ed implementative effettuate (tra cui le operazioni che le categorie di utenti
possono fare).
• Gli script per la realizzazione ed il popolamento della base di dati progettata.
• L’applicativo PHP sviluppato.
Per quanto riguarda la documentazione tecnica si richiede di utilizzare il template messo a
disposizione insieme al testo dell’esercitazione. Nella prima pagina della documentazione devono
essere indicate le seguenti informazioni:
• Titolo del progetto svolto e della parte specifica assegnata.
• Data di consegna.
• Nome, cognome e indirizzo email dei componenti del gruppo.
• Indicazione di un referente del gruppo. Il docente interagirà SOLO con il referente per quanto
riguarda il progetto.
• Docente di riferimento.
7
Consegna e discussione del progetto
È prevista una consegna elettronica dell’intero progetto. Sul sito del corso verranno indicate le
istruzioni per la consegna e le date in cui è possibile effettuare la consegna. Dopo aver consegnato
il progetto, gli studenti sono tenuti a presentare il lavoro svolto durante un colloquio (si consulti
la sezione “calendario e materiale” per le date in cui il colloquio può avvenire). Tale colloquio ha
lo scopo di valutare se gli studenti hanno acquisito le conoscenze relative alla parte di laboratorio,
se il progetto è stato effettivamente svolto dai componenti del gruppo e se il carico di lavoro nello
svolgimento del progetto sia stato suddiviso in maniera uniforme tra i componenti del gruppo.
Durante il colloquio gli studenti dovranno discutere le scelte fatte nella definizione dello schema
ER. Tutte le operazioni indicate nel testo devono essere implementate nel sito web sia dal punto di
vista della features del sistema che del contenuto informativo. Durante la discussione, gli studenti
devono mostrare il progetto su una macchina messa a disposizione dal docente.
8
Aggiornamenti del progetto
In caso di necessità verranno pubblicati chiarimenti o nuove versioni del progetto sul sito del corso.
Gli studenti sono tenuti a controllare periodicamente il sito.
5