Imagine un esquema como tal.Accesos directos de teclas foráneas en la tabla
NOTE TABLE: NoteID, Note, DetailedTaskID, .....
DETAILED TASK TABLE: DetailedTaskID, WorkOrderID, .....
WORKORDER TABLE: WorkOrderID, ProjectID, .....
PROJECT TABLE: ProjectID, .....
Ahora, con este esquema digamos que yo quiero para recuperar todas las notas que están asociados a un proyecto específico termino con un buen número de uniones.
IE: Note JOIN DetailedTask JOIN WorkOrder JOIN Project
Así que mi pregunta es la siguiente, cuando (o nunca) es conveniente agregar una columna "atajo" para una tabla (en este caso Proyectólo)?
Así que, básicamente, cambiar la tabla de nota a esto: ID de nota, nota, DetailedTaskID, Proyectólo
¿Podría simplemente confirmar? Cuando dices "menos peligroso", supongo que te refieres a un escenario en el que un error podría provocar que una clave foránea apunte a un proyecto y una a otro, ¿no? –
Solo así. En este caso, un descuido en su código (o el código de otra persona, agregado más adelante) podría actualizar las claves foráneas en una tabla y no en la otra. O bien, podría actualizar solo algunos de los valores de claves foráneas desnormalizadas en filas en la segunda tabla, pero no en otras. O podría actualizar demasiadas filas en la segunda tabla. Y es posible que no vea estos errores de inmediato, o consistentemente, si a veces obtiene los valores de clave foránea de la tabla normalizada y, en ocasiones, de la tabla desnormalizada. Se puede hacer, pero asegúrese de tener una verdadera necesidad de hacerlo primero. –
Muchas gracias por su aporte ... –