<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>0254-0770</journal-id>
<journal-title><![CDATA[Revista Técnica de la Facultad de Ingeniería Universidad del Zulia]]></journal-title>
<abbrev-journal-title><![CDATA[Rev. Téc. Ing. Univ. Zulia]]></abbrev-journal-title>
<issn>0254-0770</issn>
<publisher>
<publisher-name><![CDATA[Facultad de Ingeniería, Universidad del Zulia]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S0254-07702013000300008</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[Inserción automática de reglas de negocio en bases de datos]]></article-title>
<article-title xml:lang="en"><![CDATA[Automatic insertion of business rules in databases]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Boggiano-Castillo]]></surname>
<given-names><![CDATA[Martha Beatriz]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Pereira]]></surname>
<given-names><![CDATA[Alain]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Pérez]]></surname>
<given-names><![CDATA[Alain]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[González-González]]></surname>
<given-names><![CDATA[Luisa-Manuela]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Pérez-Vázquez]]></surname>
<given-names><![CDATA[Ramiro]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Universidad Central Marta Abreu de Las Villas  ]]></institution>
<addr-line><![CDATA[Santa Clara Villa Clara]]></addr-line>
<country>Cuba</country>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>12</month>
<year>2013</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>12</month>
<year>2013</year>
</pub-date>
<volume>36</volume>
<numero>3</numero>
<fpage>253</fpage>
<lpage>261</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://ve.scielo.org/scielo.php?script=sci_arttext&amp;pid=S0254-07702013000300008&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://ve.scielo.org/scielo.php?script=sci_abstract&amp;pid=S0254-07702013000300008&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://ve.scielo.org/scielo.php?script=sci_pdf&amp;pid=S0254-07702013000300008&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[Una de las tendencias actuales en el desarrollo de los sistemas de información es su conducción mediante el enfoque de reglas de negocio. Las reglas de negocio que son tratadas en este trabajo son aquellas conocidas como reglas de restricción y permiten expresar restricciones de integridad sobre datos en una base de datos. Este tipo de regla puede ser implementada más cerca de los datos. Ellas pueden involucrar a varias tablas de una base de datos, y para generar la regla, lo más importante es descubrir automáticamente a qué tabla debe ser aplicada, y con qué recursos se puede aplicar. En este artículo se propone un método para resolver esta problemática para las reglas de restricción cuando la base de datos ya ha sido creada. Los ejemplos utilizados se refieren a parte de una aplicación para el control del trasplante renal.]]></p></abstract>
<abstract abstract-type="short" xml:lang="en"><p><![CDATA[One of the actual trends in the development of the information systems is the leading through the focus of the business rules. The business rules dealt with this work are the ones known as constraint rules and let to express constraints of integrity about data in a database. All these can involve several charts of a database and in order to create a rule, the more important item is to automatically find out which chart must be applied and which resources must be used to. In this article a method sort is proposed to sort out the problem related with the Constraint Rules when the database has been created. The examples used refer to just a part of an application to the renal transplantation.]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[reglas de negocio]]></kwd>
<kwd lng="es"><![CDATA[reglas de restricción]]></kwd>
<kwd lng="es"><![CDATA[bases de datos de negocios]]></kwd>
<kwd lng="es"><![CDATA[generación automática de reglas]]></kwd>
<kwd lng="en"><![CDATA[restriction business rules]]></kwd>
<kwd lng="en"><![CDATA[business database]]></kwd>
<kwd lng="en"><![CDATA[automatic implementation]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[ <p align="center"><font face="Verdana" size="2">Rev. Téc. Ing. Univ. Zulia. Vol.  36, Nº 3, 253 - 261, 2013</font></p>     <p align="center"><font face="Verdana" size="2"><b>  Automatic insertion of business rules in databases</b></font></p>     <p align="center"><font face="Verdana" size="2"><b>  Inserción automática de reglas de negocioen bases de datos</b></font></p>     <p align="center"><font face="Verdana" size="2">  Martha Beatriz Boggiano-Castillo, Alain Pereira Toledo, Alain Pérez-Alonso,  Luisa-Manuela González-González, Ramiro Pérez-Vázquez</font></p>     <p align="center"><font face="Verdana" size="2">  Universidad Central Marta Abreu de Las Villas. Centro de Estudios Informáticos.  Carretera de Camajuaní Km 5 ½. Santa Clara, Villa Clara. Cuba. CP: 54830.  Teléfono: 281515. <a href="mailto:mbeatriz@uclv.edu.cu">mbeatriz@uclv.edu.cu</a></font></p>     <p align="justify"><font face="Verdana" size="2">  <b>Abstract</b></font></p>     <p align="justify"><font face="Verdana" size="2">  One of the actual trends in the development of the information systems is the  leading through the focus  of the business rules. The business rules dealt with this work are the ones  known as constraint rules  and let to express constraints of integrity about data in a database. All these  can involve several charts of a  database and in order to create a rule, the more important item is to  automatically find out which chart  must be applied and which resources must be used to. In this article a method  sort is proposed to sort out  the problem related with the Constraint Rules when the database has been created.  The examples used  refer to just a part of an application to the renal transplantation.</font></p>     <p align="justify"><font face="Verdana" size="2">  Keyword: restriction business rules, business database, automatic implementation.</font></p>     <p align="justify"><font face="Verdana" size="2"><b>  Inserción automática de reglas de negocio  en bases de datos</b></font></p>     <p align="justify"><font face="Verdana" size="2">  <b>Resumen</b></font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2">  Una de las tendencias actuales en el desarrollo de los sistemas de información  es su conducción mediante  el enfoque de reglas de negocio. Las reglas de negocio que son tratadas en este  trabajo son aquellas  conocidas como reglas de restricción y permiten expresar restricciones de  integridad sobre datos en una  base de datos. Este tipo de regla puede ser implementada más cerca de los datos.  Ellas pueden involucrar  a varias tablas de una base de datos, y para generar la regla, lo más importante  es descubrir automáticamente  a qué tabla debe ser aplicada, y con qué recursos se puede aplicar. En este  artículo se propone un  método para resolver esta problemática para las reglas de restricción cuando la  base de datos ya ha sido  creada. Los ejemplos utilizados se refieren a parte de una aplicación para el  control del trasplante renal.</font></p>     <p align="justify"><font face="Verdana" size="2">  <b>Palabras clave: </b>reglas de negocio, reglas de restricción, bases de datos  de negocios, generación  automática de reglas.</font></p>     <p align="justify"><font face="Verdana" size="2">  <b>Introducción</b></font></p>     <p align="justify"><font face="Verdana" size="2">  La consideración del enfoque de reglas de  negocio en el diseño e implementación de sistemas  de información (SI) supone una relativa independencia  entre los desarrolladores del SI y de  las reglas de negocio.</font></p>     <p align="justify"><font face="Verdana" size="2">  Hay reglas de negocio que pueden ser implementadas  en las bases de datos con mecanismos  más potentes que las opciones check, foreignkey,  primarykey, estos son los disparadores(  triggers), funciones, procedimientos almacenados,  vistas, que también son suministrados  por la mayoría de los Sistemas de Gestión de Bases  de Datos Relacionales (SGBDR), como fragmentos  de código en lenguaje SQL. </font></p>     <p align="justify"><font face="Verdana" size="2">En este artículo  se valora el uso de los disparadores como  recursos para acercar ambos desarrollos e implementar  las reglas de negocio en SI. El problema  esencial radica en determinar cuáles reglas de  negocio pueden ser implementadas en la base de  datos y crear mecanismos que logren esta implementación  a la manera de generación automática  para independizar las reglas de negocio del desarrollo  de las aplicaciones.</font></p>     <p align="justify"><font face="Verdana" size="2">  Este trabajo se basa en la clasificación de  reglas de negocio realizada por Morgan [1], se seleccionan  las reglas de tipo restricción, se tratan  las entidades del negocio como tablas de la base  de datos y se muestra un tipo de mecanismo que  puede generar de forma automática las implementaciones  de estas reglas en la base de datos  ya creada. Los mecanismos de los ejemplos pertenecen  al lenguaje transact SQL, compatible  con Microsoft SQL Server versión 2012.</font></p>     <p align="justify"><font face="Verdana" size="2"><b>  Generalidades sobre las reglas  de negocio</b></font></p>     <p align="justify"><font face="Verdana" size="2">  Según Ross [2] una “regla de negocio es una  regla que está bajo la jurisdicción o gobierno del  negocio”. Una regla de negocio es una sentencia  que define o restringe algunos aspectos del negocio;  tiene la finalidad de establecer la estructura  del mismo, controlar o influenciar su comportamiento  [1, 3, 4]. En [4] se precisaque “…está relacionado  con los hechos que son grabados como  datos y las restricciones sobre los cambios a los  valores de tales hecho….”.</font></p>     <p align="justify"><font face="Verdana" size="2">  <b>Formas de expresar las reglas  de negocio</b></font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2">  Algunos autores [1, 5] coinciden en que, independientemente  de la clasificación de la regla  de negocio: restricción, cómputo, enumeración,  clasificación, etc.; las reglas de negocio se expresan  de diferentes maneras, o con diferentes niveles  de abstracción, y que su expresión comienza  por el lenguaje natural. Según [5] son cuatro las  formas de expresarlas, cada una para una audiencia  diferente: conversación informal del negocio,  versión en lenguaje natural, versión en  lenguaje de especificación y versión en lenguaje  de implementación de reglas. En [1] se distinguen  sólo tres formas de expresión de reglas de  negocio: informal, técnico y formal.</font></p>     <p align="justify"><font face="Verdana" size="2">  Se observan algunas similitudes entre los  dos criterios expuestos; aquí se trabaja con los  expuestos por Morgan porque es más preciso en  su descripción y su nivel informal se sustituye  por “cercano al natural”, como un patrón que  puede ser entendido por todos; el nivel técnico  que presenta especificaciones de funciones, símbolos  matemáticos, especifica la regla siguiendo  el patrón de regla, pero aún no puede ser ejecutado  por la computadora. El nivel formal se refiere a  su implementación en un lenguaje de programación  para ser ejecutado.</font></p>     <p align="justify"><font face="Verdana" size="2"><b>  Reglas de restricción</b></font></p>     <p align="justify"><font face="Verdana" size="2">  Morgan en [1] propone categorías de reglas  de negocio, las denomina como: restricción básica,  lista de restricciones, clasificación, computación  y enumeración. Para cada categoría de regla  se propone un patrón de regla como una manera  conveniente de expresar estas.  Las reglas de negocio de restricción están  dirigidas a especificar qué restricciones o condiciones  deben cumplirse para que un dato se considere  válido. Estas reglas, pueden tener una implementación  en la base de datos. De lo que se  trata, entonces, es de encontrar un mecanismo  que pueda insertar automáticamente la implementación  correspondiente.</font></p>     <p align="justify"><font face="Verdana" size="2"><b>  Lenguajes para especificar restricciones</b></font></p>     <p align="justify"><font face="Verdana" size="2">  La especificación de restricciones sobre los  datos es un tema de interés en las bases de datos,  y también en el diseño de clases.  El lenguaje OCL (Object Constraint Language),  facilidad de UML (Unified Model Language)  ha sido definido como un estándar por la  OMG (Object Management Group) [6] para la representación  de restricciones en los diagramas  UML, útil para promulgar restricciones sobre objetos  del negocio [7]. Ya existen varias herramientas  que utilizan OCL para la representación de  restricciones [8, 11], OCL Toolkit [10, 12, 13]. Sin  embargo, Morgan en [1] no le da un peso especial  al uso del OCL.</font></p>     <p align="justify"><font face="Verdana" size="2">  Algunos lenguajes utilizados en la descripción  de reglas de negocio se basan en XML y responden  a la necesidad de separar los datos y la  estructura del modelo del negocio, de las reglas  que los rigen, así pueden ser guardadas aparte de  los datos. Cada sintaxis descrita por un esquema  XML para tales lenguajes, implica que, si se cumplen  ciertas condiciones se produce un evento en  el sistema [14]. Esto es básicamente lo que en el    campo de las bases de datos activas se ha dado  en llamar como ECA (Event Condition Action) rules  [15]; o sea, eventos condición-acción.</font></p>     <p align="justify"><font face="Verdana" size="2">  En [16] se ha definido un lenguaje para especificar  restricciones, nombrado en dicho trabajo  lenguaje técnico de patrones (LPT). El mismo  se basa en dos elementos fundamentales: la descripción  de las reglas de negocio de tipo restricción  a partir de un patrón y de la notación punto.  Además considera que los términos de las reglas  son elementos de la base de datos, tablas y atributos.</font></p>     <p align="justify"><font face="Verdana" size="2">  En este trabajo se utiliza un patrón, inspirado  en la forma del patrón de restricción básico  de Morgan [16]: </font></p>     <p align="justify"><font face="Verdana" size="2">&lt;determinante&gt;&lt;sujeto&gt; (no  puede tener &lt;características&gt;) |</font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2">  (puede tener &lt;características&gt; sólo si &lt;hechos&gt;).</font></p>     <p align="justify"><font face="Verdana" size="2">  En la Tabla 1 aparecen los significados para  los elementos que intervienen en el patrón, las  entidades reconocibles del negocio para Morgan  se sustituyen por elementos de la base de datos:  tablas y atributos.</font></p>     <p align="justify"><a name="t1"></a></p>     <p align="center"><img border="0" src="/img/fbpe/rtfiuz/v36n3/art08.1.jpg" width="540" height="200"></p>     
<p align="justify"><font face="Verdana" size="2">  Por otro lado la notación punto es utilizada  para acceder a los atributos de las tablas y navegar  entre estas de manera que se pueda lograr:  acceso simple a un atributo particular de una tabla,  Tabla_1.Atributo y navegar entre entidades,  Tabla_1.Tabla_2. … .Tabla_n. [Atributo].</font></p>     <p align="justify"><font face="Verdana" size="2">  Para esto es necesario que entre las tablas  se pueda establecer un acople natural.</font></p>     <p align="justify"><font face="Verdana" size="2">  Por ejemplo, si se desea acceder al nombre  del paciente se puede hacer con Paciente.Nombre.  También es posible navegar entre tablas, por  ejemplo con Cirujano.DonantesPotenciales.Evolución  se expresan las evoluciones de los donantes  vivos atendidos por un cirujano; esto resulta  una colección de datos y como puede observarse,  el orden es importante. Véase Figura 1.</font></p>     <p align="justify"><a name="f1"></a></p>     <p align="center"><img border="0" src="/img/fbpe/rtfiuz/v36n3/art08.2.jpg" width="511" height="208"></p>     
<p align="justify"><font face="Verdana" size="2">  En LPT se considera al sujeto como inicio de  la navegación; se ha incluido un grupo de operadores  para manipular colecciones de datos, como  se muestra en la Tabla 2.</font></p>     ]]></body>
<body><![CDATA[<p align="justify"><a name="t2"></a></p>     <p align="center"><img border="0" src="/img/fbpe/rtfiuz/v36n3/art08.3.jpg" width="498" height="153"></p>     
<p align="justify"><font face="Verdana" size="2">  Por ejemplo la regla “Un Paciente no puede  tener Donantes Potenciales con más de 3 Evoluciones”.  Con el uso los operadores descritos del LPT  se puede indicar:</font></p>     <p align="justify"><font face="Verdana" size="2">Un Paciente no puede tener  sizeof(DonantesPotenciales.   Evolucion.idEvolucion) &gt; 3</font></p>     <p align="justify"><font face="Verdana" size="2">  Donde: &lt;sujeto&gt;: Paciente,</font></p>     <p align="justify"><font face="Verdana" size="2">  &lt;características&gt;: sizeof(DonantesPotenciales.  Evolucion.idEvolucion) &gt; 3</font></p>     <p align="justify"><font face="Verdana" size="2">  Al escribir Donantes Potenciales.Evolucion.  id Evolucion se está suponiendo que el sujeto  es quien comienza la cadena, por lo tanto es  equivalente a decir Paciente. Donantes Potenciales.  Evolucion.id Evolucion.</font></p>     <p align="justify"><font face="Verdana" size="2">  <b>Resultados y discusión</b></font></p>     <p align="justify"><font face="Verdana" size="2">  En este trabajo las reglas del negocio de  tipo restricción se especifican usando el LPT, la  forma de nombrar las tablas y los atributos de  la base de datos coinciden con los términos utilizados  en el modelo de hechos relacionado con  el negocio. Esto no es un problema porque,  como se plantea en Martínez del Busto [17] las  reglas de negocio se construyen tomando como  base un vocabulario que está formado por las  palabras y frases establecidas por la comunidad  de usuarios de un negocio específico. La  modelación de las mismas supone un uso controlado  y previo de dicho vocabulario.</font></p>     <p align="justify"><font face="Verdana" size="2">  Para la implementación de las reglas de negocio  se considera el lenguaje SQL y en particular  los recursos que este brinda, usando el transact  SQL. Se utilizan los disparadores y funciones de  usuarios para implementar dichas reglas.</font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2">  De acuerdo al patrón especificado antes,  una regla puede ser violada sólo en la cláusula  que corresponde a &lt;características&gt; que es el  centro de interés porque permite identificar las  tablas de la base de datos del negocio donde se  deben chequear las reglas correspondientes.</font></p>     <p align="justify"><font face="Verdana" size="2">  Una regla de negocio tipo restricción, se escribe  según el patrón descrito en lenguaje natural  y formalizado en LPT, usando caminos de navegación,  para generar un disparador y una función.</font></p>     <p align="justify"><font face="Verdana" size="2">  El disparador será generado en tabla(s) de  las &lt;características&gt; donde puede ocurrir la violación  de la regla. La función se genera de tal manera  que se produce el valor lógico verdadero  cuando las características que indica la regla se  incumplen. Por ejemplo, para la regla vista anteriormente:  &lt;sujeto&gt;: Paciente; &lt;características&gt;: sizeof(  DonantesPotenciales.Evolucion.IdEvolucion)  &gt; 3,</font></p>     <p align="justify"><font face="Verdana" size="2">  La especificación de las &lt;características&gt;  se puede violar únicamente al insertar o modificar  una nueva Evolución para un Donante Potencial,  por lo tanto se genera el siguiente disparador  en la Tabla 3.</font></p>     <p align="justify"><a name="t3"></a></p>     <p align="center"><img border="0" src="/img/fbpe/rtfiuz/v36n3/art08.4.jpg" width="497" height="207"></p>     
<p align="justify"><font face="Verdana" size="2">  En este disparador se declara @subject que  es el &lt;sujeto&gt; condicionado de la regla (Paciente),  el que se extrae a través de una consulta, donde  el acople de las tablas se genera a partir de la expresión  que brinda la notación punto. Después  se cuestiona si la regla es quebrantada o no para  la instancia del sujeto que se inserta o modifica,  en caso afirmativo se toman las medidas correspondientes.  Este cuestionamiento se hace a través  de una función (FRN#3); encargada de implementar  el cuerpo de la regla; se verifica si &lt;sujeto&gt;  viola las condiciones impuestas por la restricción  mediante un valor lógico, en caso que se violen,  devuelve verdadero. La función que se genera,  en este caso, puede verse en la Tabla 4.</font></p>     <p align="justify"><a name="t4"></a></p>     <p align="center"><img border="0" src="/img/fbpe/rtfiuz/v36n3/art08.5.jpg" width="501" height="191"></p>     
<p align="justify"><font face="Verdana" size="2">  Esta forma de implementar las reglas de negocio  es válida siempre que se tengan relaciones  1:m entre las tablas que están asociadas a las entidades del negocio, que se  expresan con la notación  punto, a esta secuencia de tablas separadas  unas de otras por un punto se le llamará de ahora  en adelante camino de navegación explícito. En el  ejemplo anterior, el camino sería Paciente.Donantes  Potenciales. Evolucion.id Evolucion.</font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2">  Sin embargo en la base de datos pueden  existir tablas que no correspondan con las entidades  fundamentales del problema. El caso más  notorio es cuando existen, en el diagrama conceptual  correspondiente, interrelaciones muchos  - muchos entre las entidades; en estos casos  pueden aparecer tablas auxiliares en el diseño lógico.  No es común que en la escritura de las reglas  se haga referencia explícita a estas tablas  porque ellas son propias del diseño lógico y no  conceptual. En estos casos es más complicado  determinar dónde es necesario generar el disparador  y cómo implementarlo.</font></p>     <p align="justify"><font face="Verdana" size="2">  La notación punto no especifica el tipo de  interrelación entre las tablas que se relacionan.  Así, si Tabla1.Tabla2. ... .Tablan.[Atributo], conforma  el camino de navegación explícito de las  &lt;características&gt;; existe la incertidumbre sobre  en cuál tabla deberá almacenarse la regla en forma  de disparador: la situación está en ¿cómo se  descubre esta tabla para luego posicionar el disparador  en el lugar correcto?</font></p>     <p align="justify"><font face="Verdana" size="2">  Supóngase la declaración de una regla cuya  característica se expresa con el camino de navegación:  ...Ei.Ej... Atributo. Pero las tablas EiyEjno  acoplan naturalmente, sino a través de la tabla  auxiliar,Eres,que no está especificada en el camino  de navegación explícito de las &lt;características&gt;.  El problema, entonces, es ¿cómo encontrar  esta tabla? La respuesta viene dada por encontrar  un conjunto de tablas que, por medio de las  llaves foráneas, apuntan a las tablas Ei o Ej. Así, para averiguar por las  tablas intermedias solo es  necesario contar con:</font></p>     <p align="justify"><font face="Verdana" size="2">  1. Las tablas principales que componen el  &lt;sujeto&gt; y el camino de navegación explícito de  las &lt;características&gt; de una regla, estas tablas se  corresponden con los términos principales del  negocio con los que es enunciada la regla.</font></p>     <p align="justify"><font face="Verdana" size="2">  2. Un método de búsqueda a través del esquema  relacional que dada una tabla sea capaz  de devolver todas las tablas que la referencien.</font></p>     <p align="justify"><font face="Verdana" size="2">  Se propone representar el esquema relacional  como un grafo dirigido, en el cual los vértices  constituyen las tablas y las aristas vienen dadas  por las interrelaciones que se establecen entre  las tablas, de manera que un vértice Eresse conecta  a un vértice Ej adyacente si en Eresestá  presente una llave foránea que referencia a Ej. A  las tablas que contienen más de 2 arcos de salidase  les llama en esta investigación tablas de resolución.  En este caso Ereses tabla de resolución.  Ver Figura 2.</font></p>     <p align="justify"><a name="f2"></a></p>     <p align="center"><img border="0" src="/img/fbpe/rtfiuz/v36n3/art08.6.jpg" width="395" height="163"></p>     
<p align="justify"><font face="Verdana" size="2">  En esta investigación se trabaja con un  modo de búsqueda, que dado un vértice, obtiene  todos aquellos vértices que lo apuntan, para esto  se utiliza la información que se encuentra en el  catálogo de la base de datos.</font></p>     <p align="justify"><font face="Verdana" size="2">  Cada proveedor de SGBDR ha implementado  el catálogo, de las bases de datos, según le ha  parecido conveniente [18] por lo que es necesario  acceder a los objetos de la base de datos, con características  particulares en cada gestor. En este  trabajo se utiliza el SGBDR SQL Server de Microsoft,  el cual brinda en su documentación la forma  de acceder al catálogo, de manera que se puede  recuperar toda la información necesaria.</font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2">  Como resultado, se obtiene un conjunto de  pasos que permite la generación automática de la  implementación de cadaregla de negocio:</font></p>     <p align="justify"><font face="Verdana" size="2">  1. Distinguir los términos del negocio y las  tablas de resolución.  2. Reconstruir la regla por medio de la inserción  de las tablas de resolución.  3. Determinar en cuál tabla insertar el disparador.</font></p>     <p align="justify"><font face="Verdana" size="2">  El problema de la posible existencia de tablas  de resolución en el camino de navegación  en una regla obliga a la formulación de dos preguntas:</font></p>     <p align="justify"><font face="Verdana" size="2">  – ¿Cómo se distingue la existencia de tablas  de resolución entre, al menos, dos de los  términos constituyentes de una regla?</font></p>     <p align="justify"><font face="Verdana" size="2">  – ¿Dónde ocurre el evento desencadenador  de la violación de la regla?  Identificación de la tabla de resolución.</font></p>     <p align="justify"><font face="Verdana" size="2">  Para la identificación de la(s) tabla(s) de resolución,  se chequea cada regla de negocio. Por  cada regla se tiene una lista ordenada de sus términos,  que comienza en el sujeto y continúa con  los términos del camino de navegación explícito  de la cláusula &lt;características&gt;. Se escogen dos  a dos los términos consecutivos del camino de  navegación explícito, y se busca la existencia de  una tabla de resolución. Una tabla de resolución  tiene determinadas propiedades:</font></p>     <p align="justify"><font face="Verdana" size="2">  – Las llaves foráneas son las llaves primarias  de las tablas que corresponden a términos  del negocio que intervienen en la regla.</font></p>     <p align="justify"><font face="Verdana" size="2">  – Las llaves foráneas en cuestión están contenidas  en la llave primaria de la tabla de  resolución.</font></p>     <p align="justify"><font face="Verdana" size="2">  En base a estas propiedades se buscan la(s)  tabla(s) de resolución.</font></p>     <p align="justify"><font face="Verdana" size="2">  <b>Reconstrucción de la regla.</b></font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2">  Con la tabla o tablas de resolución correspondientes  y las tablas del camino de navegación  explícitose construye el camino de navegación  con todas las tablas implicadas, llamado camino  de navegación completo.</font></p>     <p align="justify"><font face="Verdana" size="2">  En el proceso de transformación de la regla  a una expresión válida SQL para la base de  datos relacional, se sustituye el camino de navegación  completo, por un acople entre las tablas  homólogas a los términos de la regla, contando  con la información contenida en las tablas  de resolución. A este proceso se le llama reconstrucción  de la regla.</font></p>     <p align="justify"><font face="Verdana" size="2">  La inserción de la tabla de resolución en el  camino de navegación puede verse también como  una reducción del problema al transformar todos  los caminos de navegación explícitos a caminos denavegación completos,  incluyendo las tablas de  resolución. Nótese que una interrelación  m:m(muchos-muchos) en un esquema conceptual  es transformada a una secuencia de interrelaciones  [1:m, 1:m, ...].</font></p>     <p align="justify"><font face="Verdana" size="2">  Construcción de la lista de eventos</font></p>     <p align="justify"><font face="Verdana" size="2">  Luego de reconstruir la regla, para responder:  ¿a dónde ocurre el evento desencadenador  de la violación?, se pudiera considerar, a  priori, que el evento siempre ocurre en la tabla  donde se realiza alguna de las operaciones sobre  base de datos: insertar, actualizar y eliminar.  Sin embargo, esta respuesta no es totalmente  correcta.</font></p>     <p align="justify"><font face="Verdana" size="2">  Supóngase la regla: E1 no puede tener  E2.atributo &gt; 5.</font></p>     <p align="justify"><font face="Verdana" size="2">  Y supóngase que los términos constituyentes  E1 y E2 se interrelacionan a través de una  tabla de resolución, que no se conoce (similar a  la Figura 2, donde Ei es E1 y Ej es E2 ); al insertar  una nueva fila en la Tabla E2, en la cual el atributo  toma un valor mayor que 5, aparentemente  se realiza una violación de la regla, pero no es  así, porque entonces la regla se podría expresar  como E2 no puede tener E2.atributo &gt; 5, que es  una regla más sencilla que la presentada anteriormente.</font></p>     <p align="justify"><font face="Verdana" size="2">  Hay que tener presente que violación es chequeada  con respecto al camino de navegación entre  todas las tablas constituyentes de la regla, que  se le ha llamado camino de navegación completo.</font></p>     <p align="justify"><font face="Verdana" size="2">  En la Tabla E2 se pueden insertar artículos  que no tengan relación con la tabla E1 (ver Figura  3). Sin embargo al insertar una fila en la Tabla  E12, tiene que tener un artículo relacionado  en la Tabla E1 y un artículo relacionado en la Tabla  E2,con atributo &gt;5.</font></p>     <p align="justify"><a name="f3"></a></p>     ]]></body>
<body><![CDATA[<p align="center"><img border="0" src="/img/fbpe/rtfiuz/v36n3/art08.7.jpg" width="607" height="155"></p>     
<p align="justify"><a name="f4"></a></p>     <p align="center"><img border="0" src="/img/fbpe/rtfiuz/v36n3/art08.8.jpg" width="591" height="226"></p>     
<p align="justify"><font face="Verdana" size="2">  Por tanto, la violación nunca se originará en  E2, como se puede pensar con premura, sino en  la Tabla E12, es decir, en la tabla de resolución.  Pero no siempre ocurre del mismo modo. Si así  fuera, ¿qué quedaría para aquellas reglas que no  poseen interrelaciones con tablas auxiliares involucradas,  es decir cuando el camino de navegación  completo se corresponde con el camino de  navegación explícito?</font></p>     <p align="justify"><font face="Verdana" size="2">  El evento no depende exactamente de una  tabla de resolución, sino de una característica de  este tipo de tablas. La tabla de resolución representa  un vértice del cual “salen” aristas que lo conectan  con los vértices adyacentes. A las tablas  que solamente tienen aristas salientes se convierten  en candidatas para lanzar el evento, y se  les llama tabla común (ver Figura 4).</font></p>     <p align="justify"><b><font face="Verdana" size="2">  </font></b><font face="Verdana" size="2">  Se tienen dos tablas comunes, la E2 y la E4,  pues gr+(E2) = 0 y gr+(E4) = 0; donde gr+ se refiere a  cantidad de aristas entrantes.</font></p>     <p align="justify"><font face="Verdana" size="2">  En base a esto es posible construir una  lista de eventos, denominada LE (lista de eventos).</font></p>     <p align="justify"><font face="Verdana" size="2">  Una LE es una lista donde, para cada regla  se relaciona el evento de violación con la tabla  donde ocurre el evento. Una estructura sencilla  que materializa la LE, es una lista de variables binarias.  El orden de la lista corresponde al orden  de las tablas del camino si se parte del sujeto.  Entonces se presenta la LE, como Tablas{V1, V2,  …, Vn}, con Vi {0, 1}.</font></p>     <p align="justify"><font face="Verdana" size="2">  Para el caso de la Figura 4 la LE quedaría  como sigue: Tablas{0, 1, 0, 1}.  Luego de conformada la LE, ya se está listo  para generar de manera automática el chequeo  de restricciones en los lugares adecuados a través  de los disparadores; en el ejemplo anterior se  generarán los disparadores en E2 y E4.</font></p>     <p align="justify"><font face="Verdana" size="2"><b>  Conclusiones</b></font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2">  Este artículo muestra el conocimiento  esencial para determinar cuáles tablas de una  base de datos deben ser chequeadas para el cumplimiento  de una regla de restricción, y así generar  automáticamente las implementaciones de  las reglas y el modo de hacerlas cumplir.</font></p>     <p align="justify"><font face="Verdana" size="2">  Se obtiene un conjunto de pasos para resolver  el problema de dónde chequear las reglas, estos  son:</font></p>     <p align="justify"><font face="Verdana" size="2">  1. Distinguir los términos del negocio y las  tablas de resolución.</font></p>     <p align="justify"><font face="Verdana" size="2">  2. Reconstruir la regla por medio de la inserción  de las tablas de resolución.</font></p>     <p align="justify"><font face="Verdana" size="2">  3. Determinar en cuál tabla insertar el disparador.</font></p>     <p align="justify"><font face="Verdana" size="2">  Con el paso tres (3) se construye la lista de  eventos, que permitirá generar un disparador en  cada tabla cuyo valor correspondiente en la lista  de eventos es uno (1). Con este disparador se chequea  el cumplimiento de la regla.</font></p>     <p align="justify"><font face="Verdana" size="2">  Se presupone la correspondencia entre los  nombres de las tablas y atributos con los términos  de las entidades principales del negocio y sus  características; para la tablas que se forman de  las interrelaciones muchos- muchos del modelo  conceptual no hay convenio de nombre, si estas  no corresponden a entidades reconocibles del negocio.</font></p>     <p align="justify"><font face="Verdana" size="2">  <b>Referencias bibliográficas</b></font></p>     <!-- ref --><p align="justify"><font face="Verdana" size="2">  1. Morgan, T.: “Business Rules and Information  Systems: Aligning IT with Business Goals”,  Addison Wesley, Indianapolis, USA, 2002.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=2389149&pid=S0254-0770201300030000800001&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref -->  &nbsp;</font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2">2. Ross, R.G.: &quot;What Is a  Business Rule?&quot;. Business  Rules Journal, Vol. 11 No. 3 (2010) 1-4.  Disponible en: <a href="http://www.BRCommunity.com/a2010/b525.html"> http://www.BRCommunity.com/a2010/b525.html</a>   &nbsp;</font></p>     <p align="justify"><font face="Verdana" size="2">3. Daum, B. and U. Merten:  “System Architecture  with XML, 1st Edition”, Morgan  Kaufmann San Francisco, USA, 2002.  &nbsp;</font></p>     <p align="justify"><font face="Verdana" size="2">4. Hay, D. and K.A. Healy: &quot;Defining  businessrules- what are they really? Technical  Report 1.3&quot; (2000). Disponible en: <a href="http://businessrulesgroup.org/first_paper/br01c0.htm"> http://businessrulesgroup.org/first_paper/br01c0.htm</a>   &nbsp;</font></p>     <p align="justify"><font face="Verdana" size="2">5. Von Halle, B. and G. Ronald:  “Business rules  applied: building better systems using the  business rules approach”, John Wiley &amp;  Sons, New York, 2002.  &nbsp;</font></p>     <!-- ref --><p align="justify"><font face="Verdana" size="2">6. OMG: &quot;Object Constraint  Language&quot;. Object  Management Group, Inc. (2010). Disponible  en: <a href="http://www.omg.org/spec/OCL/2.2/PDF/"> http://www.omg.org/spec/OCL/2.2/PDF/</a> .    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=2389155&pid=S0254-0770201300030000800006&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref -->  &nbsp;</font></p>     <p align="justify"><font face="Verdana" size="2">7. Ivanov, A.N.: &quot;Graphic  Language for Describing  Constraints on Diagrams of UML  Classes&quot;. Programming and Computer Software,  Vol. 30, No. 4 (2004) 204-208.  &nbsp;</font></p>     <p align="justify"><font face="Verdana" size="2">8. Santos, R. and H. Invernizzi:  &quot;OCL – Estado  del Arte. “Facultad de Ciencias y Tecnología,  Universidad Nova de Lisboa (2004). Disponible  en: <a href="http://pwp.netcabo.pt/rmss/ficheiros/textos/OCL%20-%20Paper20Draft.pdf"> http://pwp.netcabo.pt/rmss/ficheiros/textos/OCL%20-%20Paper20Draft.pdf</a></font></p>     <p align="justify"><font face="Verdana" size="2">.  &nbsp;</font></p>     <p align="justify"><font face="Verdana" size="2">9. Zimbrão, G. et al.: &quot;Enforcement  of Business  Rules in Relational Databases Using Constraints&quot;  (2002). Disponible en: <a href="http://www.mii.lt/informatica/pdf/INFO764.pdf"> http://www.mii.lt/informatica/pdf/INFO764.pdf</a>   &nbsp;</font></p>     ]]></body>
<body><![CDATA[<!-- ref --><p align="justify"><font face="Verdana" size="2">10. Demuth, B.: “The Dresden  OCL Toolkit and  its Role in Information Systems Development”.  Memorias de: 13th International  Conference on Information Systems Development: Methods and Tools, Theory and  Practice, Vilnius, Lithuania, 2004. Disponible  en: svn-st.inf.tu-dresden.de/svn/  dresdenocl/branches/legacy/&nbsp; <a href="http://www.downloads/pdfs/BirgitDemuth_TheDresdenOCLToolkit.pdf"> www.downloads/pdfs/BirgitDemuth_TheDresdenOCLToolkit.pdf</a></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=2389161&pid=S0254-0770201300030000800010&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><p align="justify"><font face="Verdana" size="2">&nbsp;  &nbsp;</font></p>     <!-- ref --><p align="justify"><font face="Verdana" size="2">11. Tedjasukmana, V.N., et al.:  “Translation of  OCL Invariants into SQL: 99 Integrity Constraints”.  Tutor: N. refiere. Tesis de Maestría.  Technical University of Hamburg, Alemania,  2006.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=2389163&pid=S0254-0770201300030000800011&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref -->  &nbsp;</font></p>     <p align="justify"><font face="Verdana" size="2">12. Heidenreich, F., C. Wende,  and B.  Demuth: “A Framework for Generating  Query Language Code from OCL Invariants”.  Vol. 9, No. (2008) 4-10. Disponible en: <a href="http://journal.ub.tuberlin.de/eceasst/article/download/108/103"> http://journal.ub.tuberlin.de/eceasst/article/download/108/103</a> .</font></p>     <!-- ref --><p align="justify"><font face="Verdana" size="2">  13. Konermann, A.: “The Parser Subsystem of  the Dresden OCL2 Toolkit. Design and Implementation”.  GNU Free Documentation License  (2005). Disponible en: http://svn-st.  inf.tu-dresden.de/svn/dresdenocl/branche  s/legacy/www/papers/ParserDesign.pdf.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=2389166&pid=S0254-0770201300030000800013&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref -->  &nbsp;</font></p>     <p align="justify"><font face="Verdana" size="2">14. Martínez Hernández, J.L.:  “Introduciendo  semántica en un proceso de desarrollo software  a través de reglas de negocio”. Tutor:  P.M.F. José Carlos González Cristóbal. Tesis  de Doctoral Escuela Técnica Superior de  Ingenieros de Telecomunicación Universidad  Politécnica de Madrid, Madrid, 2010.  &nbsp;</font></p>     <p align="justify"><font face="Verdana" size="2">15. Paton, N.W. and O.  Díaz:&quot;Active Database  Systems&quot;. ACM Computing Surveys, Vol. 31  No. 1 (1999) 63-103. Disponible en: <a href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.34.8207&rep=rep1&type=pdf"> http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.34.8207&amp;rep=rep1&amp;type=pdf</a>   &nbsp;</font></p>     <p align="justify"><font face="Verdana" size="2">16. Pérez Alonso, A.:  “Aplicación para reglas de  restricción en negocios”. Tutor: M.B. Boggiano-  Castillo, MSc. and R. Pérez- Vásquez, Dr.  Tesis de Licenciatura. Departamento de Bases  de Datos, Universidad Central “Marta  Abreu” de Las Villas, Santa Clara, 2008.  &nbsp;</font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2">17. Martínez del Busto, M.E.,  et al.: &quot;Business  vocabulary of kidney transplant with ontological  approach for a generic fact model&quot;.  Revista Facultad de Ingenieríaa Universidad  de Antioquia, Vol. No. 53 (2010) 155-162.  Disponible en: <a href="http://www.scielo.org.co/scielo.phpscript=sci_arttext&pid=S0120-62302010000300014"> www.scielo.org.co/scielo.phpscript=sci_arttext&amp;pid=S0120-62302010000300014</a>.   &nbsp;</font></p>     <p align="justify"><font face="Verdana" size="2">18. Kriegel, A. and B.M.  Trukhnov: “SQL Bible”,  Wiley Publishing, Inc., Indianapolis, Indiana,  2003.  &nbsp;</font></p>     <p align="justify"><font face="Verdana" size="2">Recibido el 26 de Noviembre de  2012  En forma revisada el 16 de Septiembre de 2013  &nbsp;</font></p>     <p align="justify"><font face="Verdana" size="2">Rev. Téc. Ing. Univ. Zulia.  Vol. 36, No. 3, 2013  Inserción de reglas de negocio 261</font></p>       ]]></body>
<back>
<ref-list>
<ref id="B1">
<label>1</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Morgan,]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
</person-group>
<source><![CDATA[Business Rules and Information Systems: Aligning IT with Business Goals]]></source>
<year>2002</year>
<publisher-loc><![CDATA[Indianapolis ]]></publisher-loc>
<publisher-name><![CDATA[Addison Wesley,]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B2">
<label>2</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Ross,]]></surname>
<given-names><![CDATA[R.G]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[What Is a Business Rule?]]></article-title>
<source><![CDATA[Business Rules Journal]]></source>
<year>2010</year>
<volume>11</volume>
<numero>3</numero>
<issue>3</issue>
<page-range>1-4</page-range></nlm-citation>
</ref>
<ref id="B3">
<label>3</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Daum,]]></surname>
<given-names><![CDATA[BU]]></given-names>
</name>
</person-group>
<source><![CDATA[Merten System Architecture with XML]]></source>
<year>2002</year>
<edition>1st</edition>
<publisher-loc><![CDATA[San Francisco ]]></publisher-loc>
<publisher-name><![CDATA[Morgan Kaufmann]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B4">
<label>4</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Hay]]></surname>
<given-names><![CDATA[DKA]]></given-names>
</name>
</person-group>
<source><![CDATA[Healy: Defining businessrules- what are they really?]]></source>
<year>2000</year>
<publisher-name><![CDATA[Technical Report 1.3]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B5">
<label>5</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[VonHalle,]]></surname>
<given-names><![CDATA[BG]]></given-names>
</name>
</person-group>
<source><![CDATA[Ronald Business rules applied: building better systems using the business rules approach]]></source>
<year>2002</year>
<publisher-name><![CDATA[John Wiley & Sons, New York]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B6">
<label>6</label><nlm-citation citation-type="book">
<collab>OMG</collab>
<source><![CDATA[Object Constraint Language]]></source>
<year>2010</year>
<publisher-name><![CDATA[Object Management Group, Inc]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B7">
<label>7</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Ivanov,]]></surname>
<given-names><![CDATA[A.N]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Graphic Language for Describing Constraints on Diagrams of UML Classes]]></article-title>
<source><![CDATA[Programming and Computer Software]]></source>
<year>2004</year>
<volume>30</volume>
<numero>4</numero>
<issue>4</issue>
<page-range>204-208</page-range></nlm-citation>
</ref>
<ref id="B8">
<label>8</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Santos]]></surname>
<given-names><![CDATA[RH.]]></given-names>
</name>
<name>
<surname><![CDATA[Invernizzi]]></surname>
<given-names><![CDATA[X]]></given-names>
</name>
</person-group>
<source><![CDATA[OCL - Estado del Arte]]></source>
<year>2004</year>
<publisher-name><![CDATA[Facultad de Ciencias y Tecnología, Universidad Nova de Lisboa]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B9">
<label>9</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Zimbrão,]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
<name>
<surname><![CDATA[et]]></surname>
<given-names><![CDATA[al]]></given-names>
</name>
</person-group>
<source><![CDATA[Enforcement of Business Rules in Relational Databases Using Constraints]]></source>
<year>2002</year>
<publisher-name><![CDATA[X, x]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B10">
<label>10</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Demuth]]></surname>
<given-names><![CDATA[B]]></given-names>
</name>
</person-group>
<source><![CDATA[The Dresden OCL Toolkit and its Role in Information Systems Development.]]></source>
<year></year>
<conf-name><![CDATA[13th International Conference on Information Systems Development: Methods and Tools, Theory and Practice]]></conf-name>
<conf-date>2004</conf-date>
<conf-loc>Vilnius </conf-loc>
</nlm-citation>
</ref>
<ref id="B11">
<label>11</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Tedjasukmana]]></surname>
<given-names><![CDATA[V.N]]></given-names>
</name>
</person-group>
<source><![CDATA[Translation of OCL Invariants into SQL: 99 Integrity Constraints]]></source>
<year></year>
</nlm-citation>
</ref>
<ref id="B12">
<label>12</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Heidenreich]]></surname>
<given-names><![CDATA[FC]]></given-names>
</name>
<name>
<surname><![CDATA[Wende]]></surname>
<given-names><![CDATA[B.]]></given-names>
</name>
<name>
<surname><![CDATA[Demuth.]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Framework for Generating Query Language Code from OCL]]></article-title>
<source><![CDATA[Invariants]]></source>
<year>2008</year>
<volume>9</volume>
<numero>x</numero>
<issue>x</issue>
<page-range>4-10</page-range></nlm-citation>
</ref>
<ref id="B13">
<label>13</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Konermann,]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<source><![CDATA[The Parser Subsystem of the Dresden OCL2 Toolkit]]></source>
<year>(200</year>
<month>5)</month>
<publisher-name><![CDATA[Design and Implementation, GNU Free Documentation License]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B14">
<label>14</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Martínez Hernández]]></surname>
<given-names><![CDATA[J.L]]></given-names>
</name>
</person-group>
<source><![CDATA[Introduciendo semántica en un proceso de desarrollo software a través de reglas de negocio]]></source>
<year></year>
</nlm-citation>
</ref>
<ref id="B15">
<label>15</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Paton,]]></surname>
<given-names><![CDATA[NW.]]></given-names>
</name>
<name>
<surname><![CDATA[O.]]></surname>
<given-names><![CDATA[Díaz]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Active Database Systems]]></article-title>
<source><![CDATA[ACM Computing Surveys]]></source>
<year>1999</year>
<volume>31</volume>
<numero>1</numero>
<issue>1</issue>
<page-range>63-103</page-range></nlm-citation>
</ref>
<ref id="B16">
<label>16</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Pérez Alonso]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<source><![CDATA[Aplicación para reglas de restricción en negocios]]></source>
<year></year>
</nlm-citation>
</ref>
<ref id="B17">
<label>17</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Martínez del Busto]]></surname>
<given-names><![CDATA[ME]]></given-names>
</name>
<name>
<surname><![CDATA[et]]></surname>
<given-names><![CDATA[al]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Business vocabulary of kidney transplant with ontological approach for a generic fact model]]></article-title>
<source><![CDATA[Revista Facultad de Ingenieríaa Universidad de]]></source>
<year>2010</year>
<volume>Antioquia</volume>
<numero>53</numero>
<issue>53</issue>
<page-range>155-162</page-range></nlm-citation>
</ref>
<ref id="B18">
<label>18</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Kriegel]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[BM.]]></surname>
<given-names><![CDATA[Trukhnov]]></given-names>
</name>
</person-group>
<source><![CDATA[SQL Bible]]></source>
<year>2003</year>
<publisher-loc><![CDATA[Indianapolis^eIndiana Indiana]]></publisher-loc>
<publisher-name><![CDATA[Wiley Publishing, Inc.]]></publisher-name>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
