Imaginate que tengo unas tablas en sql navigator y necesito hacer las relaciones y me dijeron que para esto utilizara una sentencia de sql algo así como dba. Constrainst pero no se como hacerla. Si me puedes colaborar con esto te lo agradecería.
1 respuesta
Respuesta de pedrito12
1
1
pedrito12, Actualmente estoy trabajando como Manager en una multinacional de...
En principio no se exactamente a lo que te refieres, pero me imagino un poco de que va el tema. Estoy convencido de que conoces SQL-Server o Access y lo que quieres es hacer relaciones en modo gráfico sobre una base de datos Oracle. Bueno, pues de ser así, te tengo que decepcionar y anunciarte de que Oracle para desgracia de muchos es algo más compleja de lo que parece. En Oracle para hacer Relaciones tienes varias posibilidades: O las haces con Oracle Designer, herramienta orientada para el diseño e implementación de una B.DE, osea CASE, o sino lo que quieres es relacionar tablas simplemente y para eso nos podemos valer de SQL. Necesito alguna pistilla más que me indique que es lo que quieres. Por cierto no tengáis corte cuando hagáis una pregunta, de extenderos mucho, porque gracias a los gestores de esta web que nos permiten extendernos todo lo que queramos, podríamos realizar preguntas sin limite de lineas o de tamaño; osea que lo dicho expláyate tal y como lo hago yo!, no te cortes, que por espacio no es!. Venga espero tu respuesta!. Pedro
Hola, Si, lo que quiero es relacionar tablas con sql pero no se como es la sentencia me dijeron que era algo como dba.constraints. Mira estoy haciendo unas tablas en sql navigator y te voy a colocar un ejemplo: Una tabla se llama USUARIO y la otra DONANTE, en la primera tabla tengo el id_usuario (Number) y descripcion1(varchar2). En la tabla DONANTE tengo id_donante y descripcion2(varchar2). La llave foránea con la tabla USUARIO es usu_id_fk. Pero no se como relacionarlas como ya te dije, con SQL. Bueno si puedes colaborarme con esto te lo agradecería mucho, y como puedes observar seguí tus consejos.
Podemos unir las tablas por medio de una Join. Solo y en mi opinión tendrías que cambiar la denominación del campo de alguna tabla para que sean las dos iguales y nos referencien a simple vista que los datos que contienen los campos son iguales, es decir cambia el nombre de una id de un campo, por ejemplo los dos que sean id_usuario. La sentencia podría quedar así por ejemplo: Select a.id_usuario, a.descripcion1, b.descripcion2 from usuario a, donante b where a._id_usuario = b.id_usuario; En la clausula Where podemos también poner otras restricciones para resolver la consulta con menos registros si nos interesase por ejemplo los usuarios que empiece su id_usuario por 5 poe ejemplo: where a.id_usuario like '5%' De este modo restringimos la consulta a los usuarios que tengan un inicio de id_usuario que comience por 5. La forma de relacionar por código es hacer join entre las tablas como hemos hecho en el ejemplo. Si lo que quieres es que vayan unidas por naturaleza, debemos construir una Constraint a nivel físico y eso podemos hacerlo de la siguiente manera: ALTER TABLE USUARIO ADD CONSTRAINT USU_FK FOREING KEY (ID_USUARIO) REFERENCES DONANTE (ID_USUARIO); De este modo quedan unidas las claves. De todos modos te diré que la clave primaria de la tabla DONANTE debería ser otra y el campo id_usuario, ya que si lo unimos a la tabla usuario ya será único y de este modo si creamos otro campo en la tabla donante indizaremos por otro lado y podremos realizar consultas más potentes por la unión precisamente que tenemos hecha con usuario desde usuario y no desde donante. Espero no haberte liado más de lo necesario y haberte ayudado a reslver tu problema Suerte y al toro!. Pedro