Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/06/2014, 18:24
yonynet
 
Fecha de Ingreso: junio-2014
Ubicación: Riobamba
Mensajes: 24
Antigüedad: 10 años, 6 meses
Puntos: 0
Crear clave foránea compuesta

Saludos..

Por favor si me pueden ayudar, necesito crear una clave foranea compuesta, estoy programando en Symfony2. Mis tablas son las siguientes

CURSO:
cur-codigo -> PK
cur-nombre


PARALELO:
par-codigo -> PK
par-nombre

NIVEL:
niv-paralelocodigo -> PK
niv-cursocodigo -> PK


Entonces en la tabla nivel se crea una PK compuesta de las tablas curso y paralelo

Ahora tengo dos tablas más

PERIODO
per-codigo -> PK
per-nombre


ESTUDIANTE
est-codigo -> PK
est-nombre

Las tablas periodo y estudiante forman una tabla N a N llamada "Matricula", la cual tiene como PK compuesta los Id's de periodo y estudiante; pero tambien recibe una FK compuesta de la tabla Nivel (niv_cursocodigo,niv_paralelocodigo).

Estoy trabajando con anotaciones ORM, por lo cual me gustaría saber como puedo definir la anotacion que me permita crear la FK compuesta de la tabla nivel.


A continuación las Entidades que he creado junto con las anotaciones

class Curso {

/**
* @ORM\Id
* @ORM\Column(name="cur_codigo",type="integer")
* @ORM\GeneratedValue
*/
protected $cur_codigo;

/** @ORM\Column(type="string", length=32, nullable=false) */
protected $cur_nombre;
}

------

class Paralelo {

/**
* @ORM\Id
*@ORM\Column(name="par_codigo", type="integer")
* @ORM\GeneratedValue
*/
protected $par_codigo;

/** @ORM\Column(type="string", length=32, nullable=false) */
protected $par_nombre;
}

------

class Nivel {




/** @ORM\Column(type="string", length=128, nullable=true) */
protected $niv_descripcion;

/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="yony\academicoBundle\ Entity\Curso")
* @ORM\JoinColumn(name="niv_curcodigo", referencedColumnName="cur_codigo")
*/
protected $niv_curcodigo;

/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="yony\academicoBundle\ Entity\Paralelo")
* @ORM\JoinColumn(name="niv_parcodigo", referencedColumnName="par_codigo")
*/
protected $niv_parcodigo;

}

----

class Periodo {


/**
* @ORM\Id
* @ORM\Column(name="per_codigo", type="integer")
* @ORM\GeneratedValue
*/
protected $per_codigo;

/** @ORM\Column(type="string", length=32) */
protected $per_nombre;
}

-----


class Estudiante {

/**
* @ORM\Id
* @ORM\Column(name="est_codigo", type="integer")
* @ORM\GeneratedValue
*/
protected $est_codigo;


/** @ORM\Column(type="string", length=64, nullable=true) */
protected $est_nombre;
}


---
Entonces no se como definir las anotaciones en la clase Matricula, para declarar un FK compuesta que viene de la tabla Nivel.

Por la atención gracias...