elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  ¿puede una clave foranea apuntar a 2 o mas tablas?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿puede una clave foranea apuntar a 2 o mas tablas?  (Leído 2,511 veces)
Filantropo

Desconectado Desconectado

Mensajes: 45


Ver Perfil
¿puede una clave foranea apuntar a 2 o mas tablas?
« en: 15 Marzo 2020, 03:14 am »

Hola.
Tengo una bd sobre ventas en la que ademas del producto y cantidad se debe registrar el documento emitido que puede ser boleta o factura.
Lo que tengo hecho son 3 tablas:

-tbventa
     idVenta
     iddocumento       <---puede ser boleta o factura

-tbfactura
     Numerofactura

-tbboleta
     NumeroBoleta

Dentro de venta deberia estar el id del documento boleta o factura, ¿que podria hacer para que iddocumento acepte cualquier de los 2 id, sea boleta o factura?


En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.156



Ver Perfil
Re: ¿puede una clave foranea apuntar a 2 o mas tablas?
« Respuesta #1 en: 16 Marzo 2020, 14:07 pm »

Saludos,

- Dependerá de tu modelo de datos, hay varias opciones generales, por ejemplo no poner idDocumento en tbVenta e ir directamente a tbFactura o tbBoleta y poner ahí el idVenta.

- Otra es usar una tabla auxiliar tbDocumento donde irá como valor el idFactura o idBoleta

- Piensa en las consultas que vas a realizar o como vas a llenar los datos para elegir una opción adecuada.


En línea

Filantropo

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Re: ¿puede una clave foranea apuntar a 2 o mas tablas?
« Respuesta #2 en: 21 Marzo 2020, 05:54 am »

Saludos,

- Dependerá de tu modelo de datos, hay varias opciones generales, por ejemplo no poner idDocumento en tbVenta e ir directamente a tbFactura o tbBoleta y poner ahí el idVenta.

- Otra es usar una tabla auxiliar tbDocumento donde irá como valor el idFactura o idBoleta

- Piensa en las consultas que vas a realizar o como vas a llenar los datos para elegir una opción adecuada.

Salu2

Podria ser la primera alternativa de ir a tbFactura o tbBoleta y guardar el idventa pero ¿como lograr que la propia B.D. obligue a que idventa se guarde solo en uno de ellos y no en ambos tablas?
Porque si tbventa esta relacionado con tbfactura y tbboleta pues en ambos podria insertar un mismo idventa y lo aceptaria sin problemas, al momento de listar las ventas me sale que tiene ambos documentos cosa que no deberia ser asi.

Otra cosa q se me ocurrio es meter una tabla adixional tbDocumento y que esta tenga el NumeroFactura y NumeroBoleta y  que al meter registros solo uno de  los campos deberia contener un Numero valido y el otro deberia ser null pero no se me ocurre como  hacerlo desde sql.

tbDocumento
     idDocumento
     NumFactura
     NumBoleta
« Última modificación: 21 Marzo 2020, 05:57 am por Filantropo » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problemas con Relaciones entre tablas y Reconocimiento de FK (Clave Foranea)
.NET (C#, VB.NET, ASP)
Megan 6 8,813 Último mensaje 13 Agosto 2009, 19:35 pm
por Hadess_inf
Clave Foranea
Bases de Datos
mapers 0 1,902 Último mensaje 8 Diciembre 2011, 19:31 pm
por mapers
tabla con llave foranea con multiples tabas relacionables
Bases de Datos
Yorch747 0 2,160 Último mensaje 22 Agosto 2014, 23:51 pm
por Yorch747
[Resuelto] ¿se puede forzar tamaño de celdas en tablas de html?
Desarrollo Web
Misterio_S 3 5,431 Último mensaje 27 Diciembre 2014, 23:19 pm
por Misterio_S
[Pregunta]: Eliminar una clave foránea.
Bases de Datos
Leguim 1 2,577 Último mensaje 4 Junio 2020, 11:43 am
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines