RE:Llave primaria+foranea
Primero, debes poner bien la sintaxis o de lo contrario te dará un error. Esto esta mal:
create table Departamentos(
IdDepartamento INT NOT NULL,
PRIMARY KEY (IdDepartamento),
NombreDepartamento varchar(30))
ENGINE=INNODB;
Esto está bien:
create table Departamentos(
IdDepartamento INT NOT NULL PRIMARY KEY,
NombreDepartamento varchar(30))
ENGINE=INNODB;
En segundo lugar, esta tabla, por lo que parece, es una tabla primaria. Es la tabla a donde el resto de las tablas que hacen mencion a departamentos se referencia, por lo que esta tabla NO PUEDE CONTENER FK. Es, en realidad la que el resto USA COMO FK.
Me explico: ¿Qué dependencia puede tener esta tabla? ¿Con qué entidad se define como "pertenece a"?
Con ninguna, porque es una lista de denominaciones que el resto usa, pero que no pertenece a ninguna otra.
Diferente sería el caso de una tabla Empleado. Esta tabla sí se relacionaría con cardinalidad N:N a Departamento, con lo que habría una tabla Empleado_Departamento que contendría las dos FK: una para cada empleado y la del departamento a que pertenece.
¿Se entiende la idea?