MySQL - Llave primaria+foranea

   
Vista:

Llave primaria+foranea

Publicado por Rebek (2 intervenciones) el 21/02/2010 06:15:03
Ocupo saber como declarar un espacio en mi tabla que sea llave primaria y foranea a la vez con sentencia MySQL por ejemplo:

tengo la tabla: salariosB
id salario
salario

y quiero q idsalario sea foranea y primaria a la vez lo q ocupo es la sintaxis MYSQL

Gracias..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Llave primaria+foranea

Publicado por Gonzalo (339 intervenciones) el 21/02/2010 22:47:32
No se entiende muy bien tu problema.
Cuando creas una tabla, puedes declarar uno de sus campos como PK. SI ese campo, luego, lo referencias como FK a la PK de otra taabla, entonces será al mismo tiempo PK y FK.

¿Sabes crear tablas, PK y FK?

Todo lo que necesitas saber lo puedes leer en el manual de referencia: 13.1. Sentencias de definición de datos (Data Definition Statements):
http://dev.mysql.com/doc/refman/5.0/es/data-definition.html

¿Qué es exactamente lo que te causa problemas del caso?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Llave primaria+foranea

Publicado por Rebek (2 intervenciones) el 21/02/2010 23:48:14
Mira exatamente es esto, voy a crear la siguiente tabla:

create table Departamentos(
IdDepartamento INT NOT NULL,
PRIMARY KEY (IdDepartamento),
NombreDepartamento varchar(30))
ENGINE=INNODB;

y quiero que el campo IdDepartamento sea una PF y FK...??

pero no se como hacerlo... :(
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Llave primaria+foranea

Publicado por Gonzalo (339 intervenciones) el 22/02/2010 00:22:36
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?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar