Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Esercizi di database svolti SQL, Dispense di Database Relazionali

modello concettuale, logico, sql

Tipologia: Dispense

2022/2023

In vendita dal 25/09/2023

carla-boscolo
carla-boscolo 🇮🇹

4.5

(13)

520 documenti

1 / 63

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Programmazione cinematografica
1) Definire uno schema Entity-Relationship che descriva i dati di una
applicazione relativa alla programmazione cinematografica nei cinema.
Nei cinema vengono proiettati film che hanno un regista e degli attori.
Sono di interesse:
• per i film il titolo, il genere, il regista, la durata (in minuti), la data di
uscita
• per i cinema il nome, la città, l’indirizzo, numero posti
• per gli attori il nome, il cognome, la data di nascita, la nazionalità
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f

Anteprima parziale del testo

Scarica Esercizi di database svolti SQL e più Dispense in PDF di Database Relazionali solo su Docsity!

Programmazione cinematografica

  1. Definire uno schema Entity-Relationship che descriva i dati di una applicazione relativa alla programmazione cinematografica nei cinema. Nei cinema vengono proiettati film che hanno un regista e degli attori. Sono di interesse:
  • per i film il titolo, il genere, il regista, la durata (in minuti), la data di uscita
  • per i cinema il nome, la città, l’indirizzo, numero posti
  • per gli attori il nome, il cognome, la data di nascita, la nazionalità
  • per i registi il nome, il cognome, la data di nascita, la nazionalità Inoltre:
  • ogni film ha uno e un solo regista
  • ogni film ha zero o più attori

film (idFilm, titolo, genere, durata, dataUscita) registi (idRegista, nome, cognome, dataNascita, nazionalita, idFilm) attori (idAttori, nome, cognome, dataNascita, nazionalita) cinema(idCinema, nome, citta, indirizzo, numPosti) programmato(idFilm, idCinema) interpreta(idFilm, idAttori*)

  1. Implementare le relazioni (tabelle) in SQL. CREAZIONE TABELLE CREATE TABLE film( idFilm int(1) NOT NULL AUTO_INCREMENT PRIMARY KEY, titolo varchar(150) NOT NULL, genere varchar(150) NOT NULL, durata time NOT NULL, dataUscita date NOT NULL ); CREATE TABLE registi( idRegista int(1) NOT NULL AUTO_INCREMENT PRIMARY KEY, nome varchar(150) NOT NULL, cognome varchar(150) NOT NULL,

dataNascita date NOT NULL, nazionalita varchar(150) NOT NULL, idFilm int(1), FOREIGN KEY (idFilm) REFERENCES film(idFilm ) ON DELETE restrict ON UPDATE cascade ); create table attori( idAttori int(1) NOT NULL AUTO_INCREMENT PRIMARY KEY, nome varchar(150) NOT NULL, cognome varchar(150) NOT NULL, dataNascita date NOT NULL, nazionalita varchar(150) NOT NULL ); create table cinema( idCinema int(1) NOT NULL AUTO_INCREMENT PRIMARY KEY, nome varchar(150) NOT NULL, citta varchar(150) NOT NULL, indirizzo varchar(150) NOT NULL, numPosti int(3) NOT NULL ); create table programmato( idFilm int(1), idCinema int(1), FOREIGN KEY (idFilm) REFERENCES film(idFilm), FOREIGN KEY (idCinema) REFERENCES cinema(idCinema) ON DELETE restrict ON UPDATE cascade ); create table interpreta( idFilm int(1), idAttori int(1), FOREIGN KEY (idFilm) REFERENCES film(idFilm), FOREIGN KEY (idAttori ) REFERENCES attori(idAttori) ON DELETE restrict ON UPDATE cascade ); INSERIMENTO DATI INSERT INTO attori(nome, cognome, dataNascita, nazionalita) VALUES ('Chris', 'Columbus', '1925-10-12', 'americana'), ('Amanda', 'Rossi', '1955-11-19', 'spagnola'), ('Anna', 'Magnani', '1985-10-18', 'tedesca'), ('Ciro', 'Esposito', '2005-05-08', 'italiana');

