Relaciones y llaves

11/11/2003 - 01:20 por German U. | Informe spam
Es cierto que todas las tablas de una BD deben tener a lo
menos un campo llave.
Ahora bien, mi problema es que tengo una BD para una
escuela educacional y por ej. tengo por su puesto la
tabla de alumnos con ID como clave primaria, luego tengo
mi tabla de asignaturas con su codigo de asignatura como
llave, ... ahora debo colocar las notas en una tabla
especial , en la cual contengo la clave de los alumnos y
de asignaturas marcadas en mi tabla notas, lo que como
consecuencia no me deja duplicar datos. La solucion que
hice fue quitar la clave de los dos atributos, dejando mi
tabla notas sin llaves primarias.
Como soluciono mi dilema?
Gracias
 

Leer las respuestas

#1 Accotto Maximiliano Damian
11/11/2003 - 01:33 | Informe spam
Hola!! no es necesario tener en una tabla una llave primaria.

Las llaves primarias son una forma de integridad en una BDD.
No puedes tener mas de una llave primaria por BDD, en tu caso esta bien q
los alumnos tengan su id y tu tabla de asignaturas con tu id, esto te
garantizara q no existan 2 alumnos copn el mismo id ni 2 asignaturas (nada
mas).

Bien en tu tabla de notas necesitas tener mas de un id de alumno y seguro q
no querras duplicar los id de materias por alumno.

Bien para esto no debes definir ninguna clave primaria!! aqui puedes usar
trigger por ej (otra forma de mantener la integridad dentro de una BDD).

Me explico?

Entonces quedaria algo asi como:

Alumnos (con su clave primaria por ej id)
Materias (con su clave parimaria por ej id)
Notas (bue aqui necesitas el campo alumnos_id y materias_id sin campo
primario ya que hay mas de un alumno)

Ahora puedes a esta ultima tabla ponerle un constraint (Foreing key) esto
hara q no se puede insertar un alumno q no exista en la tabla alumno ni una
materia q no exista en la tabla materias.

Con Triggers podras hacer otras cosas como por ej: Q a un alumno no se le
pueda poner 2 veces la misma materia.

Espero q me hayas comprendido

Un abrazo

ACCOTTO MAXIMILIANO DAMIAN
GERENTE DE SISTEMAS
UN SALUDO MUY CORDIAL
"German U." escribió en el mensaje
news:0bd401c3a7e9$aafb2470$
Es cierto que todas las tablas de una BD deben tener a lo
menos un campo llave.
Ahora bien, mi problema es que tengo una BD para una
escuela educacional y por ej. tengo por su puesto la
tabla de alumnos con ID como clave primaria, luego tengo
mi tabla de asignaturas con su codigo de asignatura como
llave, ... ahora debo colocar las notas en una tabla
especial , en la cual contengo la clave de los alumnos y
de asignaturas marcadas en mi tabla notas, lo que como
consecuencia no me deja duplicar datos. La solucion que
hice fue quitar la clave de los dos atributos, dejando mi
tabla notas sin llaves primarias.
Como soluciono mi dilema?
Gracias

Preguntas similares