Daniele di Daniele
Blogger 27611 punti

Il diagramma E/R è formato da 3 Entità, Abbonato, Pubblicazione, PuntoVendita, le relazioni sono
N a M (Molti a Molti) per entrambe e sono Pubblicazione inviata a abbonato (+ pubblicazioni a + abbonati ) e Pubblicazionne fornita a Punto Vendita (+ pubblicazioni a + punti vendita)! E' solo la pratica, e riguarda solo il punto A con i codici MySql, per il PHP della pagina del sito, non è inserito.

create table Abbonato(
Id integer AUTO_INCREMENT,
Nome varchar(20) NOT NULL,
Cognome varchar(20) NOT NULL,
indirizzo varchar(80) NOT NULL,
nazione varchar(20) NOT NULL,
sesso char(2) NOT NULL CHECK VALUE IN('M','F'),
tel varchar(20) NOT NULL,
email varchar(20) NOT NULL,
primary key(Id)
);

create table pubblicazione(
id integer AUTO_INCREMENT,
titolo varchar(20) NOT NULL,
periodicita varchar(20) NOT NULL CHECK VALUE IN('quindicinale','mensile', 'bimestrale','semestrale'),

ambito varchar(20) NOT NULL,
costo decimal(3,2) NOT NULL CHECK (costo >0),
primary key(id)
);


create table Inviata_a(
id_pubblicazione integer NOT NULL,
id_abbonato integer NOT NULL,
data_inizio date NOT NULL,
data_fine date NOT NULL,
durata varchar(25) NOT NULL CHECK VALUE IN('annuale','triennale'),
foreign key(id_pubblicazione) references Pubblicazione(id),
foreign key(id_abbonato) references Abbonato(id)
);

create table punto_vendita(
id integer AUTO_INCREMENT,
Nome varchar(20) NOT NULL,
indirizzo varchar(80) NOT NULL,
nazione varchar(20) NOT NULL,
tel varchar(20) NOT NULL,
email varchar(20) NOT NULL,
primary key(id)
);

create table fornita_a(
id_punto integer,
id_pubblicazione integer,
data date NOT NULL,
foreign key(id_punto) references punto_vendita(id),
foreign key(id_pubblicazione) references pubblicazione(id)
);

Insert into abbonato values
(01,’maria','sabarese','via gari n.8 SA’,’Italia’,’F’,’12344’,’mar@www.it’),
(02,’patty','sabarese','via garibb n.45 BS’,’Italia’,’F’,’55544’,’ffr@ytty.it’),
(03,’pippo','rossi','via abc n.11 MI’,’Italia’,’M’,’12344’,’pippo@ddd.it’),
(04,’mara','sabse','via ghiii n.12 FG’,’Italia’,’F’,’12344’,’mar_12@www.it’),

(05,’marcosa','sabste','via ghiii n.12 Madrid’,’Spagna’,’F’,’12344’,’mar_12@www.it’);

Insert into pubblicazione values
(011,‘Info creativa’, ‘quindicinale’,’tecnologico’,1.0),
(012,‘chimica Industriale’, ‘bimestrale’,’chimica industriale’,2.5),
(013,‘mat mat’, ‘annuale’,’matematico’,7.0),
(014,‘letterArte’, ‘bimestrale’,’letterario’,1.0);

Insert into inviata_a values
(014, 01, ‘2009-03-12’, ‘2010-03-12’, ‘annuale’),
(012, 02, ‘2008-10-24’, ‘2011-10-24’, ‘triennale’),
(012, 04, ‘2009-06-12’, ‘2010-06-12’, ‘annuale’),
(012, 03, ‘2009-06-10’, ‘2010-06-10’, ‘annuale’),
(011, 03, ‘2009-11-12’, ‘2010-11-12’, ‘annuale’),
(013, 01, ‘2007-03-15’, ‘2010-03-15’, ‘triennale’),
(014, 02, ‘2009-03-12’, ‘2010-03-12’, ‘annuale’);

Insert into punto_vendita values
(0111, ’Politecnico’, ’via dei mille n.6 To’, ’Italia’, ’12345’, ’ere@idf.to.it’),
(0112, ’Politecnico’, ’via garibaldi n.8 Mi’, ’Italia’, ’1222’, ’mi@idf.mo’),
(0113, ’CNR’, ’via bolleht n.4 Paris’, ’Francia’, ’846545’, ’ere@idf.fr’),
(0114, ’Studies’, ’via illech n.116 Nizza’, ’Francia’, ’12454345’, ’ere@ieee.fr’),

(0115, ’Politecnico’, ’via vebeto n.106 Rm’, ’Italia’, ’2332345’, ’ere@idf.it’);


Insert into fornita_a values
(0111, 011,’2008-06-12’),
(0112, 012,’2008-10-22’),
(0114, 012, ’2008-06-10’),
(0115, 013, ’2009-11-12’),
(0112, 011,’2008-03-22’),
(0114, 011, ’2009-04-11’),
(0115, 014, ’2009-11-12’);

1
SELECT Abbonato.nome, Abbonato.cognome, Abbonato.tel
FROM Abbonato
WHERE sesso='F' AND nazione='Spagna';

2
SELECT Pubblicazione.titolo, ambito, Abbonato.nome, Abbonato.cognome, Abbonato.email, data_fine
FROM pubblicazione,inviata_a,abbonato
WHERE pubblicazione.id = inviata_a.id_pubblicazione AND
abbonato.id=inviata_a.id_abbonato AND
month(data_inizio)=06 AND
year(data_inizio)=2009;

3
SELECT punto_vendita.nome, punto_vendita.indirizzo, punto_vendita.tel
FROM punto_vendita, pubblicazione, fornita_a
WHERE pubblicazione.id = fornita_a.id_pubblicazione AND
punto_vendita.id=fornita_a.id_punto AND
year(data)=2008 AND
ambito='chimica industriale' AND
periodicita='bimistrale';

4
SELECT count(*)
FROM punto_vendita, fornita_a
WHERE punto_vendita.id=fornita_a.id_punto AND
punto_vendita.nome='politecnico' AND
punto_vendita.indirizzo LIKE '%_TO' AND
year(now())=year(fornita_a.data);

Registrati via email