consejos parafuturosinstructores mx-marzo2011
TRANSCRIPT
Veremos…
Aportes útiles para la hora de dictar sus cursos GeneXus
Tips para enseñar fácil
Errores más comunes que cometen los alumnos… y recomendaciones!
Sugerencias
Acerca de enseñar fácil…
Enseñar fácil = un arte
Explicar ordenadamente
Cuidado con la velocidad
Usar palabras fáciles
Describir qué se va a mostrar, antes de resolverlo
Mostrar paso a paso..
Enseñar fácil = un arte
Emplear términos adecuados…
Errores y dudas más comunes…
Tema: Diseño de transacciones
Errores comunes:
• Alumnos que no terminan de entender diferencia:
(A1* A2 (B1* B2)
(A1* A2 (B1* B2)
+
B1*B2
Tema: Diseño de transacciones
Errores comunes:
• Alumnos que definen transacciones de más:
Se crean tablas físicas de más
Se almacenan datos redundantes
Quedan definidas complejidades innecesarias
Tema: Diseño de transacciones
Errores comunes:
• Alumnos que definen componentes de más en las claves
• Alumnos que no tienen fijados ciertos conocimientos puntuales, que les serían de gran ayuda
Tema: Diseño de transacciones
Propuesta para enseñar fácil este tema:
ENTERPRISE #1 ENTERPRISE #2
PROVIDER PRODUCTPROVIDER PRODUCT
Tema: Diseño de transacciones
PROVIDER PRODUCT
ENTERPRISE #1
ProductId*ProductName
ProviderId*ProviderName (ProductId* ProductName)
ProductId*ProductName (ProviderId* ProviderName)
ProviderId*ProviderName
ProductId*ProductName (ProviderId* ProviderName)
ProviderId*ProviderName (ProductId* ProductName)
ProductId*ProductName
ProviderId*ProviderName
ProviderId*ProductId*
Tema: Diseño de transacciones
PROVIDER PRODUCT
ENTERPRISE #1
TABLAS FISICAS RESULTANTES:ProductId* ProductName
ProviderId* ProviderName
ProviderId* ProductId*
Tema: Diseño de transacciones
ENTERPRISE #2
PROVIDER PRODUCT
2 ALTERNATIVAS DE DISEÑO DIFERENTES
GENERAN TABLAS FÍSICAS DIFERENTES
Tema: Diseño de transacciones
ProviderId*ProviderName
ProductId*ProductNameProviderIdProviderName
ALTERNATIVA #1:
CustomerId*CustomerName
InvoiceId*InvoiceDate….CustomerIdCustomerName
ENTERPRISE #2
PROVIDER PRODUCT
Tema: Diseño de transacciones
ProviderId*ProviderName
ProductId*ProductNameProviderIdProviderName
ALTERNATIVA #1:
ProviderId*ProviderNameProductIdProductName
ProductId*ProductName
PROVIDER PRODUCT
ENTERPRISE #2
PROVIDER PRODUCT
Tema: Diseño de transacciones
ProviderId*ProviderName (ProductId* ProductName)
ALTERNATIVA #2:
ProviderId*ProviderName
ProductId*ProductNameProviderIdProviderName
ProviderId* ProviderName
ProviderId* ProductId* ProductName
ProviderId* ProviderName
ProductId* ProductName ProviderId
ALTERNATIVA #1:
Prop. Nullable = YesENTERPRISE #2
PROVIDER PRODUCT
Tema: Diseño de transacciones
ENTERPRISE #2
ProviderId*ProviderName (ProductId* ProductName)
ALTERNATIVA #2:
ProviderId* ProviderName
1 Peter Smith
2 Susan Brown
ProviderId* ProductId* ProductName
1 1 Coke Zero
1 2 …
2 1 Budweiser Beer
2 2 …
PROVIDER PRODUCT
Tema: Diseño de transacciones
PROVIDER PRODUCT
ProviderId*ProviderName (ProductId* ProductName)
¿ ALTERNATIVA #2 ?
ProviderId*ProviderName
ProductId*ProductNameProviderIdProviderName
¿ ALTERNATIVA #1 ?
¿Cómo elegimos cuál?
Dependerá de la realidad a modelar…
CustomerId*CustomerName (InvoiceId* InvoiceDate ….)
CustomerId*CustomerName
InvoiceId*InvoiceDate….CustomerIdCustomerName
CUSTOMER INVOICEENTERPRISE #2
Tema: Diseño de transacciones
PROVIDER PRODUCT
ProviderId*ProviderName (ProductId* ProductName)
¿ ALTERNATIVA #2 ?
ProviderId*ProviderName
ProductId*ProductNameProviderIdProviderName
¿ ALTERNATIVA #1 ?
CustomerId*CustomerName (CustomerPhoneId* CustomerPhoneNumber)
CustomerId*CustomerName
PhoneId*PhoneNumber….CustomerIdCustomerName
CUSTOMER PHONEENTERPRISE #2
Tema: Diseño de transacciones
PROVIDER PRODUCT
ProviderId*ProviderName (ProductId* ProductName)
ProviderId*ProviderName
ProductId*ProductNameProviderIdProviderName
RELACIÓN 1-N “FUERTE” o
“RELACIONADO CON”
RELACIÓN 1-N “DÉBIL” O
“PARTE DE”
¿ ALTERNATIVA #2 ?¿ ALTERNATIVA #1 ?
ENTERPRISE #2
Tema: Diseño de transacciones
Volviendo a esta duda de los alumnos…
¿ Cuál es la diferencia .. ?
(A1* A2 (B1* B2)
(A1* A2 (B1* B2)
+
B1*B2
A B
1-N “DÉBIL”
A B
Tema: Diseño de transacciones
Veamos un error más que cometen los alumnos…
Realidad a ser descripta: Un médico en una fecha, solamente puede tener una consulta Se le asigna un consultorio para atender
DoctorId*DoctorName
MedicalAppointmentDate*DoctorId*RoomId*DoctorNameRoomDescriptionRoomFloor
RoomId*RoomDescriptionRoomFloor
Solución de alumno:
• Definen claves primarias con componentes de más…
Tema: Diseño de transacciones
MedicalAppointmentDate* DoctorId* RoomId*
10/10/2010 1 1
10/10/2010 1 2
10/10/2010 1 3
Para que alumno visualice su error de diseño
DoctorId* DoctorName
1 Jack Miller2 John Brown
RoomId* RoomDescription RoomFloor
1 … 1
2 … 1
3 … 2
esquematizarle las tablas que se crean + datos de prueba
Tema: Diseño de transacciones
A raíz de lo anterior, surge también explicar…
¿Claves primarias compuestas por conjunto de atributos que determinan unicidad? ¿Claves primarias ficticias?
MedicalAppointmentDate*DoctorId*RoomIdDoctorNameRoomDescriptionRoomFloor
MedicalAppointmentId *MedicalAppointmentDateDoctorIdRoomIdDoctorNameRoomDescriptionRoomFloor
Tema: Diseño de transacciones
Tema: Subtipos
• Asusta..
Tema: Subtipos
• Tiene fama de complejo..
• Sin embargo..
¡ Los subtipos permiten representar en GeneXus casos que se dan en la realidad !
nada en GeneXus es complejo
Ejemplo + Explicación fácil :
Tema: Subtipos
PurchaseOrderId*PurchaseOrderDateProviderIdProviderName (ProductId* ProductName ProductPrice ProviderId ProviderName PurchaseOrderLineQuantity)
ProviderId*ProviderName
ProductId*ProductNameProductPriceProviderIdProviderName
Ejemplo + Explicación fácil :
Tema: Subtipos
PurchaseOrderId*PurchaseOrderDateProviderIdProviderName (ProductId* ProductName ProductPrice PurchasOrderLineProviderId PurchasOrderLineProviderName PurchaseOrderLineQuantity)
ProviderId*ProviderName
ProductId*ProductNameProductPriceProviderIdProviderName
¿Solución adecuada?
No
Ejemplo + Explicación fácil :
Tema: Subtipos
PurchaseOrderId*PurchaseOrderDatePurchasOrderProviderIdPurchaseOrderProviderName (ProductId* ProductName ProductPrice ProviderId ProviderName PurchaseOrderLineQuantity)
ProviderId*ProviderName
ProductId*ProductNameProductPriceProviderIdProviderName
Solución
Tema: Reglas en transacciones
y eventos de disparo
REGLAS CON EVENTO DE DISPARO (ON …. )
REGLAS SIN EVENTO DE DISPARO
INTERACTIVAMENTE
Tema: Reglas en transacciones y eventos de disparo
Algunos errores comunes:
¿En una invocación que tiene evento de disparo “on AfterComplete”, es posible enviar atributos por parámetro?
¿No? ¿Si?¿De cuáles niveles?
Sí, del primer nivel
Tema: Reglas en transacciones y eventos de disparo
¿Es correcto asignar valores a atributos… … On AfterComplete?… On BeforeComplete?
Algunos errores comunes:
Tema: Reglas en transacciones y eventos de disparo
No, ya es tarde
Tema: Aplicación del concepto de taba extendida
Actualización directa de la tabla extendida
En rules de transaccionesEn For each
Tema: Aplicación del concepto de tabla extendida
Sitio de capacitaciónhttp://training.genexus.com
¡Muchas gracias!
A/S Maia [email protected]