Analisi dei dati
Le entità che possono essere individuate nel problema sono:
Proprietario, per rappresentare i privati che sono proprietari degli appartamenti offerti in affitto;
Appartamento, per rappresentare le case e gli appartamenti offerti per gli affitti;
Cliente, per rappresentare le informazioni sui clienti (o potenziali clienti) interessati all’affitto degli immobili.
Il legame tra cliente e appartamento è rappresentato dalla prenotazione e successiva conferma della transazione di affitto.
Conviene quindi, per maggiore chiarezza di rappresentazione del modello, introdurre da subito un’altra entità:
Affitto
che risolve anticipatamente la scomposizione dell’associazione molti a molti tra Appartamento e Cliente in due associazioni uno a molti.
Gli attributi di Proprietario sono: IDProprietario, Cognome, Nome, Data di nascita, Codice Fiscale, Indirizzo, CAP, Città, Telefono, email, IBAN.
Gli attributi di Appartamento sono: IDAppartamento, DataRegistrazione, Tipo (monolocale, bilocale, attico, …), Numero posti letto, quartiere, indirizzo, Foto1, Foto2, Foto3, Descrizione, Costo giornaliero.
Gli attributi di Cliente sono: IDCliente, Cognome, Nome, Data di nascita, Codice Fiscale, Indirizzo, CAP, Città, Telefono, email, Nazione, username, password.
Gli attributi di Affitto sono: IDRegistrazione, Data della prenotazione, Numero giorni richiesti, Data versamento, Importo del versamento.
La data di registrazione dell’appartamento nel database dell’agenzia consente di determinare la disponibilità dell’appartamento nei sei mesi successivi.
Il cliente possiede anche l’attributo Nazione perché il testo parla di eventi internazionali. Per esigenze di normalizzazione sarebbe opportuno introdurre anche l’entità Nazione che serve per rappresentare le provenienze geografiche dei clienti. In modo analogo si potrebbe creare un’entità Quartiere per descrivere in modo univoco i quartieri della città e facilitare l’operazione richiesta dalla seconda interrogazione.
Qui per semplicità vengono indicate come attributo.
Si può osservare che il controllo sulla conferma della prenotazione si ottiene calcolando la distanza di 3 giorni dalla Data della prenotazione. Se i campi Data versamento e Importo del versamento sono nulli, significa che la prenotazione è stata registrata, ma non confermata.
Anche la disponibilità degli appartamenti può essere verificata con un controllo sulle date (data di prenotazione e data di inserimento dell’appartamento nel database).
Inoltre l’attributo Importo del versamento potrebbe essere tralasciato se si considera la quota del 40% vincolante. Per maggiore chiarezza è comunque opportuno che sia presente nella registrazione della conferma.
Associazioni
Tra l’entità Proprietario e l’entità Appartamento esiste un’associazione uno a molti, perché un proprietario può possedere uno o più appartamenti, e ogni appartamento è intestato a un solo proprietario (si tralascia per semplicità il caso di appartamenti intestati a più proprietari).
Tra l’entità Appartamento e l’entità Affitto esiste un’associazione uno a molti, perché un appartamento può essere oggetto di molte prenotazioni (ovviamente in tempi diversi) e ogni registrazione di affitto si riferisce a un solo appartamento.
Tra l’entità Cliente e l’entità Affitto esiste un’associazione uno a molti, perché un cliente può svolgere diverse operazioni di affitto, ma ogni prenotazione si riferisce a un solo cliente.
Modello E/R
Regole di lettura
Ogni proprietario può possedere uno o più appartamenti, ogni appartamento deve essere posseduto da un solo proprietario.
Ogni appartamento può registrare un o più affitti, ogni affitto deve essere registrato per un solo appartamento.
Ogni cliente può prenotare uno o più affitti, ogni affitto deve essere prenotato da un solo cliente.
Tabelle
Proprietari (IDProprietario, Cognome, Nome, DataNascita, CodiceFiscale, Indirizzo, CAP, Città, Telefono, email, IBAN)
Appartamenti (IDAppartamento, DataRegistrazione, Tipo, NumeroPostiLetto, Quartiere, Indirizzo, Foto1, Foto2, Foto3, Descrizione, CostoGiornaliero, IDProprietario).
Clienti (IDCliente, Cognome, Nome, DataNascita, CodiceFiscale, Indirizzo, CAP, Città, Telefono, Email, Nazione, Username, Password).
Affitti (IDRegistrazione, DataPrenotazione, NumeroGiorni, DataVersamento, ImportoVersamento, IDAppartamento, IDCliente).
Le associazioni 1:N sono state rappresentate aggiungendo nelle tabelle vicino a molti le chiavi esterne (indicate in corsivo).
I campi delle fotografie nella tabella Appartamenti possono essere oggetti multimediali (in Access Oggetto OLE) oppure, in modo più efficiente, link ai file di tipo immagine esterni al database (anche per facilitare la successiva presentazione con la pagina Web).
Interrogazioni
- Caratteristiche generali di un appartamento, dato il codice.
Select *
From Appartamenti
Where IDAppartamento = [quale codice appartamento];
- Elenco degli appartamenti che si trovano in un determinato quartiere.
Select *
From Appartamenti
Where Quartiere = [quale quartiere];
- Elenco degli appartamenti che offrano un numero di posti letto non inferiore ad un valore prefissato.
Select *
From Appartamenti
Where NumeriPostiLetto >= [numero minimo posti letto];
- Numero totale di appartamenti offerti dall’agenzia, indipendentemente dalle loro caratteristiche.
Select Count(*) As NumeroTotaleAppartamenti
From Appartamenti;
- Costo totale di affitto per ogni prenotazione, in relazione al numero di giorni richiesti.
Select Af.IDPrenotazione, Af.DataPrenotazione, Af.IDCliente,
Af.NumeroGiorni * Ap.CostoGiornaliero As TotaleAffitto
From Appartamenti As Ap Inner Join Affitti As Af
On Ap.IDAppartamento = Af.IDAppartamento;
|