[Php-avanzado] Normalizacion Juan Manuel V3
Leonardo Tadei - Pegasus Tech Supply
leonardot en pegasusnet.com.ar
Sab Dic 8 18:06:28 ART 2012
Hola Juan Manuel,
la ojeé y se ve bien.
Para terminar, por favor mandame la versión actualizada de la SRS, le
pego un vistazo en general, y si todo sale como espero, damos esto por
terminado.
Saludos!
El sáb, 08-12-2012 a las 16:41 -0300, Juan Manuel P. escribió:
> Leo hice las correcciones que me mencionas te respondo abajo de cada
> una, borro lo que no tiene correccion y copio la nueva Normalizacion.
>
> In his heart, in his eyes
> In his soul, there’s no sign of thunder
> Screams, can you hear the screaming
> When another restless soul must die
>
>
> > From: leonardot en pegasusnet.com.ar
> > To: php-avanzado en pato2.fi.mdp.edu.ar
> > Date: Sat, 8 Dec 2012 16:18:44 -0300
> > Subject: Re: [Php-avanzado] Normalizacion Juan Manuel V3
> >
> > Hola Juan Manuel,
> >
> > Es una solución tan mala (o tan buena) como el campo discriminador.
> > Todo lo que no esté en 3FN te va a traer unas consecuencias u otras
> en
> > el código.
> > De todas formas y como te decía, las imágenes son un complemente que
> no
> > hace al núcleo del problema, y al menos el impacto quedará acotado
> al
> > manejo de las imágenes.
> > Recordá poner un comentario en esta tabla en la normalización para
> > aclarar esta decisión y los motivos.
> >
>
> Opte por tener las 3 tablas de imagenes, en si no me significan mayor
> problema, lo que si es que los nombres de los campos en las tres
> tablas van a ser los mismos, solamente cambia el nombre de cada tabla,
> de manera que las consultas que se realicen sean mas sencillas de
> intercambiar para cada sutiacion de Mascota.
>
> > > > > Mas_Codigos
> > > > > [
> > > > > mcod_id: integer(autoincremental);
> > > > > mcod_link: varchar(100);
> > > > > mcod_mas_id: integer; (FK)
> > > > > mcod_sit_id:integer;(FK)
> > > > > mcod_fecalta: timestamp;
> > > > > ]
> > > >
> > > > Esta tabla no va.
> > > > El link de aprobación depende directamente y solo depende de la
> > > Mascota
> > > > X a que corresponde, por tanto la normalización no dice que
> tiene
> > > que
> > > > estar en tabla aparte, sino como parte de la entidad de la que
> > > depende.
> > >
> > > Ok, la borre. Igual el sentido de esta tabla era no almacenar los
> > > codigos por demasiado tiempo. Se supone que pasado los 3 dias cada
> > > codigo se borraria, incluso antes si el contacto valida el email.
> >
> > El sentido de existir o no de una tabla lo da la normalización, y no
> la
> > duración del dato u otros factores...
> > Si no querés mantener el dato, luego de validado asignale NULL.
> >
> >
> > > > Con el id de situación, estás usando acá de nuevo un campo
> > > > discriminador. En este caso, no es una cuestión lateral del
> > > > almacenamiento, así que sí vas a tener que normalizarlo y crear
> un
> > > > almacenamiento para las Observaciones de cada Mascota X que las
> use.
> > > >
> > > > Releyendo la SRS para validar la normalización, me acabo de dar
> > > cuenta
> > > > de que no le encuentro sentido a tener una Observación de
> Mascota
> > > > Encontrada.
> > > > Está bueno que si uno ve una Mascota Perdida, pueda avisar que
> la
> > > vio
> > > > en determinado lugar. Pero en qué situación alguien reportaría
> que
> > > vio
> > > > una Mascota Encontrada?
> > >
> > > La reportaria si la conoce, actualmente tengo 2 conocidos que han
> > > encontrado en la calle a 2 perros. Suponete que hay alguien que ve
> la
> > > foto y los reconoce, entonces completaria un Aviso de Observacion
> de
> > > Mascota Encontrada, de esta forma el sistema pone en contacto a la
> > > persona que reporta que lo conoce al perro y la persona que
> > > actualmente lo encontro.
> >
> > Ahhh... ahora caigo con qué es lo que me desentonaba.
> > Según tu descripción, esto no es una "Observación de Mascota
> > Encontrada" sino un "Conocimiento de Mascota Encontrada" porque lo
> que
> > se alguien reporta es que conoce al animal que otro encontró.
> >
> > Es importante que la frase que define a cada cosa tenga el sentido
> > correcto, porque si no uno se forma una idea diferente a lo que es
> la
> > cosa.
> >
> > No sé si el nombre "Conocimiento de Mascota Encontrada" es el mejor
> de
> > todos, pero seguro que es más fidedigno a la cuestión que
> "Observación
> > de Mascota Encontrada".
> >
> > Qué nombre te parece mejor ponerle a esto? Por qué?
> >
>
> Lo cambie en la Normalizacion y en la BD por "Reconocimiento", creo
> que representa de manera fidedigna la cuestion en si.
>
> Si queres que te reenvie la SRS avisame, hice el cambio en cada RF y
> en el diccionario, paso de llamarse "Aviso de Observacion de Mascota
> Encontrada" a llamarse "Aviso de Reconocimiento de Mascota Encontrada"
>
> > > > No cambies nada en la SRS sobre esto: te quería comentar esta
> > > cuestión.
> > > >
> > > >
> > > >
> > > > > Mas_Reuniones
> > > > > [
> > > > > mreu_id: integer(autoincremental);
> > > > > mreu_mas_id: integer;
> > > > > mreu_sit_id:integer;(FK)
> > > > > mreu_con_id: integer;
> > > > > ]
> > > >
> > > > No me doy cuenta qué es esta tabla...
> > > > Me explicás?
> > > >
> > > Es para los avisos de Reunion. Cuando un contacto encuentra a la
> > > mascota,(ya sea si esta perdido que lo encontro, o si es
> encontrado
> > > que se ubico a la familia) completa este aviso, para que el
> sistema
> > > pase la mascota como Reunida. Sucede que esto es necesario
> almacenarlo
> > > porque si alguien no confirma el mail enviado la mascota no
> pasaria
> > > nunca a Reunida.
> >
> > Entonces tiene demasiado impacto en el software tener acá un campo
> > discriminador en vez de tener esto bien normalizado.
> > Creá un almacenamiento para Aviso de Reunión de Mascota Perdida y
> otro
> > para Aviso de Reunión de Mascota Encontrada.
>
> > > NORMALIZACION V3
> > > Mas_Reuniones_Encontradas
> > > [
> > > mre_id: integer(autoincremental);
> > > mre_mase_id: integer; (FK)
> > > mre_link: varchar(100);
> > > ]
> >
> >
> > El nombre de estas dos tablas de arriba no debería tener la palabra
> > "Aviso" ???
> > Cuesta bastante entender a qué funcionalidad dan soporte si no lo
> > dice...
> >
> Le agregue la palabra Avisos a cada una de las 4 tablas, para que
> tenga relacion con la SRS, acote los nombre del resto porque sino
> quedan demasiado extensos, en su lugar agrego un comentario en cada
> una de las tablas de las tablas.
>
>
> NORMALIZACION V4
>
> Provincias
> [
> pro_id: integer(autoincremental);
> pro_name: Varchar(100);
> ]
>
> Localidades
> [
> loc_id: integer(autoincremental);
> loc_name: Varchar(150);
> loc_pro_id: integer; (FK)
> ]
>
> Especies
> [
> esp_id: integer(autoincremental);
> esp_name: Varchar(100);
> ]
>
> Razas
> [
> raz_id: integer(autoincremental);
> raz_name: Varchar(150);
> raz_esp_id:integer;(FK)
> ]
>
> Tamanos
> [
> tam_id: integer(autoincremental);
> tam_name: Varchar(25);
> ]
>
> Estados_Publicacion
> [
> est_id: integer(autoincremental);
> est_name: Varchar(25); [Activo | Pendiente de Confirmación |
> Pendiente de Publicación | Rechazado]
> ]
>
> Contactos_Mascotas
> [
> con_id: integer(autoincremental);
> con_name: Varchar(50);
> con_email: Varchar(100);
> ]
>
> Contactos_Externos
> [
> cext_id: integer(autoincremental);
> cext_name: Varchar(50);
> cext_email: Varchar(100);
> ]
>
> Sexos
> [
> sex_id:integer(autoincremental);
> sex_name:Varchar(20);
> ]
>
> Mascotas_Perdidas
> [
> mas_id: integer(autoincremental);
> mas_name: Varchar(50);
> mas_sex:Varchar(20);
> mas_sex_id:integer;(FK)
> mas_raza: Varchar(150);
> mas_raz_id:integer;(FK)
> mas_edad: integer;
> mas_obs: text; - allow NULL
> mas_tamano: Varchar(25);
> mas_tam_id:integer;(FK)
> mas_loc: Varchar(150);
> mas_loc_id:integer:(FK)
> mas_prov: Varchar(100);
> mas_est_id: integer; (FK)
> mas_con_id:integer(FK);
> mas_link: varchar(100); - allow NULL
> mas_fecalta: timestamp;
> ]
>
> Mascotas_Encontradas
> [
> mas_id: integer(autoincremental);
> mas_name: Varchar(50);
> mas_sex:Varchar(20);
> mas_sex_id:integer;(FK)
> mas_raza: Varchar(150);
> mas_raz_id:integer;(FK)
> mas_edad: integer;
> mas_obs: text; - allow NULL
> mas_tamano: Varchar(25);
> mas_tam_id:integer;(FK)
> mas_loc: Varchar(150);
> mas_loc_id:integer:(FK)
> mas_prov: Varchar(100);
> mas_est_id: integer; (FK)
> mas_con_id:integer(FK);
> mas_link: varchar(100); - allow NULL
> mas_fecalta: timestamp;
> ]
>
>
> Mascotas_Reunidas
> [
> mas_id: integer(autoincremental);
> mas_name: Varchar(50);
> mas_sex:Varchar(20);
> mas_sex_id:integer;(FK)
> mas_raza: Varchar(150);
> mas_raz_id:integer;(FK)
> mas_edad: integer;
> mas_obs: text; - allow NULL
> mas_tamano: Varchar(25);
> mas_tam_id:integer;(FK)
> mas_loc: Varchar(150);
> mas_loc_id:integer:(FK)
> mas_prov: Varchar(100);
> mas_est_id: integer; (FK)
> mas_con_id:integer(FK);
> mas_link: varchar(100); - allow NULL
> mas_fecalta: timestamp;
> ]
>
> Mas_Pics_P
> [
> mpic_id: integer(autoincremental);
> mpic_name: Varchar(50);
> mpic_mas_id: integer; (FK)
> ]
>
> Mas_Pics_E
> [
> mpic_id: integer(autoincremental);
> mpic_name: Varchar(50);
> mpic_mas_id: integer; (FK)
> ]
>
> Mas_Pics_R
> [
> mpic_id: integer(autoincremental);
> mpic_name: Varchar(50);
> mpic_mas_id: integer; (FK)
> ]
>
>
> Avisos_Obs_P
> [
> avi_id: integer(autoincremental);
> avi_mas_id: integer; (FK)
> avi_cext_id: integer; (FK)
> avi_calle: Varchar(100);
> avi_loc_id: integer; (FK)
> avi_loc:Varchar(150);
> avi_prov:Varchar(100);
> avi_link: varchar(100);
> ]
>
> Avisos_Rec_E
> [
> avi_id: integer(autoincremental);
> avi_mas_id: integer; (FK)
> avi_cext_id: integer; (FK)
> avi_calle: Varchar(100);
> avi_loc_id: integer; (FK)
> avi_loc:Varchar(150);
> avi_prov:Varchar(100);
> avi_link: varchar(100);
> ]
>
> Avisos_Reu_P
> [
> avir_id: integer(autoincremental);
> avir_mas_id: integer; (FK)
> avir_link: varchar(100);
> ]
>
> Avisos_Reu_E
> [
> avir_id: integer(autoincremental);
> avir_mas_id: integer; (FK)
> avir_link: varchar(100);
> ]
>
> Sugerencias
> [
> sug_id: integer(autoincremental);
> sug_name: varchar(50);
> sug_email: varchar(100);
> sug_texto: varchar(500);
> ]
>
> Tipo_Admins
> [
> tad_id: integer(autoincremental);
> tad_name: Varchar(100);
> ]
>
> Admins
> [
> adm_id: integer(autoincremental);
> adm_nombre: Varchar(50);
> adm_apellido: Varchar(50);
> adm_user: Varchar(20);
> adm_pass: Varchar(20);
> adm_email: Varchar(100);
> adm_tad_id: integer; (FK)
> ]
>
> _______________________________________________
> Php-avanzado mailing list
> Php-avanzado en pato2.fi.mdp.edu.ar
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
--
Leonardo Tadei
leonardot en pegasusnet.com.ar
Pegasus Tech Supply
Tel: (+54)(+223) 471-2880
La Salle 1131 - Mar del Plata - Argentina
http://www.pegasusnet.com.ar
http://www.grupopegasus.com
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
Más información sobre la lista de distribución Php-avanzado