5D e 5E: Simulazione completa Database Multiproprietà (traccia e soluzione (solo modello fisico)


L'elaborato deve contenere:
la traccia

Analisi del problema e definizione degli step da realizzare
L'individuazione delle entità principali
Il modello logico
Il modello fisico

Spiegare i vincoli dell'integrità referenziale
Spiegare la struttura del sito

Il progetto grafico e del sito e un passo della procedura in Php
Script Sql completo della procedura.

1Si progetti un sistema informativo per una società che gestisce appartamenti in multiproprietà.

Il sistema deve gestire il patrimonio immobiliare della società, la vendita dei pacchetti di multiproprietà ai clienti e le richieste di scambi fra proprietari.
Il patrimonio immobiliare consta di insiemi di appartamenti raggruppati in insediamenti turistici. Ogni appartamento è caratterizzato da un identificatore univoco, all'interno dell'insediamento, da un livello di qualità (lusso, medio, spartano) e dal numero di posti letto. Un insediamento turistico è caratterizzato dalla località, l'indirizzo, il numero di appartamenti, il periodo di apertura (tutto l'anno, oppure stagioni particolari) e una breve descrizione delle attrazioni - naturali e non - offerte.
La società offre ai clienti l'acquisto di settimane (una o più) di soggiorno presso un appartamento di una determinata località. Ogni settimana di soggiorno ha un prezzo proporzionale alla località ed al periodo scelto: l'alta stagione costa di più rispetto agli altri periodi dell'anno. Al fine di concludere un contratto d'acquisto, si deve verificare la disponibilità di un appartamento nell'insediamento turistico richiesto e nella settimana desiderata. Al contrario, quando un cliente decide di vendere la propria settimana di soggiorno, la società deve prendere atto della volontà di vendere e del prezzo chiesto, e deve aggiungere la settimana in vendita fra quelle da vendere, al prezzo richiesto e non a quello della società.
Un cliente, una volta acquisito il diritto di soggiorno in un appartamento per una determinata settimana, può inoltrare una richiesta per permutare la sua settimana con quella di un altro cliente, specificando l'insieme di località e di settimane di gradimento. Nel caso non si dovesse trovare nessuna "nuova settimana" in grado di soddisfare le richieste, l'offerta di scambio resta valida fino a trenta giorni prima dall'inizio del soggiorno effettivamente acquistato.
Un cliente può, anche, decidere di affittare la propria settimana, inoltrando richiesta e canone d'affitto. La società deve compilare una lista di settimane "affittabili" e renderla disponibile alla clientela.
E' richiesto il diagramma di contesto, un numero adeguato di diagrammi di flusso dei dati, per rappresentare il problema ad un livello d'astrazione adeguato, le viste e lo schema entità-relazione integrato.
 

Soluzione Database Multiproprietà

