Introduzione
Obiettivo: generare lo schema relazionale (con vincoli) per la base dati partendo dal diagramma delle classi UML ristrutturato.
Metodologia:
- Ogni classe si traduce in una tabella relazionale
- Ogni associazione si traduce in una tabella relazionale più vincoli di foreign key (oppure si accorpa nella tabella che traduce una delle classi coinvolte)
- I vincoli di molteplicità dei ruoli di associazione si traducono in vincoli di chiave, foreign key, o in vincoli esterni (solitamente vincoli di inclusione).
La difficoltà più grande consiste nel saper gestire le molteplicità delle associazioni.
- Classi senza Molteplicità
- Molteplicità senza vincoli
- Vincoli di molteplicità massima 1
- Vincoli di molteplicità minima 1
- Caso Accorpamento
Classi senza Molteplicità
Scrittura PostgreSQL:
CREATE TABLE Studente (
matricola integer not null,
nome varchar not null,
genere Genere not null,
primary key (matricola)
);
CREATE TABLE Corso (
nome varchar not null,
modalita Modalita,
primary key (nome)
);
All’esame utilizziamo una scrittura più compatta:
Dove:
- Gli attributi sottolineati compongono la chiave primaria
- Diamo per scontato che tutti gli attributi sono
not null
- Per indicare che un attributo può essere
null
lo indiamo con
Molteplicità senza vincoli
Caso 0..* -- 0..*
Vincoli di molteplicità massima 1
Caso 0..* -- 0..1
Caso 0..1 -- 0..1
![]()
Vincoli di molteplicità minima 1
Caso 1..* -- 0..*
1..* -- 1..*
Caso Accorpamento
Caso 0..* -- 1..1
Caso 0..1 -- 1..1 {id}
Caso 0..* -- 0..1