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

Duda con claves primarias

Estas en el tema de Duda con claves primarias en el foro de Oracle en Foros del Web. Tengo un modelo de base de datos en los que tengo por ejemplo dos relaciones Una relación se llama Ofertas y la segunda se llama ...
  #1 (permalink)  
Antiguo 02/03/2012, 13:59
 
Fecha de Ingreso: mayo-2010
Mensajes: 93
Antigüedad: 11 años, 7 meses
Puntos: 0
Pregunta Duda con claves primarias

Tengo un modelo de base de datos en los que tengo por ejemplo dos relaciones

Una relación se llama Ofertas y la segunda se llama Conceptos.

La tabla conceptos hace referencia a los diversos conceptos que una oferta puede tener.

Quisiera hacer que la clave primaria de la tabla conceptos sea una combinación de la clave primaria de Ofertas y un "índice" por ejemplo:

Clave primaria en Ofertas: GIA-013-A-12
Claves primarias en Conceptos GIA-013-A-12001, GIA-013-A-12002, GIA-013-A-12003, GIA-013-A-12004... GIA-013-A-12n. Esto lo hago para que la clave primaria de conceptos no se repita

Puedo combinar de alguna manera la clave primaria de ofertas con un "índice" sin tener que teclearlo sino generarlo de manera automática?
Me es conveniente hacerlo como lo estoy pensando?

Por favor... traten de ser muy explícitos porque soy muy novato

De antemano muchas gracias

Última edición por biochemistry43; 03/03/2012 a las 14:12
  #2 (permalink)  
Antiguo 06/03/2012, 18:12
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 14 años, 2 meses
Puntos: 85
Respuesta: Duda con claves primarias

Lo puedes resolver con una PK compuesta, por ejemplo:

Código:
create table ofertas (
id_oferta varchar2(15) not null primary key
);

create table conceptos (
id_oferta varchar2(15) not null,
id_concepto varchar2(3) not null
);

--valida la relación entre conceptos y ofertas
alter table conceptos 
 add constraint fk_ofertas foreign key (id_oferta) 
 references ofertas(id_oferta);

--valida que sea único el par id_oferta, id_concepto 
alter table conceptos 
 add constraint pk_conceptos 
  primary key (id_oferta, id_concepto);

insert into ofertas values ('GIA-013-A-12');
insert into conceptos values ('GIA-013-A-12', '001');

--consulta para obtener el valor GIA-013-A-12001
select id_oferta || id_concepto from conceptos;
Saludos

Etiquetas: claves, primarias, tabla
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:58.