
Originariamente inviata da
nman
Allora diventa una classica e semplice relazione "Uno a Molti" dove ogni "Officina" pesca il suo unico "Dirigente" nella tabella dei "Dipendenti" al campo "CF"
in pratica devi eliminare nel tuo codice il "Alter Table" che hai messo in fondo e poi tutto dovrebbe sistemarsi
nel senso che
- innanzitutto popoli la tabella "Dipendenti"
- poi popoli la tabella "Officina"
.
Ma in questo modo in dipendenti poprei aggiungere una persone con un'officina che non esiste non esiste referenziazione.
Avrei pensato a questa soluzione:
codice:
create table if not exists Officina (
nome varchar (45) primary key,
via varchar (25) not null,
nciv varchar (5) default 0,
citta varchar (15) not null,
cap varchar (5) not null,
ndip numeric (3) default 1
);
create table if not exists Dipendente (
CF varchar (16) primary key,
via varchar (25) not null,
nciv varchar (5) default 0,
citta varchar (15) not null,
cap varchar (5) not null,
officina varchar (45),
foreign key (Officina) references Officina (nome)
);
create table if not exists direzione (
officina varchar (45),
dipendente varchar (16),
primary key (officina, dipendente),
foreign key (officina) references Officina (nome),
foreign key (dipendente) references Dipendente (cf)
);
Sembra funzionare, ma volevo sapere se esisteva qualche soluzione alternativa, magari migliore.