none
hacer una relacion entre 2 tablas cuando una de las tablas tiene una llave compuesta en sql 2000

    Question

  • bueno el problema es el siguiente en mi base de datos hay 2 tablas q me estan dando problemas, me da un error que no se puede crear la relacion x q hay un problema en la llave foranea al relacionarla con la llave primaria. bueno estas son mis tablas:


    tabla estudiante                                              Tabla maestría
    num_carnet                                                          cod_maestria
    nom1                                                                    fecha_inicio
      .                                                                                   .
      .                                                                                   .
     cod_maestria
      .
      .


    al inicio me dice a que hace fala un atributo para en la tabla estudiante para relacionarlo con fecha_inicio, por lo cual cree un atributo que tiene llamado fecha_inicio en la tabla estudiante del mismo tipo del de la tabla maestria.

    pero me manda ese error y no se crea la relación.

    yo se que algo tengo mal y necesito q me ayuden.

    Gracias de antemano a todos!

    Enseña más la necesidad, que la universidad.

    Tuesday, August 04, 2009 2:21 PM

Answers

  • Hola.

    En la tabla maestría, la clave primaria es cod_maestria + fecha_inicio, ¿no? En ese caso, y como sabrás, una foreign key es un atributo en una tabla que es la clave primaria de otra. En la tabla estudiante, debes tener la clave primaria completa, cod_maestria + fecha_inicio. Asegúrate de que los datos son del mismo tipo y están en el mismo orden en la relación. Si lo haces con un script a lo mejor es más fácil (repasa los nombres de la tablas):

    alter table estudiante add constraint FK_estudiante_maestria foreign key (cod_maestria, fecha_inicio) references maestria (cod_maestria, fecha_inicio) 
    Si no te funciona, nos dices.


    Alberto López Grande.
    Tuesday, August 04, 2009 3:10 PM

All replies

  • Hola.

    En la tabla maestría, la clave primaria es cod_maestria + fecha_inicio, ¿no? En ese caso, y como sabrás, una foreign key es un atributo en una tabla que es la clave primaria de otra. En la tabla estudiante, debes tener la clave primaria completa, cod_maestria + fecha_inicio. Asegúrate de que los datos son del mismo tipo y están en el mismo orden en la relación. Si lo haces con un script a lo mejor es más fácil (repasa los nombres de la tablas):

    alter table estudiante add constraint FK_estudiante_maestria foreign key (cod_maestria, fecha_inicio) references maestria (cod_maestria, fecha_inicio) 
    Si no te funciona, nos dices.


    Alberto López Grande.
    Tuesday, August 04, 2009 3:10 PM
  • ok ya lo probare, gracias
    Tuesday, August 04, 2009 3:13 PM
  • me dio el mismo problema.

    sale es sig. error:

    server: msg 547, level 16, state 1, line 1

    alter table statement conflicted with table foreign key constraint 'FK_estudiante_maestria'. the conflict occurred  in database 'PMCSIS', table 'maestria'.

    ya me fije bien y los atributos de la tabla estudiante que son llave foranea tienen el mismo tipo que la llave primaria de maestria.

    Tuesday, August 04, 2009 3:32 PM
  • bueno lo que tuve que hacer es borrar las tablas y hacerlas de nuevo, y si se pudo hacer la relacion
    Tuesday, August 04, 2009 4:57 PM