[Php-avanzado] Ejercicios de normalización
Marco Riedel
marcoriedel en gmail.com
Lun Jun 17 11:40:54 ART 2013
El 17 de junio de 2013 10:32, Leonardo Tadei - Pegasus Tech Supply <
leonardot en pegasusnet.com.ar> escribió:
> Hola Marco,
>
> El dom, 16-06-2013 a las 22:00 -0300, Marco Riedel escribió:
> > Hola Leo te paso el primer ejercicio para ver si esta bien y no hacer
> > todos bajo un concepto erróneo.
>
> En general, sé más generoso con el ancho de los varchar: el
> espacio en
> disco es barato y dos nombres no caben en 20 caracteres.
> Lo de poner un teléfono como un entero tiene sus cuestiones, pero
> las
> charlamos en clase.
> Para las preguntas y respuestas parece más adecuado un campo text
> que
> un varchar, pero en cualquier caso solo 50 char es muy poco!
>
Modificado
>
> Respecto de las claves, te cuento:
>
> En Clientes elegiste usar una clave primaria artificial (el ID
> entero),
> pero en otras tablas estás usando una clave primera natural, y no es
> buena idea mezclar ambos tipos de clave: o todas naturales, o todas
> artificiales.
>
Por lo general uso DNI como clave natural pero no estaba en el ejercicio
por eso agregué id_cliente. En los paises/provincias/ciudades/ al Id_ le
pongo el nombre porque asi queda el registro en el usuario, si todas tienen
que ser artificiales en el cliente quedaría un numero en el campo ciudad
por ejemplo.
> Respecto de las claves primarias, en caso de ser naturales, no
> sirve tu
> definición para ciudades (tenemos en Argentina 3 "Mar Chiquita" y tu
> almacenamiento soporta solo una, salvo que el PFK se refiera a que
> además de clave foránea, también es clave primaria junto con la que
> identificás con PK). Te pasa lo mismo con las Provincias, que en algunos
> países se repiten nombres de estados.
>
Claro serian claves primarias combinadas, no se podrían poner dos Mar
Chiquita en Buenos Aires. Me parece la mejor manera de evitar duplicaciones
si las carga un operador, lo que no quita que te escriban MChiquita pero
eso se validaría desde código no?
>
> Respecto de la normalización, te cuento:
>
> En Clientes, el Código Postal no depende de él, sino de la Ciudad.
> Si
> lo estás pensando como el nuevo CPA, el campo tiene el nombre
> equivocado, pero aún así por 3FN al no depender únicamente de la clave
> primaria, tampoco va ahí.
>
Yo pensé que dependía de la dirección porque por ejemplo en Capital
Federal seria la misma ciudad pero varios códigos postales.
> Tampoco van Id_provincia ni Id_pais, ya que vía la Ciudad se
> establecen
> las relaciones para hallarlos.
>
Si me parecía redundante a mi también.
>
> La tabla Consultasxusuario está bien, pero introducís como nombre
> de
> campo "usuario", que no es parte de este problema. Debería decir
> "cliente", que es como llamaste a la entidad que tiene el nombre y el
> apellido: la semántica es relevante.
>
Modificado
>
>
>
>
> > Clientes
> > id_cliente (int, identity,PK,NN)
> > Nombre (Varchar50, NN)
> > Apellido (Varchar 50, NN)
> > F_Nac (Date, NN)
> > Direccion (Varchar 50)
> > telefono (Int)
> > E_mail (Varchar 50)
> > Id_ciudad(FK, int, NN)
> > C_Postal (Int)
> >
> >
> >
> >
> >
> > Paises
> > id_pais (PK, Unique, NN, Varchar 50)
> >
> >
> >
> > Provincias
> > Id_provincia (PK, Unique, NN,Varchar 50)
> > Id_pais (PFK, NN)
> >
> >
> >
> > CiudesxProvincia
> > Id_ciudad (PK,NN,Varchar 50)
> > Id_provincia (PFK,NN)
> >
> >
> >
> > Consultasxusuario
> > Id_consulta (PK, identity, int, NN)
> > Id_cliente (FK,NN)
> > Pregunta (text, NN)
> > Respuesta (text)
> > id_estado (FK,Int,NN)
> >
> >
> >
> > Estados_consultas
> > Id_estado (PK,Identity, Int,NN)
> > descripcion (Varchar50, Unique, NN)
> >
> >
> >
> >
> > El 15 de junio de 2013 12:00, Leonardo Tadei - Pegasus Tech Supply
> > <leonardot en pegasusnet.com.ar> escribió:
> > Buenas!
> >
> > armé algunos ejercicios de normalización.
> > Dada la importancia del tema y teniendo en cuenta que
> > el próximo Jueves
> > por ser feriado no tenemos clase, les pido que los resuelvan y
> > vayan
> > enviando resultados y dudas por la lista, para ver cómo llevan
> > la
> > cuestión... sobre todo a los que no pudieron estar en clase.
> >
> > Si tienen dudas de contexto, consulten!
> >
> >
> > 1) Crear las tablas necesarias en tercera forma normal para
> > guardar los
> > siguientes datos: Nombre, Apellido, Fecha de Nacimiento,
> > Dirección,
> > Teléfono, e-mail, Ciudad, Código Postal, Provincia, País,
> > Consulta
> > Realizada (pregunta), Respuesta a la Consulta, Estado de la
> > Consulta
> > (Pendiente, Respondida, Descartada)
> >
> > 2) Crear las tablas necesarias en tercera forma normal para
> > guardar los
> > siguientes datos: nombres, apellidos, dirección principal,
> > dirección
> > alternativa, teléfono, ciudad, código postal, provincia y
> > país.
> >
> > 3) Crear las tablas necesarias en tercera forma normal para
> > guardar los
> > siguientes datos: Nombre, Apellido, Dirección, Teléfono,
> > e-mail,
> > Pedidos, Valor del Pedido, Items del Pedido, Pago del pedido.
> >
> > 4) Crear las tablas necesarias en tercera forma normal para
> > guardar los
> > siguientes datos: nombres del paciente, apellidos del
> > paciente, fecha de
> > la consulta, médico que lo atendió (nombre, apellido y
> > especialidad),
> > notas de la consulta, centro de salud (nombre, dirección,
> > ciudad)
> > ----
> > 5) Crear las tablas necesarias en tercera forma normal para
> > guardar los
> > siguientes datos: Nombre, Apellido, Dirección, Teléfono,
> > Categoría
> > Impositiva, Lista de Precios, Cod Artículo, Nombre Artículo,
> > Precio,
> > Tasa de IVA, Nro de Sucursal, Nro de Factura, Fecha, Cliente,
> > Cant de
> > Articulos, Artículos, Forma de Pago.
> >
> > 6) Crear las tablas necesarias en tercera forma normal para
> > guardar los
> > siguientes datos: Título del Libro, ISBN, Crítica del Libro,
> > Autores del
> > Libro, Editorial, Edición. Librería, Cantidad de Libros en la
> > Librería.
> >
> > 7) Crear las tablas necesarias en tercera forma normal para
> > guardar los
> > siguientes datos: Nombre del Foro, Nick del Usuario, Nombre
> > del Usuario,
> > Apellido del Usuario, e-mail del Usuario, Entrada en el foro,
> > Comentario
> > a la entrada en el foro. (Nota, las entradas deben poder verse
> > con sus
> > comentarios, y se permite poner comentarios a los comentarios.
> > Las
> > Entradas y los comentarios muestran su autor)
> >
> >
> > --
> > Leonardo Tadei
> > leonardot en pegasusnet.com.ar
> > Web: http://leonardo.tadei.com.ar
> > Firma pública:
> > http://www.pegasusnet.com.ar/LeonardoTadei-public.key
> >
> > _______________________________________________
> > Php-avanzado mailing list
> > Php-avanzado en pato2.fi.mdp.edu.ar
> > http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
> >
> >
> > _______________________________________________
> > 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
> Web: http://leonardo.tadei.com.ar
> Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
>
> _______________________________________________
> Php-avanzado mailing list
> Php-avanzado en pato2.fi.mdp.edu.ar
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://www3.fi.mdp.edu.ar/pipermail/php-avanzado/attachments/20130617/94a87c33/attachment.html>
Más información sobre la lista de distribución Php-avanzado