pregunta sobre restricciones en oracle
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?
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.
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.
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.¿?
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?
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?