MySQL - [CONSULTA] Sobre Diseño.

 
Vista:
Imágen de perfil de Nicolás Ignacio
Val: 34
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

[CONSULTA] Sobre Diseño.

Publicado por Nicolás Ignacio (21 intervenciones) el 03/01/2017 20:19:54
Estimados, gracias de antemano por tomar el tiempo de leer mi consulta, es una duda bastante sencilla para quienes hayan desarrollado algún Sistema de Venta.

Tengo 3 Tablas:

persona_fisica:

id
cuil
apellido_paterno
apellido_materno
nombre_s
...

persona_juridica:

id
cuit
ingresos_brutos
razon_social
inicio_actividades
...

cliente:
id
...
...

El tema es que el Cliente puede ser tanto persona física como persona jurídica, y no se cómo realizar la relación con alguna de las dos tablas, la idea es tener integridad referencial, he hecho con otro sistema lo mismo pero no tenía clientes, sino afiliados, y en ese caso no tuve drama ya que solo podían ser personas físicas.

Se me ocurrió crear 2 tablas clientes, una para cada persona y luego unirlas en las consultas, pero también me modificaría el tema de las facturas, ya que en la tabla para las mismas, traigo los datos de la tabla cliente....

Otra posibilidad es que en la tabla cliente, en vez de poner una FK de alguna de las dos tablas (persona física o persona jurídica), poner el cuil/cuit, y que sea único en la tabla, pero no me da seguridad para la integridad referencial.

Bueno aguardo alguna respuesta y agradezco nuevamente!

Saludos!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 540
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

[CONSULTA] Sobre Diseño.

Publicado por xve (1151 intervenciones) el 03/01/2017 21:48:29
Hola Nicolás, según entiendo, la tabla clientes esta vinculada con la tabla persona_fisica y persona_juridica... es correcto? si es así, como se hace dicha vinculación?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Nicolás Ignacio
Val: 34
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

[CONSULTA] Sobre Diseño.

Publicado por Nicolás Ignacio (21 intervenciones) el 03/01/2017 21:54:01
Hola xve! Muchas gracias por tu respuesta!

Exacto primero existen las personas físicas y/o las jurídicas en el sistema, como en cualquier organización. Estas luego pueden ser proveedores, que a su vez pueden llegar a ser clientes.

Las físicas pueden ser empleados y transformarse en alguna ocasión en clientes porque realizan alguna compra. Entonces la idea es que los clientes pueden ser tanto personas físicas como jurídicas. Lo que no se es cómo vincularlas, con integridad referencial....

Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 540
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

[CONSULTA] Sobre Diseño.

Publicado por xve (1151 intervenciones) el 03/01/2017 22:09:09
Hola Nicolás, gracias por comentarlo...

Lo único que se me ocurre (no se si es la mejor opción), es que tengas dos vinculos en la tabla clientes, y que esta vinculación pueda no existir... algo así:

cliente:
id
persona_fisica_id
persona_juridica_id

Estos dos campos, tienen que tener el valor por defecto de NULL, para luego poder hacer las consultas.

Te sirve?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Nicolás Ignacio
Val: 34
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

[CONSULTA] Sobre Diseño.

Publicado por Nicolás Ignacio (21 intervenciones) el 03/01/2017 22:19:33
Y la he pensado...pero pienso alguna opción más íntegra....también se me ocurre una tabla intermedia o auxiliar...no le encuentro la vuelta al diseño este...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 540
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

[CONSULTA] Sobre Diseño.

Publicado por xve (1151 intervenciones) el 04/01/2017 09:16:32
Con una tabla vinculante, creo que tendras el mismo problema ,tendras que diferenciar la persona fisica de la juridica.

Yo lo que creo que hubiera hecho, es tener en la misma tabla las personas fisicas y juridicas, ya que muchos campos pueden ser comunes, como por ejemplo, nombre, dirección, telefono, ciudad, etc... y tener unos campos que solo se llenan si son personas fisicas o juridicas.

No se si te puede servir...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Nicolás Ignacio
Val: 34
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

[CONSULTA] Sobre Diseño.

Publicado por Nicolás Ignacio (21 intervenciones) el 04/01/2017 12:29:28
Y no es mala idea...caeré en esa. Voy a pensar un poco más y sino tomare ese camino...

La cuestión es que pierdo un poco de normalización al tener varios campos null ya que los domicilios los teléfonos y otros los tengo separados en relación muchos a muchos con tabla intermedia. Tengo bastante normalizada mi base, diría en 4fn.

Me rompo la cabeza pensando en alguna manera de vincularlos jajajaj que terco no?

Mil gracias por toda tu ayuda!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Nicolás Ignacio
Val: 34
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

[CONSULTA] Sobre Diseño.

Publicado por Nicolás Ignacio (21 intervenciones) el 06/01/2017 14:37:21
Perdón por la demora en la respuesta, voy a probar esto que dices, pero me surgen algunas dudas, por ejemplo, tener varios campos NULL en la tabla no rompe con la normalización?

Además tengo que auditar cada registro con los campos:

created_by -> clave foránea al id de la tabla usuario
created_at -> fecha de creación
updated_by -> clave foránea al id de la tabla usuario
updated_at -> fecha de modificación

Es requerimiento del cliente, mi duda es si esto también al repetirse en cada tabla no rompe con la normalización, más allá de esto tengo casi todas las tablas normalizadas en la 3fn, pero esto creo que me rompe con eso. Pensé en hacer 1 sola tabla llamada auditoria, y agregar estos campos y sumarle nombre de table y id de registro para relacionarla y no repetir todos estos campos en cada tabla.

Podrás orientarme un poco al respecto?

Muchas gracias de antemano y saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Nicolás Ignacio
Val: 34
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

[CONSULTA] Sobre Diseño.

Publicado por Nicolás Ignacio (21 intervenciones) el 04/01/2017 00:09:51
Qué otro diseño se te ocurre en base a tu experiencia?

Tengo otro sistema donde también existen las tablas persona fisica y persona juridica y tengo una tabla afiliados, pero en ese caso solo pueden ser personas fisicas, es más fácil...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar