[Php-avanzado] Ejercicios de normalización

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Lun Jun 17 10:32:54 ART 2013


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!

	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.
	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.

	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í.
	Tampoco van Id_provincia ni Id_pais, ya que vía la Ciudad se establecen
las relaciones para hallarlos.

	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.

	


> Clientes 
> id_cliente (int, identity,PK,NN)
> Nombre (Varchar20, NN) 
> Apellido (Varchar 20, NN) 
> F_Nac (Date, NN) 
> Direccion (Varchar 50) 
> telefono (Int) 
> E_mail (Varchar 20) 
> Id_ciudad(FK, int, NN) 
> C_Postal (Int) 
> Id_provincia (FK, int, NN) 
> Id_pais (FK,Int,NN)
> 
> 
> 
> 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_usuario (FK,NN) 
> Pregunta (Varchar 50, NN) 
> Respuesta (Varchar 50) 
> 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



Más información sobre la lista de distribución Php-avanzado