INSERT INTO programmato(idFilm, idCinema) VALUES ('1', '2'), ('3', '1'), ('2','3'); INSERT INTO interpreta(idFilm, idAttori) VALUES ('2', '1'), ('3', '2'), ('1','3') ('4', '1'), ('4', '3');

  1. Risolvere le seguenti interrogazioni in SQL: a. Determinare, per la città di Torino, il titolo dei film e il nome dei cinema dove i film sono proiettati il 25 dicembre 2013. select f.titolo, f.dataUscita, c.nome, c.citta from cinema as c, film as f, programmato as p where c.citta = 'Torino' AND p.idFilm = f.idFilm AND p.idCinema = c.idCinema AND f.dataUscita ='2013-12-25'

b. Trovare titolo e genere di tutti i film diretti da Spielberg. select f.titolo, f.genere, r.cognome from film as f, registi as r where r.cognome = 'Spielberg' AND r.idFilm = f.idFilm c. Trovare titolo e genere di tutti i film nei quali ha recitato l’attrice Anna Magnani. select f.titolo, f.genere, a.nome, a.cognome from film as f, attori as a, interpreta as i where a.nome = 'Anna' AND a.cognome = 'Magnani' AND i.idAttori=a.idAttori d. Per ogni film di genere horror, calcolare il numero di attori che vi recitano. select f.titolo, f.genere, a.nome, a.cognome from film as f, attori as a, interpreta as i where i.idAttori=a.idAttori AND i.idFilm = f.idFilm AND f.genere = 'horror'

PROIEZIONI CINEMATOGRAFICHE

cinema.sql -- phpMyAdmin SQL Dump -- version 5.1. -- https://www.phpmyadmin.net/ -- -- Host: 127.0.0. -- Creato il: Dic 16, 2021 alle 10: -- Versione del server: 10.4.22-MariaDB -- Versione PHP: 7.3. SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT /; /!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS /; /!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION /; /!40101 SET NAMES utf8mb4 */; -- -- Database: cinema --


