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à

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