pregunta sobre restricciones en oracle

bormoral
02 de Julio del 2008
estaba intentando hacer una restriccion de clave foranea entre dos tablas, pero me he dado cuenta que no puedo plantearla como FK ya que el campo de partida no es clave primaria, ¿alguien me puede decir como controlar que estos dos campos tengas valores relacionados sin añadir una FK?

Oscar Hern?ez
02 de Julio del 2008
Que Tal Bormoral,

Oracle Es un a base de datos Relacional , por lo que conceptualmente nunca podrás crear un Foreig Key sin Un Primary Key.

La solución tendría que ser Progrmáticamente, Pero en cada Unidad de Progrma necesitarías considerarlo y sería algo comlicado manejarlo.

Lo mejor es que cheques nuevamente tu modelo y trates de normalizar tus tablas para conseguir un modelo adecuado.

bormoral
02 de Julio del 2008
el modelo de datos esta normalizado, lo que pregunto es si seria necesario crear un trigger para controlar los valores del campo o seria suficiente con crear una contraint check para controlar que los valores de un campo estan dentro del subconjunto del otro.¿?

aludriel
02 de Julio del 2008
Hola bormoral ...

La verdad es que es extraño el intentar crear una Fk sobre una columna de otra tabla (que se supone única) y que esta no sea Pk.... (al igual una alternativa es crear la Fk sobre la Pk de la tabla origen e ir a buscar el campo descriptivo que desees) ...

Lo que planteas... yo no plantearía hacerlo mediante una constraint de check debido a que como te inserten un nuevo registro en la tabla origen ,... adios al invento.

Hacerlo en el trigger tiene como mínimo una desventaja, vas a lanzar un error en caso que el valor no esté entre los que esperas encontrar

¿Podrías dar más información sobre estas 2 tablas y sus constraints?