Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Duda diseño BD

Estas en el tema de Duda diseño BD en el foro de Bases de Datos General en Foros del Web. Tengo que crear una BD, en la que hay 3 entidades (cliente, empleado, agencia) y, de cada entidad tengo que almacenar los datos referidos a ...
  #1 (permalink)  
Antiguo 11/12/2008, 11:35
 
Fecha de Ingreso: febrero-2008
Mensajes: 75
Antigüedad: 16 años, 3 meses
Puntos: 0
Duda diseño BD

Tengo que crear una BD, en la que hay 3 entidades (cliente, empleado, agencia) y, de cada entidad tengo que almacenar los datos referidos a la dirección (Direcicón, código postal, población, provincia), por lo que veo 2 opciones:
  1. Que cada entidad tenga como atributos: dirección, código postal, población, provincia.
  2. Crear una entidad llamada dirección, cuyos atributos sean: dirección, código postal, población, provincia, y esté relacionada con las entidades: cliente, empleado, agencia.

¿Cuál creéis que es la mejor opción?
  #2 (permalink)  
Antiguo 11/12/2008, 15:04
Avatar de Thumper  
Fecha de Ingreso: agosto-2004
Ubicación: Jesús María - Lima - Perú
Mensajes: 270
Antigüedad: 19 años, 8 meses
Puntos: 6
Respuesta: Duda diseño BD

Hola, creo que te conviene la primera opción, ya que si usas la segunda vas a tener id's repetidos y vas a tener q manejar un campo de Tipo (empleado, cliente, agencia) y aparte una identificador propio de la tabla, además porque estos atributos son propios de cada entidad.

saludos.
__________________
Martín Alexis Valdivia S.
-----------------------------
"Quisiéramos cambiar el mundo, pero Dios no nos daría el código fuente." CAP
"Si Saber No Es Un Derecho, Seguro Será Un Izquierdo." WD
  #3 (permalink)  
Antiguo 11/12/2008, 18:41
Avatar de jmsev  
Fecha de Ingreso: abril-2006
Mensajes: 47
Antigüedad: 18 años
Puntos: 0
Respuesta: Duda diseño BD

Hola,

Te digo que soy ingeniero informático.

Y sin duda alguna la opción correcta para la reación de la base de datos es la primera, ya que según la teoría de la creación de BBDD se debe hacer así.

También te aconsejo que incluyas en cada tabla una columna que sea la Primary Key de cada una de ellas.

Aconsejo nombres como cliente_id, empleado_id, agencia_id.
  #4 (permalink)  
Antiguo 11/12/2008, 22:03
Avatar de Adolfiten  
Fecha de Ingreso: enero-2008
Ubicación: Frente a mi monitor...
Mensajes: 572
Antigüedad: 16 años, 3 meses
Puntos: 7
Respuesta: Duda diseño BD

Opción 1 sin duda.

Por más que los datos sean los mismos no hay relación que justifique la opción 2.

Saludos.
  #5 (permalink)  
Antiguo 11/12/2008, 23:30
 
Fecha de Ingreso: febrero-2008
Mensajes: 75
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Duda diseño BD

Cita:
Iniciado por jmsev Ver Mensaje
Hola,

Te digo que soy ingeniero informático.

Y sin duda alguna la opción correcta para la reación de la base de datos es la primera, ya que según la teoría de la creación de BBDD se debe hacer así.

También te aconsejo que incluyas en cada tabla una columna que sea la Primary Key de cada una de ellas.

Aconsejo nombres como cliente_id, empleado_id, agencia_id.
Creo que es la primera vez en mi vida que todo el mundo coincide en la respuesta :)

Se me acaba de ocurrir que, si uso la opción "1" y, un empleado se convierte en cliente (pero siguie siendo empleado), entonces se están repitiendo los atributos correspodientes a dirección.



SALU2

