Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/10/2011, 14:03
rrecarte
 
Fecha de Ingreso: agosto-2008
Mensajes: 367
Antigüedad: 15 años, 8 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