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

Problema logica relaciones

Estas en el tema de Problema logica relaciones en el foro de Bases de Datos General en Foros del Web. amigos el dilema es el siguiente tengo una tabla de clientes y otra tabla llamada rfc, el problema radica en que no sé si sea ...
  #1 (permalink)  
Antiguo 22/05/2010, 12:49
 
Fecha de Ingreso: agosto-2007
Mensajes: 66
Antigüedad: 16 años, 7 meses
Puntos: 1
Problema logica relaciones

amigos el dilema es el siguiente tengo una tabla de clientes y otra tabla llamada rfc, el problema radica en que no sé si sea correcto separar esos datos, ya un cliente puede tener rfc o no puede tener

1, si los campos de la tabla rfc los anexo los campos a la tabla cliente entonces creo no seria lo optimo ya que sólo el 5% de los clientes tienen rfc

2. si agrego una llave foranea de la tabla rfc hacia la tabla de cliente necesitaria tener un un rfc inventando que no contenga datos

3. si agrego una llave foranea a la tabla rfc con el id de la tabla cliente no sé si sea correcto

por si no me explique envio una imagen

espero me cuenten como lo manejan ustedes, saludos (es proveedor como cliente)
  #2 (permalink)  
Antiguo 23/05/2010, 08:35
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema logica relaciones

Cita:
1, si los campos de la tabla rfc los anexo los campos a la tabla cliente entonces creo no seria lo optimo ya que sólo el 5% de los clientes tienen rfc

2. si agrego una llave foranea de la tabla rfc hacia la tabla de cliente necesitaria tener un un rfc inventando que no contenga datos

3. si agrego una llave foranea a la tabla rfc con el id de la tabla cliente no sé si sea correcto
Sin saber qué es un RFC en tu contexto (no todos somos de México), aunque supongo que puede tratarse de alguna condición o documento comercial (recuérdalo para aclarar qué son las cosas cuando son propias de tu país y en otros llevan diferente nombre).
Basándome en la suposición de que se trata de algún tipo de requerimiento comercial o impositivo, lo que surge de esto es simple:
1) Si tener o no un RFC es opcional, pero integra el conjunto de datos posibles de un cliente, entonces es un atributo opcional, por lo que o bien lo pones en una tabla distinta o lo pones como campo que admita NULL (relación no identificatoria), manejando la relación programáticamente.
2) Si el RFC se da con clientes que pueden diferenciarse además por otro atributo o conjunto de atributos, entonces lo que tienes son dos categorías diferentes de clientes. En ese caso se deben crear tres tablas (Cliente, ClienteComercial, ClienteComún, por ejemplo), donde la tabla Cliente contenga solamente atributos comunes a todos los tipos.

Nota: En el caso de crear una tabla distinta para guardar esas RFC, el esquema es exactamente lo que pones en la tercera opción: La PK del cliente va en la tabla del RFC, ya que en ese caso actúa de PK de la segunda tabla.
Pero en ese caso la existencia de la tabla carece de sentido y es preferible crear el RFC como atributo de Cliente y darle valor por default NULL...

Nota final: El modelo gráfico que pones tiene un defecto grave: Estás creando redundancia de datos en la tabla RFC, por cuanto si la relación entre ambas es 1:1, ¿para qué guardas de vuelta los mismos datos en las dos tablas (calle, colonia, etc...)?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: logica, relaciones
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 16:25.