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
Errores comunes:
• Alumnos que creen que con solo definir esta
trn, están modelando una relación M-N:
(A1*A2
(B1*B2)
Errores comunes:
• Alumnos que no terminan de entender diferencia:
(A1*A2
(B1*B2)
(A1*A2
(B1*B2)
+
B1*B2
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
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
Propuesta para enseñar fácil este tema:
ENTERPRISE #1 ENTERPRISE #2
PROVIDER PRODUCTPROVIDER PRODUCT
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*
PROVIDER PRODUCT
ENTERPRISE #1
ProductId* ProductName
ProviderId* ProviderName
ProviderId* ProductId*
Volviendo a esta duda de los alumnos…
¿ Con solo definir esta trn, están modelando una
relación M-N ?
(A1*A2
(B1*B2)
NO
ENTERPRISE #2
PROVIDER PRODUCT
2 ALTERNATIVAS DE DISEÑO DIFERENTES
GENERAN TABLAS FÍSICAS DIFERENTES
ENTERPRISE #2
PROVIDER PRODUCT
ProviderId*ProviderName
ProductId*ProductNameProviderIdProviderName
ALTERNATIVA #1:
CustomerId*CustomerName
InvoiceId*InvoiceDate….CustomerIdCustomerName
ENTERPRISE #2
PROVIDER PRODUCT
ProviderId*ProviderName
ProductId*ProductNameProviderIdProviderName
ALTERNATIVA #1:
ProviderId*ProviderNameProductIdProductName
ProductId*ProductName
PROVIDER PRODUCT
ENTERPRISE #2
PROVIDER PRODUCT
ProviderId*ProviderName(ProductId*ProductName)
ALTERNATIVA #2:
ProviderId*ProviderName
ProductId*ProductNameProviderIdProviderName
ProviderId* ProviderName
ProviderId* ProductId* ProductName
ProviderId* ProviderName
ProductId* ProductName ProviderId
ALTERNATIVA #1:
Nulls=Yes
ENTERPRISE #2
PROVIDER PRODUCT
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 …
ENTERPRISE #2
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 INVOICE
ENTERPRISE #2
PROVIDER PRODUCT
ProviderId*ProviderName(ProductId*ProductName)
¿ ALTERNATIVA #2 ?
ProviderId*ProviderName
ProductId*ProductNameProviderIdProviderName
¿ ALTERNATIVA #1 ?
CustomerId*CustomerName(CustomerPhoneId*CustomerPhoneNumber)
CustomerId*CustomerName
PhoneId*PhoneNumber….CustomerIdCustomerName
CUSTOMER PHONE
ENTERPRISE #2
PROVIDER PRODUCT
ProviderId*ProviderName(ProductId*ProductName)
ProviderId*ProviderName
ProductId*ProductNameProviderIdProviderName
¿ ALTERNATIVA #2 ?¿ ALTERNATIVA #1 ?
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
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*
DoctorNameMedicalAppointmentDate*
DoctorId*
RoomId*
DoctorName
RoomDescription
RoomFloor
RoomId*
RoomDescription
RoomFloor
Solución de alumno:
• Definen claves primarias con componentes de más…
MedicalAppointmentDate* DoctorId* RoomId*
10/10/2010 1 1
10/10/2010 1 2
10/10/2010 1 3
Veamos un error común más…
Para que alumno visualice su error de diseño
DoctorId* DoctorName
1 Jack Miller
2 John Brown
RoomId* RoomDescription RoomFloor
1 … 1
2 … 1
3 … 2
recomendamos esquematizarle las tablas que se crean con datos
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*
RoomId
DoctorName
RoomDescription
RoomFloor
MedicalAppointmentId *
MedicalAppointmentDate
DoctorId
RoomId
DoctorName
RoomDescription
RoomFloor
Algunos errores comunes:
¿Hay atributos disponibles para pasar por parámetro en una invocación que tiene evento de disparo “on AfterComplete”?
¿No?
¿Si?
¿De cuáles niveles?
Sí, del primer nivel
Algunos errores comunes:
¿Es correcto asignar valores a atributos… … On AfterComplete?
… On BeforeComplete?
No, ya es tarde..
Algunos errores comunes:
Definiciones de reglas que involucranatributos del 2do nivel con eventos dedisparo que no ocurren en dicho nivel
Actualización directa de la tabla extendidaEn rules de transacciones
En For each
For each de más innecesariosPara navegar tablas que están disponibles en el contexto, por el concepto de tabla extendida
Top Related