-- -- Struttura della tabella attori -- CREATE TABLE attori ( idAttori int(1) NOT NULL, nome varchar(150) NOT NULL, cognome varchar(150) NOT NULL, dataNascita date NOT NULL, nazionalita varchar(150) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- -- Dump dei dati per la tabella attori -- INSERT INTO attori (idAttori, nome, cognome, dataNascita, nazionalita) VALUES (1, 'Chris', 'Columbus', '1925-10-12', 'americana'), (2, 'Amanda', 'Rossi', '1955-11-19', 'spagnola'), (3, 'Anna', 'Magnani', '1985-10-18', 'tedesca'),

(4, 'Ciro', 'Esposito', '2005-05-08', 'italiana');


-- -- Struttura della tabella cinema -- CREATE TABLE cinema ( idCinema int(1) NOT NULL, nome varchar(150) NOT NULL, citta varchar(150) NOT NULL, indirizzo varchar(150) NOT NULL, numPosti int(3) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- -- Dump dei dati per la tabella cinema -- INSERT INTO cinema (idCinema, nome, citta, indirizzo, numPosti) VALUES (1, 'Uci', 'Torino', 'Via Nizza', 50), (2, 'The Space', 'Torino', 'Via Michelangelo', 80), (3, 'Movie Planet', 'Roma', 'Via Milanese', 20);


-- -- Struttura della tabella film -- CREATE TABLE film ( idFilm int(1) NOT NULL, titolo varchar(150) NOT NULL, genere varchar(150) NOT NULL, durata time NOT NULL, dataUscita date NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- -- Dump dei dati per la tabella film -- INSERT INTO film (idFilm, titolo, genere, durata, dataUscita) VALUES (1, 'Harry Potter', 'fantasy', '00:01:50', '2013-12-25'), (2, 'Fast & Furios', 'corsa', '00:02:10', '2005-10-12'), (3, 'Big Hero 6', 'cartone', '00:01:30', '2011-10-12'), (4, 'Saul', 'horror', '00:01:50', '2005-12-25');

cognome varchar(150) NOT NULL, dataNascita date NOT NULL, nazionalita varchar(150) NOT NULL, idFilm int(1) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- -- Dump dei dati per la tabella registi -- INSERT INTO registi (idRegista, nome, cognome, dataNascita, nazionalita, idFilm) VALUES (1, 'JK', 'Rowling', '1966-12-10', 'inglese', 1), (2, 'Pietro', 'Ecola', '1989-05-12', 'italiana', 2), (3, 'Lawren', 'Spielberg', '1977-12-10', 'inglese', 3); -- -- Indici per le tabelle scaricate -- -- -- Indici per le tabelle attori -- ALTER TABLE attori ADD PRIMARY KEY (idAttori); -- -- Indici per le tabelle cinema -- ALTER TABLE cinema ADD PRIMARY KEY (idCinema); -- -- Indici per le tabelle film -- ALTER TABLE film ADD PRIMARY KEY (idFilm); -- -- Indici per le tabelle interpreta -- ALTER TABLE interpreta ADD KEY idFilm (idFilm), ADD KEY idAttori (idAttori); -- -- Indici per le tabelle programmato -- ALTER TABLE programmato ADD KEY idFilm (idFilm), ADD KEY idCinema (idCinema);

-- Indici per le tabelle registi

ALTER TABLE registi ADD PRIMARY KEY (idRegista), ADD KEY idFilm (idFilm); -- -- AUTO_INCREMENT per le tabelle scaricate -- -- -- AUTO_INCREMENT per la tabella attori -- ALTER TABLE attori MODIFY idAttori int(1) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5; -- -- AUTO_INCREMENT per la tabella cinema -- ALTER TABLE cinema MODIFY idCinema int(1) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4; -- -- AUTO_INCREMENT per la tabella film -- ALTER TABLE film MODIFY idFilm int(1) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5; -- -- AUTO_INCREMENT per la tabella registi -- ALTER TABLE registi MODIFY idRegista int(1) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4; -- -- Limiti per le tabelle scaricate -- -- -- Limiti per la tabella interpreta -- ALTER TABLE interpreta ADD CONSTRAINT interpreta_ibfk_1 FOREIGN KEY (idFilm) REFERENCES film (idFilm), ADD CONSTRAINT interpreta_ibfk_2 FOREIGN KEY (idAttori) REFERENCES attori (idAttori) ON UPDATE CASCADE; -- -- Limiti per la tabella programmato

Archivio

Centro Commerciale

DA MODELLO CONCETTUALE AL

MODELLO LOGICO

1 SCRIVO LE ENTITA’ 1

2 SCRIVO LE ASSOCIAZIONI 1

1 SCRIVO LE ENTITA’

Centro (codC, indirizzo, telefono) Data (dataInizio) Impiegati (codFisc, nome, recapito, titoloStudio) Settore (codS) Film (regista, titolo, costoNol, Anno) Distributore (codD, nome, indirizzo)

2 SCRIVO LE ASSOCIAZIONI

Centro (codC, indirizzo, telefono) Data (dataInizio) Impiegati (codFisc, nome, recapito, titoloStudio) Settore (codS, codC) Film (regista, titolo, costoNol, Anno) Distributore (codD, nome, indirizzo) DistribuitoDA (codD, [regista, titolo]*, costo)

LavoraIn (codFisc, codC, dataFine, Carica) Collocazione (codS, [regista, titolo], posizione, copie) remakeDi ( [regista, titolo]*) Ricorsiva -> si associa a se stessa 1,N A 1,N -> ENTITA’ ASSOCIAZIONE N A 1 O 1 A N -> IDENTIFICATIVO DI N VA MESSO DAL LATO 1 0 A 0 -> CREA ALTRA ENTITA’ SE SI VENGONO A CREARE TROPPI VALORI NULLI 1 A 1 -> SCELGO DOVE VOGLIO METTERE LA CHIAVE ESTERNA