Ver Mensaje Individual
  #4 (permalink)  
Antiguo 18/12/2009, 15:52
Avatar de gnzsoloyo
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, 5 meses
Puntos: 2658
Respuesta: Integridad referencial

Cita:

Tengo una base de datos que tiene clientes y los clientes tienen notas, el problema es que segun yo, no puedo usar integridad referencial, porque puede que el cliente no tenga notas entonces rompe con lo de 1 a muchos. El problema es que lo tengo que hacer por codigo.
No se rompe nada porque la restricción es que cada nota pertenezca a un cliente, y que no pueda existir una nota sin cliente.

Cita:
Ademas que suele pasar que dos clientes tengan el mismo idnota. se puede hacer algo aqui con base de datos?
Si tienes dos clientes con la misma nota, o tienes un error de diseño en la base, o te falta una tabla, o bien está mal definido el cliente.
Una nota no puede pertenecer a dos clientes al mismo tiempo. Lo que si puede suceder es que un cliente sea una sociedad formada por más de una persona, caso en el cual el cliente es la sociedad, y no las personas que forman la socidad. Eso requiere un ajuste de modelo.
Ahora bien, si una nota puede corresponder a más de una persona, te está faltando entonces una tabla, porque eso daría una relación N:N, y por definición, toda relación N:N en el modelo lógico genera una tabla en el modelo físico.

Cita:
Bueno tengo otra tabla asi, un pokito diferente porque la ligo con el idcliente

FK clienteflotilla.idcliente=clientes.idcliente PK

y aqui esta al reves

notas.idnota = clientes.idnota

aqui ninguna de las dos es PK, por que?

porque yo tengo otras tablas que usan notas, y esas otras tablas tienen su idnota al igual que clientes.

notas.idnota=ventas.idnota

no le pongo a clientes ni ventas PK en el idnota porque por lo regular tendran un 0 en el idnota si no tienen.

Se me ocurre poner una tabla para que el idnota sea llave y luego referenciarla al detalle, pero se hace mas grande la bd, o tiene que ser asi?


notaspk 1 -> M notasdetalle

clientes 1 - > 1 notaspk

ventas 1 -> 1 notaspk

no se si enredo las cosas espero ke no

gracias
Esto merece un análisis más detallado, porque lo que me da la impresión es que no tienes claro el modelo E-R, o al menos el análisis de las relaciones entre entidades no está bien realizado.
Tomando solamente la última parte, se puede describir que en tu modelo, las relaciones de dependencia serían:
Cita:
NOTA <- DETALLE_NOTA
NOTA <- CLIENTE
VENTA <- NOTA
Esto significaría:
Cita:
Reglas del negocio:
1. El vendedor emite una orden de compra que pertenece a un cliente.
2. La orden de compra debe tener uno o más items. Si no tiene items, no existe.
3. El personal de cobranzas realiza un cobro que corresponde a una nota de compra y lo asienta como venta.
En este caso:
1. La PK de Cliente va como FK de la Nota.
2. La PK de Nota va como FK en Detalle_Nota, y junto con el ID del ítem, componen una PK de dos campos.
3. La PK de Nota va también como FK en Venta.

Así, por ejemplo, sería el modelo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)