L'estrazione delle relazioni terminologiche intraschema che riguardano le sorgenti relazionali viene effettuata mediante l'analisi delle ForeignKey. Ogni volta in cui e' presente una FK e' immediato dedurre una relazione di RT fra la classe che la definisce e quella che viene da essa riferenziata.
Talvolta, affiancando all'analisi delle FK uno studio sulle chiavi candidate, e' possibile evidenziare ulteriori relazioni (piu' forti della semplice RT). In particolare:
relazione NT
Si rileva quando la FK e' anche chiave candidata della classe che la definisce --> relazione NT fra la classe che definisce la FK e quella riferita.
Esempio:
PERSONA(CF, NOME, COGN, RESID)
STUDENTE(CF, COD_STUD, TITOLO_STUDIO)
AK: COD_STUD
FK: CF references PERSONA
La relazione dedotta in questo caso e' : STUDENTE NT PERSONA
relazione SYN
Stabilito che fra classe A e classe B c'e' una relazione del tipo A NT B, se esiste anche la relazione inversa (ovvero B NT A) posso segnalare una sinonimia --> la classe A e B sono sinonime.
Esempio:
ANAGRAFICA_IMPIEGATO(CF, NOME, COGN, RESID)
FK: CF references STIPENDIO_IMPIEGATO
STIPENDIO_IMPIEGATO(CF, TASSE, STIPENDIO)
FK: CF references ANAGRAFICA_IMPIEGATO
La relazione dedotta in questo caso e' :
STIPENDIO_IMPIEGATO SYN ANAGRAFICA_IMPIEGATO
relazione PARTOF
Si rileva ogni volta in cui una FK e' parte di una chiave candidata della classe che la definisce --> relazione PARTOF fra la classe che definisce la FK e quella riferita.
Esempio:
UFFICIO(COD_UFF, NR_DIP, FUNZIONE)
PRATICA(NR,COD_UFF, DATA)
FK: COD_UFF references UFFICIO
La relazione dedotta in questo caso e' : PRATICA PARTOF UFFICIO
ESTENSIONE delle relazioni fra classi
Esempio:
SALA(NOME, DESCR)
CUSTODE(CF, INDIRIZZO)
ORARIO_SETTIMANALE(NOME_SALA, DATA, CF_CUSTODE)
FK: NOME_SALA references SALA
FK: CF_CUSTODE references CUSTODE
Le relazioni dedotte in questo caso sono :
ORARIO_SETTIMANALE PARTOF SALA
ORARIO_SETTIMANALE PARTOF CUSTODE
SALA RT CUSTODE
relazione SYN fra attributi
Si rileva ogni volta in cui la lista dei nomi degli attributi che compongono la FK (nella classe che definisce la FK stessa) e' diversa dalla lista dei nomi degli stessi attributi nella classe riferita.
Esempio:
PERSONA(NOME_PERSONA, INDIRIZZO)
STUDENTE(NOME_STUDENTE, FACOLTA, TITOLO_STUDIO)
FK: NOME_STUDENTE references PERSONA
Le relazioni dedotte in questo caso sono :
STUDENTE NT PERSONA
NOME_STUDENTE SYN NOME_PERSONA