Última edición por larios_tnt; 13/12/2008 a las 06:24
  #6 (permalink)  
Antiguo 12/12/2008, 07:41
Avatar de Adolfiten  
Fecha de Ingreso: enero-2008
Ubicación: Frente a mi monitor...
Mensajes: 572
Antigüedad: 16 años, 3 meses
Puntos: 7
Respuesta: Duda diseño BD

Si sabés que empleado puede convertirse en cliente así también como otro tipo de cliente, podrías categorizar cliente.
  #7 (permalink)  
Antiguo 12/12/2008, 10:25
Avatar de Thumper  
Fecha de Ingreso: agosto-2004
Ubicación: Jesús María - Lima - Perú
Mensajes: 270
Antigüedad: 19 años, 8 meses
Puntos: 6
Respuesta: Duda diseño BD

En este caso se permite la duplicidad de los datos, ya q son casos particulares.
__________________
Martín Alexis Valdivia S.
-----------------------------
"Quisiéramos cambiar el mundo, pero Dios no nos daría el código fuente." CAP
"Si Saber No Es Un Derecho, Seguro Será Un Izquierdo." WD
  #8 (permalink)  
Antiguo 13/12/2008, 13:47
 
Fecha de Ingreso: febrero-2008
Mensajes: 75
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Duda diseño BD

Las conclusiones a las que llego son:
  1. Es aceptable la repetición de datos en la BD siempre que sean casos particulares.
  2. Es preferible la no normalización máxima de la BD con el fin de conseguir un menor tiempo en las consultas.
  #9 (permalink)  
Antiguo 16/12/2008, 07:00
 
Fecha de Ingreso: abril-2007
Mensajes: 114
Antigüedad: 17 años
Puntos: 2
Respuesta: Duda diseño BD

Realmente si quieres ser totalmente ortodoxo y quieres resolver ese caso de duplicidad de datos la solución sería crear una nueva entidad llamada por ejemplo "personas" en la que almacenas los datos de cada persona sea cliente o empleado. En las entidades cliente y empleado haces una referencia a la persona y de ese modo una misma persona puede ser empleado y cliente sin duplicar datos.

Ahora bien, este modo de proceder es adecuado dependiendo del uso y el tamaño de la base de datos. Si es habitual que una misma persona aparezca en varias tablas de la base de datos puede ser adecuado hacerlo así, si no, no merece la pena llegar a este nivel de abstracción.

Un saludo
  #10 (permalink)  
Antiguo 16/12/2008, 07:42
 
Fecha de Ingreso: febrero-2008
Mensajes: 75
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Duda diseño BD

Cita:
Iniciado por paloto Ver Mensaje
Realmente si quieres ser totalmente ortodoxo y quieres resolver ese caso de duplicidad de datos la solución sería crear una nueva entidad llamada por ejemplo "personas" en la que almacenas los datos de cada persona sea cliente o empleado. En las entidades cliente y empleado haces una referencia a la persona y de ese modo una misma persona puede ser empleado y cliente sin duplicar datos.

Ahora bien, este modo de proceder es adecuado dependiendo del uso y el tamaño de la base de datos. Si es habitual que una misma persona aparezca en varias tablas de la base de datos puede ser adecuado hacerlo así, si no, no merece la pena llegar a este nivel de abstracción.

Un saludo
Claro, el tema es que como son prácticas de la universidad, pues ese aspecto no lo controlo demasiado... Le preguntaré al profe que si prefiere que las prácticas estén enfocadas a mejorar el tiempo de respuesta o a la normalización de la bd.
  #11 (permalink)  
Antiguo 26/12/2008, 02:07
 
Fecha de Ingreso: febrero-2008
Mensajes: 75
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Duda diseño BD

La respuesta "me ha gustado", porque me ha dicho que mientras que le justifique el por qué lo hago de esa forma le vale.
  #12 (permalink)  
