Relazione tecnica Progetto Cinema

Relazione tecnica
Progetto Cinema
A cura di Luca Raj
VD
A.S. 2014/2015
Traccia:
Crea un database che permetta la raccolta dell’informazioni riguardanti gli attori (con il relativo
codice, nome, anno di nascita e nazionalità), i film(codice film, titolo, codice sala, incasso, data
proiezione), le relative sale dove si trasmette il film (codice sala, posti, nome, città) e infine
sapendo che la proiezione deve indicare anche data proiezione, incasso, codice proiezione.
Definizione schema concettuale:
Leggendo attentamente il testo notiamo alcune relazioni:
1)Un attore può recitare in più film, e in un film possono recitare più attori.
2)Un film può essere proiettato in più sale, e una sala può proiettare più film in date diverse.
Il modello concettuale presenterà le seguenti entità:
 Attori
 Sale
 Film
Presenterà le seguenti relazioni
 Recita (che relaziona le due entità attori e film)
 Proiezione (che relaziona le due entità sale e film)
Le tabelle quindi presenti nel database saranno, oltre alle tre entità, anche le due relazioni, in
quanto la relazione tra le entità sono tutte relazione molti a molti, quindi serve un aggiungere una
tabella contenente le due chiavi primarie (eccezione per la relazione proiezioni, poiché conterrà
anche tre attributi, CodProiezione, Incasso, DataProiezione)
Schema logico:
Attori
(1,N)
Recita
Proiezione
(1,N)
(1,N)
Sale
Film
La relazione presente tra attori e film è di tipo N:M (molti a molti)
La relazione presente tra sale e film è di tipo N:M (molti a molti)
Listing mysql:
CREATE DATABASE cinema;
USE database cinema;
CREATE TABLE IF NOT EXISTS `attori` (
`Codatt` varchar(5) NOT NULL,
`Cognome` varchar(20) DEFAULT NULL,
`Annon` varchar(4) DEFAULT NULL,
`Nazionalita` varchar(10) DEFAULT NULL,
PRIMARY KEY (`Codatt`)
) ENGINE=InnoDB
INSERT INTO `attori` (`Codatt`, `Cognome`, `Annon`, `Nazionalita`) VALUES
('00001', 'Willis', '1960', 'USA'),
('01', 'Willis Bruce', '1952', 'Stati Unit');
CREATE TABLE IF NOT EXISTS `film` (
`Codfilm` varchar(5) NOT NULL,
`Titolo` varchar(20) DEFAULT NULL,
`Annopr` varchar(4) DEFAULT NULL,
`Nazione` varchar(10) DEFAULT NULL,
`Regista` varchar(20) DEFAULT NULL,
`Genere` varchar(10) DEFAULT NULL,
PRIMARY KEY (`Codfilm`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `proiezioni` (
`Codpro` int(11) NOT NULL AUTO_INCREMENT,
`Codfilm` varchar(5) DEFAULT NULL,
`Codsala` varchar(5) DEFAULT NULL,
`Incasso` float DEFAULT NULL,
`Datapro` varchar(10) DEFAULT NULL,
PRIMARY KEY (`Codpro`),
KEY `Codfilm` (`Codfilm`),
KEY `Codsala` (`Codsala`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `recita` (
`Codatt` varchar(5) NOT NULL DEFAULT '',
`Codfilm` varchar(5) NOT NULL DEFAULT '',
PRIMARY KEY (`Codatt`,`Codfilm`),
KEY `Codfilm` (`Codfilm`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `sale` (
`Codsala` varchar(5) NOT NULL,
`Nome` varchar(20) DEFAULT NULL,
`Numpos` int(11) DEFAULT NULL,
`Localita` varchar(10) DEFAULT NULL,
PRIMARY KEY (`Codsala`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `proiezioni`
ADD CONSTRAINT `proiezioni_ibfk_1` FOREIGN KEY (`Codfilm`) REFERENCES `film` (`Codfilm`) ON
DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `proiezioni_ibfk_2` FOREIGN KEY (`Codsala`) REFERENCES `sale` (`Codsala`) ON
DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `recita`
ADD CONSTRAINT `recita_ibfk_1` FOREIGN KEY (`Codatt`) REFERENCES `attori` (`Codatt`) ON
DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `recita_ibfk_2` FOREIGN KEY (`Codfilm`) REFERENCES `film` (`Codfilm`) ON
DELETE CASCADE ON UPDATE CASCADE;