
\subsection{Esempio di riferimento}
\label{esempio}
\begin{figure}[t]
\small
\begin{tabular}{|l|}
\multicolumn{1}{l}{{\bf Sorgente UNIVERSITY} $(UNI)$}\\ \hline
{\tt Research\_Staff(name,e\_mail,dept\_code,section\_code)}\\
{\tt School\_Member(name,faculty,year)} \\ {\tt
Department(dept\_name,dept\_code,budget)} \\ {\tt
Section(section\_name,section\_code,length,room\_code)}\\ {\tt
Room(room\_code,seats\_number,notes)} \\ \hline
\multicolumn{1}{l}{}\\
\end{tabular}
\begin{tabular}{|l|}
\multicolumn{1}{l}{{\bf Sorgente COMPUTER\_SCIENCE} $(CS)$}\\
\hline {\tt CS\_Person(first\_name,last\_name)}\\ {\tt
Professor:CS\_Person(belongs\_to:Office,rank)} \\ {\tt
Student:CS\_Person(year,takes:set$\langle$Course$\rangle$,rank)}
\\ {\tt
Office(description,address:Location)}\\
{\tt Location(city,street,number,county)} \\ {\tt
Course(course\_name,taught\_by:Professor)}\\ \hline
\multicolumn{1}{l}{}\\
\end{tabular}
\begin{tabular}{|l|}
\multicolumn{1}{l}{{\bf Sorgente TAX\_POSITION} $(TP)$}\\ \hline
{\tt
Student(name,student\_code,faculty\_name,tax\_fee)}\\
{\tt ListOfStudent(Student:set$\langle$Student$\rangle$)}\\ \hline
\multicolumn{1}{l}{}\\
\end{tabular}
\caption{Esempio di riferimento} \label{fi:esempio}
\end{figure}
In Appendice ~\ref{esempio:esempio} \`e riportata la descrizione
\lang\ delle sorgenti che costituiscono l'esempio di riferimento
utilizzato per illustare le fasi del processo di integrazione. In
Figura \ref{fi:esempio} lo stesso viene invece presentato in modo
schematico.\\
Il contesto preso a modello \`e una realt\`a universitaria: le
sorgenti da integrare sono tre.
\par La prima sorgente, {\tt University} $(UNI)$, \`e un DataBase di tipo
relazionale, che contiene informazioni sullo staff e sugli
studenti di una determinata universit\`a; le tabelle che lo
compongono sono:  {\tt Research\_Staff}, {\tt School\_Member},
{\tt Department}, {\tt Section} e {\tt Room}. Per ogni professore
(presente nella tabella {\tt Research\_Staff}), sono memorizzate
informazioni sul suo dipartimento (attraverso la foreign key {\tt
dept\_code}), sul suo indirizzo di posta elettronica ({\tt
e\_mail}), e  sul corso da lui tenuto ({\tt section\_code}). Per
il corso inoltre viene memorizzata l'aula ({\tt Room}) dove questo
si svolge, mentre del dipartimento \`e descritto, oltre al nome
({\tt dept\_name}) ed al codice ({\tt dept\_code}), il budget
({\tt budget}) che ha a disposizione. Per gli studenti presenti
nella tabella {\tt School\_Member} sono invece mantenuti il nome
({\tt name}), la facolt\`a di appartenenza ({\tt faculty}) e
l'anno di corso ({\tt year}).\par La sorgente {\tt
Computer\_Science} ($CS$) contiene invece informazioni sulle
persone afferenti a questa facolt\`a, \`e un DataBase ad oggetti.
Sono presenti sei classi:  {\tt CS\_Person}, {\tt Professor}, {\tt
Student}, {\tt Office}, {\tt Location} e {\tt Course}. I dati
mantenuti sono comunque abbastanza simili a quelli della sorgente
$UNI$: per quanto riguarda i professori, sono memorizzati il
livello({\tt rank}), e l'ufficio di appartenenza ({\tt
belongs\_to}), che a sua volta fa parte di un dipartimento (e ne
pu\`o quindi essere considerata una specializzazione); per gli
studenti sono memorizzati i corsi seguiti ({\tt takes}), l'anno di
corso ({\tt year}) ed il livello raggiunto ({\tt rank}). Il corso
ha poi un attributo complesso che lo lega al professore che ne \`e
titolare ({\tt taught\_by}), mentre per l'ufficio si tiene
l'indirizzo ({\tt address}) e la descrizione ({\tt
description}).\par \`E\ presente infine una terza sorgente, {\tt
Tax\_Position} ($TP$), facente capo alla segreteria studenti, che
mantiene i dati relativi alle tasse da pagare ({\tt tax\_fee)}. A
tale sorgente appartengono {\tt
  Student} e {\tt ListOfStudent}. {\tt Tax\_Position} \`e una sorgente
semistrutturata.


Relazioni intra-schema.

\begin{esempio}\rm
\small Dall'esempio di riferimento, si ricavano le seguenti
relazioni terminologiche intra-schema:
\begin{center}
\begin{tabular}{l}
 $\langle${\tt University.Department} {\sc rt} {\tt University.Research\_Staff}$\rangle$\\
 $\langle${\tt University.Section} {\sc rt} {\tt University.Research\_Staff}$\rangle$\\
 $\langle${\tt University.Room} {\sc rt} {\tt University.Section}$\rangle$\\
 $\langle${\tt Computer\_Science.Student} {\sc nt} {\tt Computer\_Science.CS\_Person}$\rangle$\\
 $\langle${\tt Computer\_Science.Professor} {\sc nt} {\tt Computer\_Science.CS\_Person}$\rangle$\\
 $\langle${\tt tax\_position\_xml.Student} {\sc rt} {\tt
 tax\_position\_xml.ListOfStude}$\rangle$\\
 $\langle${\tt Computer\_Science.Course} {\sc rt} {\tt Computer\_Science.Student}$\rangle$\\
 $\langle${\tt Computer\_Science.Office} {\sc rt} {\tt
 Computer\_Science.Professor}$\rangle$\\
 $\langle${\tt Computer\_Science.Location} {\sc rt} {\tt
 Computer\_Science.Office}$\rangle$\\
 $\langle${\tt Computer\_Science.Professor} {\sc rt} {\tt Computer\_Science.Course}$\rangle$\\
\end{tabular}
\end{center}
\end{esempio}


Relazioni inserite dal progettista.

\begin{esempio}\rm
\small In relazione all'esempio di riferimento, le relazioni
inserite dal progettista sono:
\begin{center}
\begin{tabular}{l}
 $\langle${\tt University.Room} {\sc syn} {\tt
 Computer\_Science.Location}$\rangle$\\
 $\langle${\tt University.Room} {\sc syn} {\tt Computer\_Science.Office}$\rangle$
\end{tabular}
\end{center}
\end{esempio}

Validazione delle relazioni tra gli attributi.

\begin{esempio}\rm
\small In relazione all'esempio di riferimento, si riportano qui
sotto alcune relazioni tra attributi che hanno subito la
validazione ('[1]' significa relazione valida mentre '[0]' indica
il contrario): \footnotesize
\begin{center}
\begin{tabular}{ll}
 $\langle${\tt Computer\_Science.CS\_Person.first\_name} {\sc nt} {\tt tax\_position\_xml.Student.name}$\rangle$ & [1] \\
 $\langle${\tt Computer\_Science.CS\_Person.last\_name} {\sc nt} {\tt tax\_position\_xml.Student.name}$\rangle$ & [1] \\
 $\langle${\tt Computer\_Science.Course.course\_name} {\sc syn} {\tt University.Research\_Staff.section\_name}$\rangle$ & [1] \\
 $\langle${\tt University.Research\_Staff.dept\_code} {\sc bt} {\tt Computer\_Science.Professor.belongs\_to}$\rangle$ & [0] \\
 $\langle${\tt University.School\_Member.faculty} {\sc syn} {\tt tax\_position\_xml.Student.faculty\_name}$\rangle$ & [1] \\
\end{tabular}
\end{center}
La quarta relazione non \`e stata validata in quanto il dominio di
{\tt dept\_code} \`{e} un \texttt{integer} mentre quello di
\texttt{belongs\_to} coincide con la classe {\tt
Computer\_Science.Office}. \normalsize
\end{esempio}

Validazione delle relazioni tra classi ed inferenza di nuove
relazioni intensionali.

\begin{esempio}\rm
\small In relazione all'esempio di riferimento, le relazioni
inferite sono:
\begin{center}
\begin{tabular}{l}
 $\langle${\tt tax\_position\_xml.ListOfStudent} {\sc rt} {\tt University.School\_Member}$\rangle$\\
 $\langle${\tt Computer\_Science.Course} {\sc rt} {\tt
 University.School\_Member}$\rangle$\\
 $\langle${\tt Computer\_Science.Professor} {\sc rt} {\tt
 University.Room}$\rangle$\\
 $\langle${\tt Computer\_Science.Student} {\sc rt} {\tt
 University.Section}$\rangle$\\
 $\langle${\tt Computer\_Science.Professor} {\sc rt} {\tt
 University.Section}$\rangle$\\
 $\langle${\tt Computer\_Science.Course} {\sc rt} {\tt
 tax\_position\_xml.Student}$\rangle$\\
 $\langle${\tt tax\_position\_xml.ListOfStudent} {\sc rt} {\tt
 Computer\_Science.Student}$\rangle$\\
 $\langle${\tt Computer\_Science.Professor} {\sc rt} {\tt
 University.Location}$\rangle$\\
\end{tabular}
\end{center}
\end{esempio}
Si pu\`o notare come tali relazioni siano inter-schema , ovvero
definite tra classi appartenenti a sorgenti diverse.
