Relacionar varias tablas segun mi modelo de base de datos

Hola,

Esta ves estoy trabjando sobre mi modelo de base de datos, pero no se
como hacer las primary keys y las foreign key,

Por ejemplo: tengo una tabla profesor, estudiantes, materias

Un profesor tiene muchos estudiantes y un estudiante tiene muchas
materias.

Necesito por favor que me ayuden en como relacionar esas tablas…

GRACIAS…

2009/4/28 Antonio O. [email protected]

Hola,

Esta ves estoy trabjando sobre mi modelo de base de datos, pero no se
como hacer las primary keys y las foreign key,

Hola Antonio,

como recordamos a menudo, esta información tan básica está repetida
hasta la
saciedad en los materiales de introducción a Rails, libros y tutoriales
online, por lo que evitamos volver a tratarla en la lista. Consulta
cualquier libro de iniciación como el Agile Web D. with Rails o
cualquier tutorial.

Antonio O. wrote:

Hola,

Esta ves estoy trabjando sobre mi modelo de base de datos, pero no se
como hacer las primary keys y las foreign key,

Las primary keys van automáticamente sobre el campo ID, y las foreign
key… es algo que a nivel de BBDD no se suele usar en Rails, cosa con
la que yo personalmente no estoy de acuerdo. Yo uso un plugin que se
llama foreign_key_migrations
http://agilewebdevelopment.com/plugins/foreign_key_migrations
que te genera automáticamente las foreign keys, siempre que uses las
convenciones adecuadas: materia_id, profesor_id, etc. Si te saltas las
convenciones y quieres usar una foreign key con otro nombre de campo, o
quieres que un campo que parece foreign key no lo sea, tendrás que
especificarlo a mano:
t.integer :parent_id, :references => :contenidos
t.string :participacion_id, :references => nil

Eso sí: ojo con este plugin, que afecta bastante al rendimiento.
Instálalo sólo en el entorno de desarrollo, no en el de producción
(donde por otra parte no serviría para nada). Y no olvides que
foreign_key_migrations requiere tener instalado el plugin
redhillonrails_core.

s2

Emili Parreño wrote:

Solo por curiosidad, para que lo quieres en desarrollo y no en
producción??

2009/4/28 Fernando C. [email protected]

El plugin genera las foreign keys al hacer el rake db:migrate para crear
las tablas, y esto se hace (al menos yo) en tu máquina de desarrollo, no
en el servidor… ¿no?

s2

Solo por curiosidad, para que lo quieres en desarrollo y no en
producción??

2009/4/28 Fernando C. [email protected]

¿y en el servidor cómo creas las tablas?

2009/4/29 Fernando C. [email protected]

el rake db:migrate se hace en cualquier entorno de trabajo, sino para
que
quieres las migraciones? solo para ejecutarlas en desarrollo? Cuando
haces
un deploy a produccion y hay nuevas migraciones como las aplicas?

2009/4/29 Borja Martín [email protected]

Emili Parreño wrote:

el rake db:migrate se hace en cualquier entorno de trabajo, sino para
que
quieres las migraciones? solo para ejecutarlas en desarrollo? Cuando
haces
un deploy a produccion y hay nuevas migraciones como las aplicas?

2009/4/29 Borja Martín [email protected]

Yo lo hago desde mi máquina de desarrollo cambiando el entorno a
producción, y lanzando el rake desde mi máquina. Es decir, lo hago en
cualquier entorno de trabajo, pero no en cualquier máquina, por lo que
no hay necesidad (ni conveniencia) de instalar el plugin
foreign_key_migrations en el servidor…

s2

OK, no te entendí bien. Pensaba que creabas foreign keys solo en
desarrollo
pero no en producción, por eso me extrañaba.

2009/4/29 Fernando C. [email protected]