Lo schema logico traduce ogni elemento del diagramma E-R in tabelle relazionali, seguendo regole precise.
Ogni entità diventa una tabella. Il nome della tabella è al plurale per convenzione.
Studente → studenti (id_studente (pk), nome, cognome, data_nascita)
Corso → corsi (id_corso (pk), nome_corso, crediti)
Docente → docenti (id_docente (pk), nome, cognome, email)
La tabella del lato “molti” acquisisce la PK del lato “uno” come chiave esterna.
-- Docente (1) insegna (N) Corsi
corsi (id_corso (pk), nome_corso, crediti, id_docente (fk))
Si crea una nuova tabella con la PK di entrambe le entità come chiave primaria composta. Gli eventuali attributi della relazione diventano colonne di questa tabella.
-- Studente (N) si iscrive a (N) Corso, con attributo "voto"
iscrizioni (id_studente (fk), id_corso (fk), voto, data_iscrizione)
PK: (id_studente, id_corso)
Si uniscono le due entità in una sola tabella, oppure si mette la FK nella tabella con partecipazione parziale (min = 0).
-- Persona (1,1) possiede (0,1) Passaporto → la FK va in Passaporto
passaporti (id_passaporto (pk), numero, scadenza, id_persona (fk) UNIQUE)
-- indirizzo (via, civico, CAP, città) diventa:
via VARCHAR(100), numero_civico VARCHAR(10), CAP CHAR(5), città VARCHAR(50)
-- lingue_parlate (attributo multivalore di Persona) diventa:
lingue_persona (id (pk), id_persona (fk), lingua VARCHAR(50))
scuole (id_scuola (pk), nome_scuola, città, indirizzo)
docenti (id_docente (pk), nome, cognome, email)
corsi (id_corso (pk), nome_corso, crediti, id_scuola (fk), id_docente (fk))
studenti (id_studente (pk), nome, cognome, data_nascita, email)
iscrizioni (id_studente (fk), id_corso (fk), voto, data_iscrizione)
PK: (id_studente, id_corso)