BASE DE DATOS DISTRIBUIDAS
Enviado por jr.100monkeys • 3 de Septiembre de 2014 • 2.676 Palabras (11 Páginas) • 161 Visitas
Relaciones, claves primarias y foráneas
Las Relaciones es lo que, aparte de dar el nombre a las BD relacionales, hacen de este modelo una potente herramienta de reunión de datos. Para abordar las relaciones debemos tratar primero el concepto de clave primaria y clave foránea, puesto que son estas claves las que establecen las relaciones en una BD, y realizan la reunión de datos mediante consultas SQL.
Clave primaria
Si usted recuerda como su profesor de enseñanza básica pasaba lista a la clase, recordará que nombraba a los alumnos bien por su apellido, bien por su nombre, dependiendo del caso, e incluso por nombre y apellido si era necesario evitar ambigüedades. El propósito era dejar claro a quien se estaba haciendo mención y no dar lugar a dudas entre dos alumnos de igual nombre o apellido. Podríamos decir que el profesor asignaba una clave primaria a cada alumno, y con ello todo el mundo sabía que clave identificar como propia y responder: presente, al oírla.
Podemos considerar que una tabla es como una clase, y el conjunto de registros que contiene son los alumnos de esta clase. Para identificar cada registro es necesario establecer, de igual modo que hace el profesor, una clave primaria, con el propósito de identificar cada registro de forma única, por lo que el valor, o valores que ejercen de clave en un registro no se pueden repetir en el resto de registros de la tabla, ni en futuros registros que puedan existir. De esto ya se encarga el SGBD al especificarle que campos de la tabla forman la clave primaria, devolviendo un error cuando se intenta duplicar una clave primaria al insertar un nuevo registro en la tabla.
Un error común, a mi entender, al establecer la clave primaria de una tabla es intentar aprovechar algún campo de datos para que ejerza de clave, por ejemplo el DNI(documento nacional de identidad) de una persona. Aparentemente es un campo que no se puede repetir y, por tanto, es un buen candidato para ejercer de clave primaria en, por ejemplo , una tabla de empleados o de alumnos. Sin embargo no tenemos control sobre él, es decir, no podemos garantizar que no se repita. En ocasiones se asigna un DNI que perteneció a una persona ya fallecida, a un nuevo ciudadano de modo que aunque sea una posibilidad remota, puede dar problemas. Eso sin considerar que en ocasiones pueda resultar una clave poco práctica de manejar.
Otro error común es pretender que el campo clave guarde información implícita en la propia clave. Por ejemplo, a un vehículo de nuestra flota le asignamos la clave 1100456, donde el 11 está indicando que es marca SEAT y el 00456 es el resto de la clave.
Mi consejo es que no se empeñe, ni en aprovechar datos para que ejerzan de clave, ni en aprovechar claves para que implícitamente contengan información relevante. Las claves son claves y deben diseñarse únicamente para identificar registros. Los números naturales (1, 2 , 3 , etc...) son excelentes candidatos para ejercer de clave, se pueden ordenar (el SGBD creará índices sobre los campos clave que agilizarán las consultas) y son infinitos (siempre dispondremos de un valor para no repetir claves).
Clave foránea
La clave o claves foráneas de una tabla son referencias a registros de otra tabla, formándose entre ambas tablas una relación. Una registro de la tabla que tiene la clave foránea, llamémoslo registro hijo, apunta a un solo registro de la tabla a la que hace referencia, llamémoslo registro padre. Por tanto, una clave foránea apuntará siempre a la clave primaria de otra tabla.
De hecho el nombre ya nos indica que es una clave externa, es decir, el valor que contiene un registro en el campo, o campos, que ejercen de clave foránea, deberá contenerlo algún registro(uno solo) en el campo, o campos, que ejercen de clave primaria en la tabla a la que hace referencia dicha clave foránea.
Es también el SGBD quien garantiza esto, no dejando armar una clave foránea si pretendemos montarla sobre el campo, o campos, que no son clave primaria en la tabla con la que se pretende relacionar.
Tampoco permitirá, devolviendo un error, insertar valores que no existen como clave primaria en la tabla padre, o tabla a la que se hace referencia. A esto se le llama integridad referencial. El SGBD no permite incoherencias referenciales, de modo que si por ejemplo se intenta eliminar un registro padre el cual dejaría hijos huérfanos en otras tablas, es decir, tiene referencias o claves foráneas de él, el SGBD devuelve un error y no se realiza la operación.
Relaciones
El modo de relacionar registros entre tablas es por tanto mediante referencias, para lo cual se usan los identificadores definidos como claves primarias y foráneas.
Supongamos una academia donde se imparten clases, en consecuencia habrá cursos, profesores y alumnos. En nuestra base de datos diseñamos una tabla para cada entidad, es decir, para alumnos, profesores y cursos. Veamos como se relacionan entre si estas tres entidades y como se establecen estas relaciones en la base de datos.
Intuitivamente usted puede resolver la siguiente relación: La academia oferta cursos que imparten los profesores a los alumnos matriculados, y está en lo cierto, pero para relacionar esto en una BD debemos conocer en que medida se relacionan entre si estas tres entidades, es lo que se llama cardinalidad de una relación. Veamos primero el diseño de las tablas, los datos que contienen, y que campo, o campos, juegan el papel de identificador o clave primaria.
Los campos clave se han bautizado con el prefijo ID, abreviación de identificador.
TABLA CURSOS
TABLA PROFESORES
TABLA ALUMNOS
A estas tablas se las llama "maestros", dado que contienen información relevante y concreta de cada entidad, así hablaremos del maestro de profesores o del maestro de alumnos. Bien, para establecer las relaciones entre estas tres tablas necesitamos conocer con algo más de detalle la actividad en la academia, de modo que después de investigar un poco sacamos las siguientes conclusiones:
• Cada curso lo imparte un único profesor, sin embargo algún profesor imparte más de un curso.
• Cada curso tiene varios alumnos, y algunos alumnos cursan dos o más cursos.
* * *
Relación de cardinalidad 1 a N
Establezcamos la siguiente relación:
Cada curso lo imparte un único profesor, sin embargo algún profesor imparte más de un curso.
Para ello basta con crear un campo en la tabla CURSOS que informe que profesor lo imparte. Este dato es una clave primaria de la tabla PROFESORES alojada en la tabla CURSOS, de ahí
...