[Php-avanzado] Normalizacion Tesis Roger
Leonardo Tadei - Pegasus Tech Supply
leonardot en pegasusnet.com.ar
Vie Ago 1 02:14:15 ART 2008
Hola Roger,
El jue, 31-07-2008 a las 15:27 -0300, Rogelio Schwindt escribió:
> Leo, seguimos...
>
> > > * La tabla SUBTIPO_ACTO sobra o no entiendo de qué juega. Si es para
> > > relacionar el subtipo de acto con el acto, basta con agregar a la tabla
> > > de subtipo de acto el id del tipo de acto al que se aplica.
> > > -------------------------------------------------------------
> > > Paso a explicarte con datos como lo pense yo...
> > >
> > > TABLA TIPO_ACTO
> > > ID DETALLE
> > > OCA Ordenanza Concejo Academico
> > > OCS Ordenanza Concejo Superior
> > > R.R Resolucion del Rectorado
> > > R.D Resolucion del Decanato
> > >
> > >
> > > TABLA SUBTIPO_ACTO
> > > ID ID_TIPO_ACTO ID_SUBTIPO_DET
> > > 1 OCA RE
> > > 2 OCS RE
> > > 3 R.R AR
> > > 4 OCA DE
> > > 5 R.D AR
> > >
> > >
> > > TABLA SUBTIPO_DET
> > > (esta tabla la hice para no repetir en la tabla de SUBTIPO_ACTO el
> > > detalle
> > > escrito del subtipo)
> > > ID DETALLE
> > > RE Rectificacion
> > > AR At Referendum
> > > DE Derogacion
> > > NO Normal
> >
> > > Entonces la tabla SUBTIPO_DET no se justifica en 3FN (ni para tu
> > > sistema en particular.
> > > Te conviene agregar a SUBTIPO_ACTO un campo DESCRIPCION con esto.
> > OK... ESO HAREMOS ENTONCES...
> > PUEDO AGREGAR UN CAMPO QUE SEA DESCRIPCION CORTA Y ALLI PONER OCA, RR, RD,
> > OCS ?
>
> > Sí, tiene sentido. Pero no es lo mismo que la tabla SUBTIPO_ACTO dónde
> > ya figura OCA, RR, RD etc?
>
> > De última planteá esa estractura y la vemos en conjunto.
>
>
> Bien... te mando ahora como dejaria la tabla de SUBTIPOS y TIPOS de Actos
> que es la que nos faltaria ajustar.
> Ahi lo arregle segun lo que interpreto de tu correccion.
> Lo que me parece que esta mal es el tema de meter el detalle del subtipo de
> acto en la tabla de SUBTIPOS y no en otra aparte como la habia armado antes,
> ya que por ejemplo si mañana cambia AD REFERENDUM, por AT REFERENDUM tengo
> que cambiar el detalle en cada uno de los subtipos que sean AR...
>
> Me estoy enroscando mal con estoooo.... jaja.
Entre los dos estamos dando vueltas. Esto de andar por escrito tiene
eso.
Es correcto el error que ves de la repetición, lo que pasa es que vos
antes ponías la abreviatura (AR por Ad Referndum) como clave para la
relación, y mi observación iba por el lado de que "AR" no es un buen
valor para clave.
En algún momento nos perdimos. La cosa que yo proponía o insinuaba para
que elabores y que soluciona el problema que correctamente ves si cambia
una descripción de SubTipoActo sería:
TIPO_ACTO
1 id INT Autoinc
2 cod_tipo_corto CHAR 3
3 detalle VARCHAR 50
DESC_SUBTIPO_ACTO
1 id INT Autoinc
2 cod_tipo_corto CHAR 3
3 detalle VARCHAR 50
RELACION_TIPO_SUBTIPO
1 id_tipo INT
2 id_subtipo INT
Con esto fijate que los nombres de los tipos y subtipos son
independientes de como están relacionados. Quedamos en 4FN.
Sin embargo el planteo de tablas que hacés no está mal en 3FN, y como
bien decís si Ad Referendum se pasa a llamar distinto, tenés que editar
más de un registro... pero son diferentes subtipos de acto, lo cual lo
justifica.
A estas cosas es las que nos referíamos en clase cuando nos
preguntábamos "hasta dónde vale la pena normalizar?"
Una vez vistas las soluciones "de libro" y el impacto que tiene no
usarlas, estás en condiciones de decidir cómo te sirve más plantar esas
tablas. Justificadas bien, ambas están bien.
> > > * En ACTOS_ADM acabo de ver un dato repetido. Tenés id_unidad_acad y
> > > cod_uni_acad, pero cod_uni_acad está ya en la tabla UNIDAD_ACAD así que
> > > acá sobra.
> > > No debe haber repeticiones!!!
> > > > EL TEMA DE ESE DATO ES QUE PUEDE CAMBIAR CON EL TIEMPO Y POR EJEMPLO
> > > > LO QUE
> > > > HOY ES 02 HACE 6 O 7 AÑOS ERA 0600, POR ESO ME PARECIO BUENO DEJAR ESE
> > > > CAMPO
> > > > EN LA TABLA, YA QUE POR MAS QUE CAMBIE EL COD DE UNIDAD ACADEMICA LOS
> > > > QUE
> > > > ERAN CON 0600 VAN A SEGUIR CON 0600 POR MAS QUE SE CAMBIE A OTRO
> > > > NUEVO...
>
> > Dos cosas: una que si 02 puede cambiar, significa que 02 es una
> > descripción y la tabla necesita otro campo clave... integer y
> > posiblemente autoincremental.
>
> > Otra cosa que surge de esto es una duda: si mañana la unidad académica
> > cambia de 02 a 0023, los actos administrativos viejos deben cambiar el
> > valor de la unidad académica o siguen con el valor histórico que
> > tenían?
> > Dependiendo de esta respuesta tal vez haya que reformular alguna tabla.
>
> Los ACTOS ADMINISTRATIVOS deben mantener su codigo de unidad academica
> historico.
> Ahi modifique dicha tabla y agregue una nueva para poder hacer esto sin
> problemas. Todo esto esta en el adjunto que envio.
Veo tu solución... pero es muuuuy complicada.
Desde lo teórico, si hay que guardar históricos, lo que se hace es
"repetir" en la tabla el dato histórico necesario.
Acá debés estarte preguntado "pero la repetición no es mala?". Y la
respuesta es "sí"... pero esto no es una repetición.
Resulta que una cosa es el código de la u. académica ahora, y OTRA COSA
es el código histórico de la u. académica. Como son dos cosas distintas,
en rigor no hay repetición.
Se entiende la justificación? Si es muy vaga, avisame que te escribo un
ejemplo típico para verla.
La tabla de ACTOS_ADM si no se me está escapando nada quedaría:
1 id INT Autoinc
2 cod_uni_acad CHAR (Código de UA histórico)
3 id_subtipo_acto INT Ver (B) (C) (D)
4 nro_acto INT
5 fecha DATE
6 expediente INT
7 anio Small Int
8 tipo_norma INT Ver (E)
9 id_estado INT Ver (F)
10 id_categoria INT Ver (G)
11 id_interesado INT Ver (H)
12 ruta_doc VARCHAR 60
13 ruta_pdf VARCHAR 60
14 observaciones TEXT
y esta quedaría:
UNIDAD_ACAD
1 id INT Autoinc
2 nombre VARCHAR 60 (código de UA actual)
3 cod_uni_acad CHAR
4 otros_datos TEXT
De hecho si el nombre del Tipo de Acto y del Sub Tipo de Acto pueden
cambiar, también deberían estar en la tabla de ACTOS_ADM.
Lo que estás reflejando ahora son dos cosas distintas a las que
empezaste planteando: una es la información actual, y otra es la
histórica que se almacena.
> > Dale!
> > Igual gana tiempo y andá escribiendo la parte de sesiones, el login y
> > la interfaz de definición de usuario, que es un subsistema
> > independiente.
>
> Ok... igualmente no creo que pueda llegar a tiempo para entregar el sistema
> funcionando...
No te preocupes por esto... pero capaz que en Octubre larga el curso de
Objetos con PHP ;-)
> Bueno... seguimos en contacto.
Dale!
--
Leonardo Tadei
leonardot en pegasusnet.com.ar
http://blog.pegasusnet.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
Más información sobre la lista de distribución Php-avanzado