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

Como tratar relacion N a N ??

Estas en el tema de Como tratar relacion N a N ?? en el foro de SQL Server en Foros del Web. Buenas tardes a todos. Mi pregunta, creo que será sencilla para la mayoria, pero yo la verdad no entiendo mucho como debo de tratarla. Tengo ...
  #1 (permalink)  
Antiguo 05/02/2008, 11:58
 
Fecha de Ingreso: enero-2008
Mensajes: 27
Antigüedad: 16 años, 2 meses
Puntos: 0
Como tratar relacion N a N ??

Buenas tardes a todos.

Mi pregunta, creo que será sencilla para la mayoria, pero yo la verdad no entiendo mucho como debo de tratarla. Tengo 2 tablas, llamadas Clientes y Empresas, y entre ellas tienen una relacion N a N. Segun la teoria debo de crear otra tabla que tenga las claves primarias de cada una (idCliente e idEmpresa por ejemplo). Bien mi pregunta es,

- Como tendria que hacer para que al insertar un cliente, se me insertara automaticamente en la tabla ClientesEmpresas(por llamarla de alguna forma a la tabla de la relacion) ??

- Tengo que poner un atributo en la tabla Clientes que sea el id de la Empresa o viceversa??

Gracias.
  #2 (permalink)  
Antiguo 05/02/2008, 12:11
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: Como tratar relacion N a N ??

Podrias manejarlo desde la aplicacion, por ejemplo poner un list box o cualquier otro control, para que al momento de dar de alta un cliente, se defina tambien a que empresas esta relacionado, y dependiendo de la seleccion, insertar las referencias ClienteEmpresas.

No es necesario que exista el atributo de empresa en la tabla cliente, ni viceversa, ya que para eso esta la tabla relacion.


Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #3 (permalink)  
Antiguo 05/02/2008, 14:24
 
Fecha de Ingreso: enero-2008
Mensajes: 27
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Como tratar relacion N a N ??

Ok, entiendo.

Si he entendido bien, lo que haria entonces si se selecciona una empresa, seria insertar en la tabla ClientesEmpresas, y en caso de que la empresa sea nulo se insertaria en Clientes no?

Muchas gracias.
  #4 (permalink)  
Antiguo 05/02/2008, 14:38
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: Como tratar relacion N a N ??

Si aun no hay empresas dadas de alta para relacionarlas al cliente, no se inserta nada en la tabla relacion ClientesEmpresas, solo se registraria los datos de el cliente en su respectiva tabla....
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #5 (permalink)  
Antiguo 05/02/2008, 14:41
 
Fecha de Ingreso: enero-2008
Mensajes: 27
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Como tratar relacion N a N ??

ok, muchas gracias voy aclarando conceptos jejeje

saludos.
  #6 (permalink)  
Antiguo 12/02/2008, 14:56
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Re: Como tratar relacion N a N ??

tblEmpresa: IdEmpresa
tblCliente: IdCliente
tblClienteEmpresa: IdCliente, IdEmpresa

Así manejarás en N a N.

Ahora, si quieres que al dar de alta en un lugar se replique en otro entonces eso escapa de la teoría de N a N. Pero tienes al menos dos maneras de realizarlo:

1) Que tu aplicación se encargue y en el SP (usas SP ¿cierto?) que inserta el registro se encargue de hacer la segunda alta.

2) Te metes con triggers para que la tabla replique a la otra inmediatamente en cada insert/update/delete.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
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 14:48.