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

sql 2005 problemas con claves foraneas

Estas en el tema de sql 2005 problemas con claves foraneas en el foro de SQL Server en Foros del Web. buenas tardes compañeros... tengo una duda. en si no se por donde viene el problema. recien comienzo a entrar en el mundo de estas funciones ...
  #1 (permalink)  
Antiguo 16/10/2011, 14:03
 
Fecha de Ingreso: agosto-2008
Mensajes: 367
Antigüedad: 15 años, 7 meses
Puntos: 5
sql 2005 problemas con claves foraneas

buenas tardes compañeros... tengo una duda. en si no se por donde viene el problema. recien comienzo a entrar en el mundo de estas funciones de sql y no se cual es el drama... tengo una base con una table clienteParticlar otra clienteEmpresa y otra direcciones la cual guarda las multiples direcciones de las dos tablas anteriores.. el hecho es asi .

create table cliente_particular
(
codigo_cliente uniqueidentifier default newid() not null constraint pk_codigo_cliente_particular primary key,
cedula varchar (15) constraint uk_cedula_cliente_particular unique not null,
nombre1 varchar (30) not null,
nombre2 varchar (30) not null default 'n/a',
apellido1 varchar (30) not null,
apellido2 varchar (30) not null default 'n/a',
tarjeta_credito varchar (60) not null,
nro_tarjeta_credito varchar (60) not null,
tarjeta_puntos int identity (1000,1) not null,
tarjeta_puntos_emision datetime default getdate() not null,
tarjeta_puntos_expiracion datetime default dateadd(year,2,getdate()) not null,
e_mail varchar (50) not null default 'n/a'
)

--creo tabla cliente empresa

create table cliente_empresa
(
codigo_cliente uniqueidentifier default newid() not null constraint pk_codigo_cliente_empresa primary key,
rut varchar (15) constraint uk_rut_empresa unique not null,
razon_social varchar (70) not null,
e_mail varchar (50) not null default 'n/a'
)


ahora direcciones

create table direccion
(
codigo_ref_particular uniqueidentifier null,
codigo_ref_empresa uniqueidentifier null,
codigo_ref_chofer uniqueidentifier null,
departamento varchar (30) not null default 'n/a',
ciudad varchar (30) not null default 'n/a',
barrio varchar (30) not null default 'n/a',
calle varchar (30) not null default 'n/a',
numero_puerta varchar (30) not null default 'n/a',
solar varchar (30) not null default 'n/a',
manzana varchar (30) not null default 'n/a',
referencia varchar (100) not null default 'n/a'
constraint fk_direccion_codigo_cliente_particular foreign key (codigo_ref_particular) references cliente_particular,
constraint fk_direccion_codigo_cliente_empresa foreign key (codigo_ref_empresa) references cliente_empresa,


aqui tengo dos claves foranas una hacia particlar y la otra hacia empresa (cleintes)

ahora el problema que tengo es que : si quiero agregar una direccion haciendo referencia a un codigo cliente particular. me dice que se produce un problema porque ese codigo no exisre en la tabla empresa... eso esta bien??? se supone q debe marchar asi? porque en ese caso las claves no serian unicas... no se como solucionarlo.... el codigo de cliente no se puede repetir obviamente. entonces no se como solucionar esto...


muchas gracias y espero me puedan dar una mano... porque no tengo clases por unos dias y quiero adelantar esto y no tengo a quien preguntarle hasta que no tenga clases. muchas gracias
  #2 (permalink)  
Antiguo 17/10/2011, 15:04
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: sql 2005 problemas con claves foraneas

Para eso es una llave foranea FK, para que si el dato no esta en la tabla de relacion no puedas agregarlo, aqui el problema que veo es que estas usando un uniqueidentifier el cual no va a ser el mismo codigo en ambas tablas ya que como el nombre lo indica un uniqueidentifier es un valor unico...

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: claves, sql, tabla, foreignkey
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 17:46.