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