create table Corso ( Codice varchar2(10) not null, Nome varchar2(40) not null, primary key(Codice)) TABLESPACE USERS STORAGE (INITIAL 8K NEXT 4K PCTINCREASE 0); create table Studente ( Matricola varchar2(10) primary key, Nome varchar2(15) not null, Cognome varchar2(25) not null) TABLESPACE USERS STORAGE (INITIAL 8K NEXT 4K PCTINCREASE 0); REM Indizione e` inglobata in Appello. REM L'attributo Corso appena aggiunto non deve essere UNIQUE, perche` la relazione e` (1,N). REM L'attributo Corso e` not null perche` e` a partecipazione obbligatoria. create table Appello ( Corso varchar2(10) not null, DataEsame date not null, primary key (Corso,DataEsame), foreign key (Corso) references Corso (Codice)) TABLESPACE USERS STORAGE (INITIAL 8K NEXT 4K PCTINCREASE 0); create table Prenotazione ( Studente varchar2(10) not null, AppelloCorso varchar2(10) not null, AppelloDataEsame date not null, Data date, primary key(Studente,AppelloCorso,AppelloDataEsame), foreign key (Studente) references Studente(Matricola), foreign key (AppelloCorso,AppelloDataEsame) references Appello(Corso,DataEsame), check(Data <= AppelloDataEsame)) TABLESPACE USERS STORAGE (INITIAL 8K NEXT 4K PCTINCREASE 0); insert into Corso values ('A1', 'Analisi I'); insert into Corso values ('A2', 'Analisi II'); insert into Corso values ('BDS', 'Basi di dati - sperimentazioni'); insert into Corso values ('BDF', 'Basi di dati - fondamenti'); insert into Corso values ('LF', 'Linguaggi formali'); insert into Corso values ('PRG', 'Programmazione'); insert into Corso values ('IUM', 'Interazione uomo macchina'); insert into Studente (Matricola, Nome, Cognome) values ('99000', 'Silvio', 'Berlusconi'); insert into Studente (Nome, Cognome, Matricola) values ('Francesco', 'Rutelli', '99001'); insert into Studente values ('99002', 'Gianfranco', 'Fini'); insert into Studente values ('99003', 'Rocco', 'Buttiglione'); insert into Studente values ('00001', 'Ferdinando', 'Casini'); insert into Studente values ('00002', 'Rosy', 'Bindi'); insert into Studente values ('00005', 'Enrico', 'Berlinguer'); insert into Studente values ('98005', 'Marco', 'Taradash'); insert into Studente values ('98002', 'Marco', 'Pannella'); insert into Studente values ('99005', 'Livia', 'Turco'); insert into Appello values ('A2' , '04-DEC-01'); insert into Appello values ('LF' , '27-JUL-01'); insert into Appello values ('LF' , '04-DEC-01'); insert into Appello values ('BDF', '04-DEC-01'); insert into Appello values ('BDF', '18-JAN-02'); insert into Appello values ('BDF', '18-MAR-02'); insert into Prenotazione values ('99000','BDF' ,'04-DEC-01','03-NOV-01'); insert into Prenotazione values ('99000','BDF' ,'18-JAN-02','15-JAN-02'); insert into Prenotazione values ('99001','BDF' ,'18-MAR-02','10-FEB-02'); insert into Prenotazione values ('99003','A2' ,'04-DEC-01','03-NOV-01'); insert into Prenotazione values ('99003','LF' ,'04-DEC-01','10-NOV-01'); insert into Prenotazione values ('99003','BDF' ,'18-MAR-02','20-JAN-02'); REM------------- creo dei valori NULL in prenotazione: REM------------- dico che non conosco la data di prenotazione. REM------------- NOTA: non violo il vincolo in Prenotazione! update prenotazione set Data=NULL where Studente='99003';