• No results found

Chapter 2 Functions Instruction and Operation

2.10 Display System

En este apartado describirá la implementación de la base de datos junto con las soluciones para la semántica no recogida en el diseño conceptual del apartado 4.3. Se detallarán las decisiones de transformación tomadas para los elementos más complejos como son las jerarquías recursivas entre patrones y sub-patrones y entre tokens y sub- tokens.

El esquema relacional es el que muestra la Ilustración 5.16. Se aprecian lo que serán las tablas de las que dispone la base de datos Oracle, las claves primarias, claves ajenas y atributos. Este es el esquema global de la base de datos y lo conforman las tres partes del diseño pero para facilitar la comprensión de las explicaciones se dividirán éstas según sus tres apartados que son: apartado de identificación, de actos comunicativos y de patrones.

Se ha decidido que prácticamente todas las relaciones presentes en el diagrama que contengan una clave principal propia dispongan de una secuencia ordenada (con valor de comienzo cero) para dar valores a estas claves. Se planteó utilizar como clave el valor de ROWID que Oracle asigna por defecto a todas las tuplas de cada tabla y que toma como clave primaria si no se ha especificado ninguna. Pero debido a que algunos identificadores (como los de las tablas Corpus, Scene, Sample, Intervention y Sentence) son visibles al usuario, por aumentar la amigabilidad del sistema se ha decidido tomar la secuencia para realizar la asignación de claves. Para el resto de relaciones se usaron las secuencias para facilitar la depuración del sistema mientras se esté desarrollando.

5.3.1 Identificación.de Corpus 

Las tablas que este apartado engloba son CORPUS, SCENE, SAMPLE, INTERVENTION y SENTENCE. Estas entidades (excepto CORPUS) son, en el diseño conceptual, débiles en identificación correlativamente. Esto se ha implementado mediante claves ajenas que forman parte de la clave principal de las entidades débiles, por lo cual la clave primaria de SCENE está compuesta por su clave propia y la clave de identificación de corpus. La clave de SAMPLE está compuesta por su clave propia y la clave de SCENE (es decir, la clave de CORPUS y la de SCENE) y así sucesivamente con INTERVENTION y SENTENCE.

Actualmente se ha omitido la posibilidad de que un patrón pueda ser asignado independientemente a un corpus o a una frase. Para permitir esto, se ha tomado la decisión de realizar una inserción automáticamente en el script de creación de la base de datos en las tablas de este apartado, por tanto se dispondrá siempre del identificador de CORPUS, SCENE, SAMPLE, INTERVENTION y SENTENCE con valor '0' reservado, y éste se representará como el "corpus general" a cuyas frases se les podrán asignar los patrones que no hayan sido identificados a un corpus en concreto.

Para dotar de lógica correlativa a las claves de estas tablas, se crea un disparador para SCENE, SAMPLE, INTERVENTION y SENTENCE en lugar de la secuencia que dispone el resto de tablas. Este disparador calcula la clave de estas tablas en función del valor máximo del último valor de la clave ajena. Esto se ha hecho de esta forma para que la clave de, por ejemplo, SAMPLE tenga un valor correlativo para el corpus 1 (aparezca como 1.1, 1.2, 1.3) y que para el corpus con clave 2 se reinicie la numeración.

A la hora de obtener estos datos para poblar el motor de inferencia, siempre se obtendrán los patrones asociados a un corpus determinado y los asociados al corpus general. Si no se especificase el corpus, se cargarán únicamente los patrones asociados al corpus general.

5.3.2 Actos comunicativos. 

Este grupo lo forman las relaciones CA, CASETS, CASETS_CA, ASSIGNED_CATEGORY, ASSIGNED_PAIR, CONSTR. Como en el apartado anterior y con excepción de la relación CONSTR, el identificador propio de cada una es creado a través de una secuencia, aunque en estos casos este dato no sea visible al usuario.

Para realizar la transformación entre las entidades del esquema E/R del apartado 4.3 se han seguido las reglas básicas de transformación, como de esta forma se puede apreciar la tabla intermedia CASETS_CA que formaliza la relación N:M que forman en el diseño las entidades CA y CASets. Se ha decidido no crear una tabla nueva para la entidad Value, siendo sus atributos llevados a la tabla ASSIGNED_PAIR sin perder por tanto ápice de semántica ya que la clave primaria que figura en el diseño E/R de la entidad de mismo nombre pasa a estar formada por la clave llamada id_val junto con la clave ajena id_asig_cat.

Se ha creado un disparador para el valor 'order' de la tabla ASSIGNED_CATEGORY que asigne valores consecutivos para categorías asignadas al mismo acto comunicativo, empezando siempre por 0 si es la primera categoría asignada.

5.3.3 Apartado de patrones. 

Este apartado engloba las relaciones que forman parte totalmente de la edición de gramáticas relajadas, estas son PATTERN, PATTERN_ELEM, TOKEN_ELEM, TOKEN_CATALOG, DESCRIPTION y DP_INSTANCE.

La decisión de implementación más significativa en este punto ha sido la transformación en una tabla las jerarquías que forman en el diseño los elementos de la edición de la gramática. Había que decidir si tener muchas tablas con pocos atributos o pocas tablas con tuplas que tengan muchos valores nulos. Al final la implementación ha sido la última ya que aporta mucha más velocidad el acceso a una única tabla con

atributos con pocos caracteres o nulos que obtener pocos datos de muchas tablas distinta.

Ya que se dispone de una única tabla para todos los elementos de patrón y otra para los elementos de token, es necesario introducir sendos chequeos para verificar que no se insertan datos de más o de menos en esas tablas, verificando pues el atributo tipo y dependiendo de su valor, comprobando la existencia de unos u otros atributos.

La tabla TOKEN_ELEM contiene una clave ajena no opcional la cual indica de qué descripción forman parte los elementos. Dispone de una clave ajena a la relación TOKEN_CATALOG (como PATTERN_ELEM) que indica cuando existe un elemento de tipo token, su referencia.

Se han implementado dos disparadores en esta sección. Ambos tienen la finalidad de calcular automáticamente el orden de un elemento en el momento de insertar en las tablas PATTERN_ELEM y TOKEN_ELEM. Estos dos disparadores contienen prácticamente el mismo código adaptado. Los disparadores realizan una consulta para obtener el número de orden máximo según el id del patrón (o token) que se está insertando. Si este número no es cero, se inserta como nuevo valor para el atributo order el obtenido más una unidad. Si por el contrario el valor es cero, se inserta como valor uno.

Related documents