• Non ci sono risultati.

Algoritmo di traduzione

N/A
N/A
Protected

Academic year: 2022

Condividi "Algoritmo di traduzione"

Copied!
24
0
0

Testo completo

(1)

Progettazione logica

Algoritmo di traduzione

E-A in DDL-SQL

(2)

E-A → → SQL → →

Uno schema E-A contiene:

Entità forti Associazioni Entità deboli Gerarchie Categorie

Attributi di entità e relazioni distinti in:

monovalore multivalore

} }

Alberi

Grafi

(3)

E-A → → SQL → →

Procedimento di massima:

traduzione delle entità forti, assieme ai loro attributi monovalore traduzione delle relazioni binarie

traduzione delle relazioni ternarie

traduzione delle entità deboli, assieme ai loro attributi monovalore traduzione degli attributi multivalore

traduzione delle gerarchie traduzione delle categorie

(4)

E-A → → → → SQL:

traduzione delle entità forti con attributi monovalore

T A

C

D B

create table T ( A dA ,

C dC , D dD ,

primary key ( A ) );

T

C

D B

A

create table T ( A dA ,

C dC , D dD ,

primary key ( C,D )

);

(5)

E-A → → → → SQL: traduzione delle relazioni binarie

M N T

S R

CREATE TABLE T ( KT dKT

PRIMARY KEY );

CREATE TABLE S ( KS dKS

PRIMARY KEY );

CREATE TABLE R (

S dKS ,

T dKT ,

PRIMARY KEY ( S, T ), CONSTRAINT SR

FOREIGN KEY ( S ) REFERENCES S( KS ) ON DELETE CASCADE, CONSTRAINT TR

FOREIGN KEY ( T ) REFERENCES T( KT ) ON DELETE CASCADE

ON UPDATE CASCADE );

KS KT

una partecipazione totale non e` codificabile

una partecipazione totale non e` codificabile

NON disponibile

(direttamente) in Oracle 8i

(6)

E-A → → → → SQL: traduzione delle relazioni binarie

CREATE TABLE T (

KT dKT

S dKS , CONSTRAINT R

FOREIGN KEY ( S ) REFERENCES S( KS ) ON DELETE CASCADE );

CREATE TABLE S (

KS dKS PRIMARY KEY );

1 N T

S R

KS KT

Traduzione poco efficiente per R "piccola'':

tante coppie (valore, null) in T(KY,R)

PRIMARY KEY,

(7)

E-A → → → → SQL: traduzione delle relazioni binarie

N 1 T

S R

KS KT

CREATE TABLE T ( KT dKT

PRIMARY KEY );

CREATE TABLE S ( KS dKS

PRIMARY KEY );

CREATE TABLE R (

T dKT

S dKS ,

PRIMARY KEY (T,S), CONSTRAINT SR

FOREIGN KEY ( S ) REFERENCES S( KS ) ON DELETE CASCADE,

CONSTRAINT TR

FOREIGN KEY ( T ) REFERENCES T( KT ) ON DELETE CASCADE );