Antiguo 30/12/2008, 15:18
Avatar de Gabo77  
Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 17 años, 5 meses
Puntos: 6
Respuesta: Duda diseño BD

Hola! buen día!

Si me permiten meter la cuchara me gusta el tema de la normalización, por lo que mi propuesta sería la siguiente.

Como bien apunta Paloto, puedes generar una tabla con la información de las personas registradas en tu BD, la tabla, llamada TblPersona, podría ser por ejemplo con los siguientes campos (*IdPersona, Nombre, Apellidos, FechaNacimiento, etc..) luego una tabla llamada TblPersonaTipo, con los campos (*IdPersona, *IdTipo) el campo IdPersona estaría relacionado con el campo IdPersona de la tabla TblPersona y el campo IdTipo con un catalogo de Tipos llamado TblTipos con los campos (*IdTipo, Nombre) que almacenaría los diferentes tipos de personas que se pueden almacenar ejemplo Cliente, Empleado, agencia, etc. así si luego necesitas agregar mas tipos lo tienes resuelto. Ademas habría otra tabla llamada TblDirecciones con los campos (*IdPersona, *IdTipoDireccion, Direccion, CodigoPostal, Poblacion, Provincia), donde el campo IdPersona estaría relacionado con el campo IdPersona de la Tabla TblPersona y el campo IdTipoDireccion con el campo IdTipoDireccion de un catalogo de tipos de direcciones que contendría (*IdTipoDireccion, Nombre) donde podrías almacenar los diferentes tipos de direcciones que puede tener una persona (Direccion Fiscal, Direccion Habitual, Direccion de Entrega, Direccion Alternativa, Direccion en caso de Emergencia, etc.)

Como ves puedes jugar mucho con la estructura de la bd, solo es cuestion de ser creativos.


Saludos!
__________________
Hicimos un pacto con Dios... El no desarrolla Sistemas y nosotros no hacemos milagros....
  #13 (permalink)  
Antiguo 24/01/2009, 16:29
 
Fecha de Ingreso: febrero-2008
Mensajes: 75
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Duda diseño BD

Las condiciones iniciales de la BD son:
  1. Del cliente se deben saber: nombre, apellidos, dirección...., y puede tener varios teléfonos.
  2. Del alojamiento se debe saber: nombre, categoría, servicios, teléfono/s, fax.
  3. En cada alojamiento trabajan como mínimo un empleado pero un empleado sólo puede trabajar en 1 alojamiento.

Sólo voy a poner la parte correspondiente al cliente y al alojamiento por la relación que veo (no pongo la parte de reserva, tipos de alojamiento, tarifas...)

¿¿Qué diseño creéis que es mejor??
La versión 1, es sin salirme del enunciado.
La versión 2, tiene en consideración:
  1. El cliente puede ser un particular o una empresa (en este caso la reserva pertenece a la empresa pero se deben almacenar los datos de la persona que va a ocupar la habitación).
  2. Como los atributos dirección, código postal, población y provincia son comunes para las entidades "persona", "empleado" y "alojamiento"; creo la tabla "dirección" y la relaciono con las entidades mencionadas.
  3. Como los datos de las personas: nombre, apellidos, dirección, son comunes tanto para los cliente como para los empleados, creo la entidad "persona" y se relaciona con "empleados" y "clientes"
  4. Las empresas que son clientes, he considerado que éstas sean franquicias (mismo nombre y distinto CIF) y empresas tipo "bancos" (mismo nombre y cif pero con sucursales); por lo que creo la entidad "empresa matriz" y la entidad "sucursal"

Lo bueno de la versión 1, es que es sencilla y está totalmente normalizada.
Lo bueno de la versión 2, es que es más completa que la 1 (considero el tipo de clientes).

Lo malo de la versión 2, es que tiene relaciones ternarias que no consigo dividir a no ser que elimine la entidad de dirección y lleve los atributos a empleado, alojamiento, persona y sucursal.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:45.