Ver Mensaje Individual
  #8 (permalink)  
Antiguo 29/07/2015, 11:49
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Error al querer agregar clave foránea con 'alter table'

Ok.
En primer lugar, es evidente que estás empezando y que no has estudiado en profundidad lo que es una foreign key, o clave foránea, porque de lo contrario no podrías haber plenteado esto:
Cita:
El problema lo solucioné creando la clave foránea con el Id de la tabla de origen, no con el campo CodSistema...
Entendamos bien el concepto:
Una clave foránea (FK) es un campo o conjunto de campos que referencia a la clave primaria de otra tabla, con lo que para ser definida no puede apuntar a otro tipo de campo..
Ahora , una salvedad: La primera razón de que una FK apunte a la PK de otra tabla es que debe existir una relación de unicidad d la clave a que se hace referencia, es decir, el campo de la tabla referida no puede tener dos registros con iguales valores en ese campo.
Esto no es un invento, es uno de los fundamentos del modelo relacional y no se lo peude transgredir.
Ahora bien, existe una posibilidad que algunos DBMS implementan de apuntar una FK a otro campo que no sea PK en su tabla, pero eso sólo es posible si el campo referido cumple la condición de unicidad, es decir, si no es PK de su tabla, debe forzosamente ser UNIQUE.
¿Se entiende?
Desconozco los detalles de Interbase, pero estimo que esa es una condición que deben tener los casos que tu has visto en ese DBMS, o de lo contrario la FK no puede existir.
En ese tipo de FK no existe un error o una "ventaja" de un DBMS, sino que se cumple que nunca hay dos registros con igual valor en la clave UNIQUE. Asi de simple, por lo que sigue cumpliendose el modelo relacional.

¿Queda más claro?

En tu caso, lo que sin duda ha pasado es que estabas intentando apuntar a un campo que no habías declarado como UNIQUE, y MySQL no te lo iba a permitir.
Con sólo que hubieses creado un indice UNIQUE sobre ese "CodSistema", no hubieses tenido problemas.

Por lo demás, ¿me puedes explicar por qué tienes un "ID" en la tabla como "PK", si con el CodSistema como PK hubiese sido suficiente?

Finalmente: La próxima vez, postea lo que se te pide. Es importante que respondas, si quieres un feed-back adecuado.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)