Questa soluzione non e` standard!

Si puo` adottare quando R e` "piccola"

a causa delle poche occorrenze di T in R UNIQUE ,

(8)

E-A → → → → SQL: traduzione delle relazioni binarie

CREATE TABLE T (

KT dKT PRIMARY KEY, S dKS ,

CONSTRAINT R

FOREIGN KEY ( S ) REFERENCES S( KS ) ON DELETE CASCADE );

CREATE TABLE S (

KS dKS PRIMARY KEY );

1 N T

S R

KS KT

non codificato

(9)

E-A → → → → SQL: traduzione delle relazioni binarie

CREATE TABLE T (

KT dKT PRIMARY KEY,

S dKS

CONSTRAINT R

FOREIGN KEY ( S ) REFERENCES S( KS ) ON DELETE CASCADE );

CREATE TABLE S (

KS dKS PRIMARY KEY );

1 N T

S R

KS KT

NOT NULL ,

(10)

E-A → → → → SQL: traduzione delle relazioni binarie

CREATE TABLE RT (

KT dKT PRIMARY KEY, S dKS

CONSTRAINT R

FOREIGN KEY ( S ) REFERENCES S( KS ) ON DELETE CASCADE );

CREATE TABLE S (

KS dKS PRIMARY KEY );

1 N T

S R

KS KT

non codificato

NOT NULL ,

(11)

E-A → → → → SQL: traduzione delle relazioni binarie

CREATE TABLE RT (

KT dKT PRIMARY KEY, S dKS

CONSTRAINT R

FOREIGN KEY ( S ) REFERENCES S( KS ) ON DELETE CASCADE );

1 1 T

S R

KS KT

CREATE TABLE S (

KS dKS PRIMARY KEY

);

UNIQUE NOT NULL ,

(12)

E-A → → → → SQL: traduzione delle relazioni binarie

CREATE TABLE RT (

KT dKT PRIMARY KEY, S dKS

CONSTRAINT R

FOREIGN KEY ( S ) REFERENCES S( KS ) ON DELETE CASCADE );

CREATE TABLE S (

KS dKS PRIMARY KEY

);

1 1 T

S R

KS KT

UNIQUE ,

(13)

T

E-A → → → → SQL: traduzione delle relazioni ternarie

KS S KT

U KU

R

CREATE TABLE S (

KS dKS PRIMARY KEY );

CREATE TABLE U (

KU dKU PRIMARY KEY );

CREATE TABLE T (

KT dKT PRIMARY KEY );

CREATE TABLE R (

S dKS NOT NULL vincolo eventuale, U dKU NOT NULL vincolo eventuale, T dKT NOT NULL vincolo eventuale, PRIMARY KEY ( S, U, T),

FOREIGN KEY ( S ) REFERENCES S( KS ) ON DELETE CASCADE,

FOREIGN KEY ( U ) REFERENCES U( KU ) ON DELETE CASCADE,

FOREIGN KEY ( T ) REFERENCES T( KT ) ON DELETE CASCADE

);

(14)

W

E-A → → → → SQL:

traduzione delle entità deboli e dei loro attributi monovalore

KE E R

CREATE TABLE E (

KE dKE PRIMARY KEY );

CREATE TABLE W (

KW dKW eventuale vincolo, E dKE eventuale vincolo,

A dKA ,

PRIMARY KEY ( KW, E),

FOREIGN KEY ( E ) REFERENCES E( KE ) ON DELETE CASCADE

);

KW

A B

ogni istanza di W esiste se corrisponde ad una di E

ignorato,

per ora

(15)

E-A → → → → SQL: traduzione degli attributi multivalore

KS S A

CREATE TABLE S (

KS dKS PRIMARY KEY );

CREATE TABLE AS ( S dKS ,

A dA ,

PRIMARY KEY ( S, A ), CONSTRAINT MultiA FOREIGN KEY (S ) REFERENCE S(KS) ON DELETE CASCADE );

(16)

E-A → → SQL: sintassi per una traduzione incrementale → →

CREATE TABLE T ( ... );

...

ALTER TABLE T

ADD (CONSTRAINT nome_constraint

FOREIGN KEY (U) REFERENCES U(KU) );

annichilito da:

ALTER TABLE T

DROP CONSTRAINT nome_constraint;

(17)

E-A → → → → SQL: traduzione di una gerarchia (A)

C

S

KC

T

CREATE TABLE S (

S dKS PRIMARY KEY, AS dAS,

FOREIGN KEY ( S )

REFERENCES C( KC ) );

CREATE TABLE C (

KC dKC PRIMARY KEY, A dA

);

CREATE TABLE T (

T dKT PRIMARY KEY, AT dAT,

FOREIGN KEY ( T )

REFERENCES C( KC ) );

A

AS AT

sovrapposta o disgiunta totale o

parziale

dipendenza di inclusione

dipendenza di inclusione

(18)

E-A → → → → SQL: traduzione di una gerarchia (B)

C

S

KC

T

CREATE TABLE S ( S dKS,

AS dAS,

KC dKC PRIMARY KEY, A dA

);

CREATE TABLE T ( T dKT,

AT dAT,

KC dKC PRIMARY KEY, A dA

);

A

d

AS AT

disgiunta

totale

(19)

E-A → → → → SQL: traduzione di una gerarchia (C)

C

S

KC

T A

d

AS AT

p(B) not(P(B))

B

CREATE TABLE CST (

KC dKC PRIMARY KEY, A dA,

AS dAS, AT dAT, B dB );

totale o parziale

PUO` essere adatto un booleano (che ORACLE non ha!) attributo

