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

Referencia (FK) de 2 columnas diferentes

Estas en el tema de Referencia (FK) de 2 columnas diferentes en el foro de Bases de Datos General en Foros del Web. Saludos Estimados, la consulta es la siguiente, tengo una tabla llamada usuario: CREATE TABLE USUARIO( USUARIO_ID INT(8) NOT NULL USUARIO_NAME VARCHAR2(50) NOT NULL ); y ...
  #1 (permalink)  
Antiguo 05/11/2008, 19:19
Avatar de Erick_pm  
Fecha de Ingreso: abril-2004
Mensajes: 55
Antigüedad: 20 años, 9 meses
Puntos: 1
Pregunta Referencia (FK) de 2 columnas diferentes

Saludos Estimados,

la consulta es la siguiente, tengo una tabla llamada usuario:
CREATE TABLE USUARIO(
USUARIO_ID INT(8) NOT NULL
USUARIO_NAME VARCHAR2(50) NOT NULL
);

y otra tabla llamada empresa:
CREATE TABLE EMPRESA(
EMPRESA_ID INT(8) NOT NULL
EMPRESA_NAME VARCHAR2(50) NOT NULL
);

Lo quiero es que en una tabla llamada vendedor tenga una columna que referencie (Foreign key) a la columna usuario_id ó a la columna empresa_id.

CREATE TABLE VENDEDOR(
USUARIO_O_EMPRESA_ID INT(8) NOT NULL
TIPO_VENDEDOR VARCHAR2(50) NOT NULL
);

espero que me haya dejado entender, es posible hacer ese tipo de referencias o de que manera se resuelve comunmente estos casos.

Les agradezco bastante de antemano.
  #2 (permalink)  
Antiguo 05/11/2008, 21:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 2 meses
Puntos: 2658
Respuesta: Referencia (FK) de 2 columnas diferentes

No es posible realizar una FK que referencie a diferentes tablas. Eso es simplemente imposible. Ningún motor de base de datos te admitirá eso.
Lo que se hace es que la PK de las dos tablas aparezcan como FK en la tabla secundaria, pero el problema es que no es lo que tu intentas hacer, esto es, que pueda tener una clave u otra.
Partiendo de la base que eso sería una violación completa al pardigma de las base de datos relacionales, y que ni siquiera respeta el paradigma de programación orientada a objetos, francamente creo que el problema puede ser:
a) el modelo de datos está mal concebido desde el inicio o
b) el analisis del sistema no esta correctamente realizado y su modelado tampoco.

Esto es simplemente porque una entidad no puede jamás relacionarse con una u otra entidad. Eso es demasiado indeterminado.
Lo que si puede suceder es que la relación no sea obligatoria, y que solamente pueda existir una combinación válida. Eso puede ser resuelto con dos tablas distintas, para relacionar las tablas por entidades o conceptos distintos, o bien una relación con una entidad con jerarquías.

pero lo que tu preguntas, no.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 05/11/2008 a las 21:28
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 09:55.