Professional Documents
Culture Documents
Sin embargo, hay casos en los que podramos necesitar usar nombres de atributos
distintos para el mismo concepto, e indicarle a GeneXus que ambos nombres
significan lo mismo. Veamos esto con un ejemplo
Supongamos que en la agencia de viajes nos piden registrar los vuelos que ofrecen
a los clientes para arribar a una atraccin turstica. Y debemos registrar para cada
vuelo, el aeropuerto desde donde parte, as como tambin el aeropuerto de llegada.
Para representar esto, vamos a crear en primer lugar una transaccin de nombre:
Flight
Pero a los aeropuertos tendremos que poder registrarlos por s mismos, as luego
podremos referenciarlos desde los vuelos.
As que en la transaccin Flight, agregamos los atributos AirportId, y
AirportName. Pero cuando intentamos agregar nuevamente AirportId
GeneXus dice que hay un error, que estamos agregando un atributo con nombre
duplicado!
Cmo podemos hacer entonces para ingresar dos aeropuertos en una misma
transaccin? Evidentemente vamos a tener que usar nombres de atributos
diferentes para almacenar la informacin de partida y de llegada del vuelo que
queremos registrar.
Hemos definido nombres de atributos nuevos pero para GeneXus estos nombres
de atributos no tienen relacin con AirportId ni AirporName.
Tal como dijimos antes, si usamos nombres distintos en la transaccin Flight y en la
transaccin Airport para identificar al concepto de aeropuerto, GeneXus no
establecer ninguna relacin entre ambas transacciones.
Cuando un atributo se llama distinto a otro ya definido pero ambos representan el
mismo concepto podemos decirle a GeneXus que el nuevo atributo es subtipo del
otro y a partir de ese momento GeneXus los considerar exactamente como si
fueran la misma cosa. En nuestro ejemplo, ambos atributos son Aeropuertos.
Para definir subtipos, lo primero que debemos hacer es crear un grupo de subtipos.
No es por el orden en el que aparecen los atributos ni por el nombre que les dimos.
Lo sabe porque el atributo FlightDepartureAirportName se ha definido en un grupo
con el atributo FlightDepartureAirportId. Y este otro, FlightArrivalAirportName, en
otro grupo, con este otro, FlightArrivalAirportId.
En ambos casos a los nuevos nombres de atributos los definimos como subtipos,
representando de esta forma que son Aeropuertos respectivamente.
Hay muchos otros casos en los que es necesario modificarle el nombre a un
atributo para evitar un conflicto o ambigedad.
Referencias mltiples
En el ejemplo que vimos antes, tratamos el caso de referencias mltiples de una
tabla a otra pero estas referencias no tienen por qu ser directas. Desde esta tabla
tenemos dos caminos para llegar a esta otra tabla. Por lo que se necesitarn
subtipos para diferenciarlos.
Subtipos recursivos
Tambin tenemos el caso de una entidad que debe referenciarse a ella misma, por
ejemplo una transaccin de empleados, en la que entre la informacin del
empleado hay que registrar al jefe, que tambin es un empleado.
Especializacin
Por ltimo tenemos el caso en el que tenemos una entidad que registra informacin
general, por ejemplo, de personas (como el nombre, nmero de telfono, direccin,
etctera) y luego tenemos entidades que son una especializacin de esa otra, por
ejemplo, clientes y pasajeros, que en particular son personas.
Estos son slo algunos ejemplos de los mltiples que hay. Slo los mencionamos.
No los estudiaremos en este curso.