discriminante NOT NULL

per gerarchia totale

(20)

E-A → → → → SQL: traduzione di una gerarchia (D)

C

S

KC

T A

o

AS AT

totale o parziale

CREATE TABLE CST (

KC dKC PRIMARY KEY, A dA,

AS dAS, AT dAT

DS BOOLEANO, DT BOOLEANO

);

qualsiasi

combinazione

di valori

(21)

E-A → → → → SQL: traduzione di specializzazioni a reticolo

U

S

KU

T

V

create table U

( ku number(2) primary key );

create table S

( ks number(2) primary key , constraint S_subclass_of_U

foreign key (ks) references U(ku) );

create table T

( kt number(2) primary key , constraint T_subclass_of_U

foreign key (kt) references U(ku) );

create table V

( kv number(2) primary key , constraint V_subclass_of_S

foreign key (kv) references S(ks) , constraint V_subclass_of_T

foreign key (kv) references T(kt));

condividono

lo stesso

identificatore

(22)

E-A → → → → SQL: traduzione di specializzazioni a reticolo (esempio)

E

Z2 KE

V

create table E ( KE char(1) primary key );

create table V ( E char(5) primary key , constraint VsubE

foreign key (E) references E(KE) );

create table U1 ( E char(2) primary key , constraint U1subE

foreign key (E) references E(KE));

create table U2 ( E char(2) primary key , constraint U2subE

foreign key (E) references E(KE));

create table Z1 ( E char(2) primary key );

create table Z2 ( E char(2) primary key );

create table X ( U1VZ1 char(2) primary key , constraint XsubU1

foreign key (U1VZ1) references U1(E) , constraint XsubV

foreign key (U1VZ1) references V(E) , constraint XsubZ1

foreign key (U1VZ1) references Z1(E));

U1

d d

X U2 Z1

ordine di

traduzione

(23)

E-A → → SQL: → → traduzione di una categoria

C

S T

A

u

KS KT

create table S

( KS char(2) primary key , AttS char(2)

, Surr dSurr

, foreign key (Surr) references C(Surr) );

AS AT

create table T

( KT char(2) primary key , AttT char(2)

, Surr dSurr

, foreign key (Surr) references C(Surr) );

create table C

( Surr dSurr primary key , AttC char(5) );

inutile se KS e KT sono “compatibili”

approssimata

(24)

E-A → → SQL: → → traduzione di una categoria

create table S

( KS char(2) primary key , AttS char(2)

, Surr dSurr

, foreign key (Surr) references C(Surr) );

create table T

( KT char(2) primary key , AttT char(2)

, Surr dSurr

, foreign key (Surr) references C(Surr) );

create table C

( Surr dSurr primary key

, AttC char(5) );

Riferimenti

Documenti correlati

bianchi» della Romania sono oltre 350 mila: sono i figli delle donne che lavorano come badanti in Italia e in Spagna, i due Paesi che attualmente necessitano maggiormente di

Sulla letteratura italiana August Wilhelm scrive anche: il capitolo Italienische Poesie (1802-1803) che costituisce l’ultima parte della Geschichte der romantischen

Rispetto agli ospedali, i siti delle altre due tipologie di struttura risultano al riguardo molto più informativi e contengono solitamente sezioni dedicate all’u- tenza con

Impiegato(Codice, Cognome, Stipendio) Dipartimento(Nome, Telefono, Sede) Direzione(Direttore, Dipartimento, DataInizioDirezione) Impiegato (0,1) Direzione (0,1)

Impiegato(Codice, Cognome, Stipendio) Dipartimento(Nome, Telefono, Sede) Direzione(Direttore, Dipartimento, DataInizioDirezione) Impiegato (0,1) Direzione (0,1)

La conoscenza in forma strutturata (grammatica, lessico …) utilizzata da un sistema rule-based è solitamente memorizzata all’interno del.. sistema, ma potrebbe anche

[r]

valutare la qualità della traduzione e il compito di valutare è affidato ad un gruppo di esperti umani che leggono il testo originale e quello tradotto e li confrontano.