USE multiproprieta;
 
 CREATE TABLE `clienti` (
  `Id_Cliente` int(10) unsigned NOT NULL default '0',
  `Nome` varchar(40) NOT NULL default '',
  `Cognome` varchar(40) NOT NULL default '',
  PRIMARY KEY  (`Id_Cliente`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

#
# Dumping data for table clienti
#

INSERT INTO `clienti` VALUES (1,'Mario','Rossi');
INSERT INTO `clienti` VALUES (2,'Maria','Bianchi');
INSERT INTO `clienti` VALUES (3,'Carlo','Verdi');

#
# Table structure for table immobili
#

CREATE TABLE `immobili` (
  `Id_Immobile` int(10) unsigned NOT NULL default '0',
  `Metri_quadrati` smallint(6) NOT NULL default '0',
  `Tipologia` enum('lusso','medio','spartano') default NULL,
  `Id_Insediamento` int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (`Id_Immobile`),
  KEY `Id_Insediamento` (`Id_Insediamento`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

#
# Dumping data for table immobili
#

INSERT INTO `immobili` VALUES (1,100,'lusso',1);
INSERT INTO `immobili` VALUES (2,80,'medio',1);
INSERT INTO `immobili` VALUES (3,120,'lusso',2);
INSERT INTO `immobili` VALUES (4,70,'medio',3);

#
# Table structure for table insediamenti
#

CREATE TABLE `insediamenti` (
  `Id_Insediamento` int(10) unsigned NOT NULL default '0',
  `Id_Localita` int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (`Id_Insediamento`),
  KEY `Id_Localita` (`Id_Localita`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

#
# Dumping data for table insediamenti
#

INSERT INTO `insediamenti` VALUES (1,1);
INSERT INTO `insediamenti` VALUES (2,1);
INSERT INTO `insediamenti` VALUES (3,2);

#
# Table structure for table localita
#

CREATE TABLE `localita` (
  `Id_Localita` int(10) unsigned NOT NULL default '0',
  `Nome_Localita` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`Id_Localita`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

#
# Dumping data for table localita
#

INSERT INTO `localita` VALUES (1,'Savona');
INSERT INTO `localita` VALUES (2,'Rapallo');

#
# Table structure for table periodi
#

CREATE TABLE `periodi` (
  `Id_Periodo` int(10) unsigned NOT NULL default '0',
  `Periodo` enum('inverno','primavera','estate','autunno') default NULL,
  PRIMARY KEY  (`Id_Periodo`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

#
# Dumping data for table periodi
#

INSERT INTO `periodi` VALUES (1,'inverno');
INSERT INTO `periodi` VALUES (2,'primavera');
INSERT INTO `periodi` VALUES (3,'estate');
INSERT INTO `periodi` VALUES (4,'autunno');

#
# Table structure for table prezzi
#

CREATE TABLE `prezzi` (
  `Id_Prezzo` int(10) unsigned NOT NULL default '0',
  `Coefficiente_Prezzo` float NOT NULL default '0',
  `Id_Localita` int(10) unsigned NOT NULL default '0',
  `Id_Periodo` int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (`Id_Prezzo`),
  KEY `Id_Localita` (`Id_Localita`),
  KEY `Id_Periodo` (`Id_Periodo`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

#
# Dumping data for table prezzi
#

INSERT INTO `prezzi` VALUES (1,1,1,1);
INSERT INTO `prezzi` VALUES (2,1.5,1,2);
INSERT INTO `prezzi` VALUES (3,2,2,3);
INSERT INTO `prezzi` VALUES (4,1.2,2,4);

#
# Table structure for table proprieta
#

CREATE TABLE `proprieta` (
  `Id_Proprieta` int(10) unsigned NOT NULL default '0',
  `Prezzo_Vendita` decimal(8,2) default NULL,
  `Prezzo_Affitto` decimal(8,2) default NULL,
  `Id_Immobile` int(10) unsigned NOT NULL default '0',
  `Id_Cliente_Proprieta` int(10) unsigned NOT NULL default '0',
  `Id_Cliente_Affitto` int(10) unsigned default NULL,
  PRIMARY KEY  (`Id_Proprieta`),
  KEY `Id_Immobile` (`Id_Immobile`),
  KEY `Id_Cliente_Proprieta` (`Id_Cliente_Proprieta`),
  KEY `Id_Cliente_Affitto` (`Id_Cliente_Affitto`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

#
# Dumping data for table proprieta
#

INSERT INTO `proprieta` VALUES (1,NULL,NULL,1,1,NULL);
INSERT INTO `proprieta` VALUES (2,NULL,NULL,2,2,NULL);
INSERT INTO `proprieta` VALUES (3,NULL,NULL,3,2,NULL);
INSERT INTO `proprieta` VALUES (4,NULL,NULL,4,3,NULL);

#
# Table structure for table scambi
#

CREATE TABLE `scambi` (
  `Id_Scambi` int(10) unsigned NOT NULL auto_increment,
  `Id_Proprieta1` int(10) unsigned NOT NULL default '0',
  `Id_Proprieta2` int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (`Id_Scambi`),
  KEY `Id_Proprieta1` (`Id_Proprieta1`),
  KEY `Id_Proprieta2` (`Id_Proprieta2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

#
# Dumping data for table scambi
#


#
# Table structure for table settimane
#

CREATE TABLE `settimane` (
  `Id_Settimana` int(10) unsigned NOT NULL default '0',
  `Id_Periodo` int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (`Id_Settimana`),
  KEY `Id_Periodo` (`Id_Periodo`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

#
# Dumping data for table settimane
#

INSERT INTO `settimane` VALUES (1,1);
INSERT INTO `settimane` VALUES (2,1);
INSERT INTO `settimane` VALUES (3,1);
INSERT INTO `settimane` VALUES (4,1);
INSERT INTO `settimane` VALUES (5,1);
INSERT INTO `settimane` VALUES (6,2);
INSERT INTO `settimane` VALUES (7,2);
INSERT INTO `settimane` VALUES (8,3);
INSERT INTO `settimane` VALUES (9,3);
INSERT INTO `settimane` VALUES (10,3);
INSERT INTO `settimane` VALUES (11,4);
INSERT INTO `settimane` VALUES (12,4);

#
# Table structure for table settimane_proprieta
#

CREATE TABLE `settimane_proprieta` (
  `Id_Settimane` int(10) unsigned NOT NULL default '0',
  `Id_Proprieta` int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (`Id_Settimane`,`Id_Proprieta`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

#
# Dumping data for table settimane_proprieta
#

INSERT INTO `settimane_proprieta` VALUES (1,1);
INSERT INTO `settimane_proprieta` VALUES (1,2);
INSERT INTO `settimane_proprieta` VALUES (2,1);
INSERT INTO `settimane_proprieta` VALUES (2,2);
INSERT INTO `settimane_proprieta` VALUES (3,1);
INSERT INTO `settimane_proprieta` VALUES (3,2);
INSERT INTO `settimane_proprieta` VALUES (4,2);
INSERT INTO `settimane_proprieta` VALUES (7,4);
INSERT INTO `settimane_proprieta` VALUES (8,4);
INSERT INTO `settimane_proprieta` VALUES (10,3);
INSERT INTO `settimane_proprieta` VALUES (11,3);

#
#  Foreign keys for table immobili
#

ALTER TABLE `immobili`
  ADD FOREIGN KEY (`Id_Insediamento`) REFERENCES `insediamenti` (`Id_Insediamento`);

#
#  Foreign keys for table insediamenti
#

ALTER TABLE `insediamenti`
  ADD FOREIGN KEY (`Id_Localita`) REFERENCES `localita` (`Id_Localita`);

#
#  Foreign keys for table prezzi
#

ALTER TABLE `prezzi`
  ADD FOREIGN KEY (`Id_Localita`) REFERENCES `localita` (`Id_Localita`),
  ADD FOREIGN KEY (`Id_Periodo`) REFERENCES `periodi` (`Id_Periodo`);

#
#  Foreign keys for table proprieta
#

ALTER TABLE `proprieta`
  ADD FOREIGN KEY (`Id_Immobile`) REFERENCES `immobili` (`Id_Immobile`),
  ADD FOREIGN KEY (`Id_Cliente_Proprieta`) REFERENCES `clienti` (`Id_Cliente`),
  ADD FOREIGN KEY (`Id_Cliente_Affitto`) REFERENCES `clienti` (`Id_Cliente`);

#
#  Foreign keys for table scambi
#

ALTER TABLE `scambi`
  ADD FOREIGN KEY (`Id_Proprieta1`) REFERENCES `proprieta` (`Id_Proprieta`),
  ADD FOREIGN KEY (`Id_Proprieta2`) REFERENCES `proprieta` (`Id_Proprieta`);

#
#  Foreign keys for table settimane
#

ALTER TABLE `settimane`
  ADD FOREIGN KEY (`Id_Periodo`) REFERENCES `periodi` (`Id_Periodo`);

Commenti

Post popolari in questo blog

Simulazioni di reti (con Cisco Packet Tracer)

Esercizi sulla rappresentazione della virgola mobile IEEE 754 (Floating Point)