El término de base de datos "relacional" o "relación" describe la forma en que se conectan los datos de las tablas.
Los recién llegados al mundo de las bases de datos a menudo tienen dificultades para ver la diferencia entre una base de datos y una hoja de cálculo. Ven tablas de datos y reconocen que las bases de datos le permiten organizar y consultar datos de nuevas maneras, pero no logran comprender el significado de la base de datos. relaciones entre datos que dan nombre a la tecnología de base de datos relacional.
Las relaciones le permiten describir las conexiones entre diferentes tablas de bases de datos de manera poderosa. Estas relaciones se pueden aprovechar para realizar potentes consultas de tablas cruzadas, conocidas como uniones.
Tipos de relaciones de base de datos
Hay tres tipos diferentes de relaciones de base de datos, cada una con un nombre de acuerdo con el número de filas de la tabla que pueden estar involucradas en la relación. Cada uno de estos tres tipos de relación existe entre dos tablas.
- Relaciones de uno a uno ocurre cuando cada entrada en la primera tabla tiene una contraparte, y solo una, en la segunda tabla. Las relaciones de uno a uno rara vez se usan porque a menudo es más eficiente simplemente poner toda la información en una sola tabla. Algunos diseñadores de bases de datos aprovechan esta relación creando tablas que contienen un subconjunto de datos de otra tabla.
- Relaciones uno a muchos Son el tipo más común de relación de base de datos. Ocurren cuando cada registro en la Tabla A corresponde a uno o más registros en la Tabla B, pero cada registro en la Tabla B corresponde a solo un registro en la Tabla A. Por ejemplo, la relación entre una tabla de Maestros y una tabla de Estudiantes en una escuela primaria La base de datos probablemente sea una relación de uno a varios, porque cada estudiante tiene solo un maestro, pero cada maestro tiene varios estudiantes. Este diseño de uno a muchos ayuda a eliminar los datos duplicados.
- Relaciones de muchos a muchos ocurre cuando cada registro en la Tabla A corresponde a uno o más registros en la Tabla B, y cada registro en la Tabla B corresponde a uno o más registros en la Tabla A. Por ejemplo, la relación entre un profesor y una tabla de cursos probablemente sería muy variada. to-many porque cada maestro puede impartir más de un curso, y cada curso puede tener más de un instructor.
Relaciones de autorreferencia: un caso especial
Las relaciones de autorreferencia se producen cuando solo hay una tabla involucrada. Un ejemplo común es una tabla de empleados que contiene información sobre el supervisor de cada empleado. Cada supervisor también es un empleado y tiene su propio supervisor. En este caso, hay una relación de uno a muchos de autorreferencia, ya que cada empleado tiene un supervisor, pero cada supervisor puede tener más de un empleado.
Creando relaciones con llaves foráneas
Se crean relaciones entre tablas especificando una clave externa. Esta clave le dice a la base de datos relacional cómo se relacionan las tablas. En muchos casos, una columna en la Tabla A contiene claves primarias a las que se hace referencia en la Tabla B.
Consideremos nuevamente el ejemplo de las tablas de profesores y alumnos. La tabla de profesores solo contiene una identificación, un nombre y una columna del curso:
InstructorID | Nombre del profesor | Curso |
---|---|---|
001 | John Doe | Inglés |
002 | Jane Schmoe | Mates |
La tabla de Estudiantes incluye una ID, un nombre y una columna de clave externa:
Identificación del Estudiante | Nombre del estudiante | Profesor_FK |
---|---|---|
0200 | Lowell Smith | 001 |
0201 | Brian short | 001 |
0202 | Corky Mendez | 002 |
0203 | Monica jones | 001 |
La columna Profesor_FK en la tabla de alumnos se hace referencia al valor de clave principal de un instructor en la tabla de profesores.
Con frecuencia, los diseñadores de bases de datos utilizarán "PK" o "FK" en el nombre de la columna para identificar fácilmente una clave principal o una columna de clave externa.
Tenga en cuenta que estas dos tablas ilustran una relación de uno a muchos entre los maestros y los estudiantes.
Relaciones e integridad referencial
Una vez que haya agregado una clave externa a una tabla, puede crear una restricción de base de datos que imponga la integridad referencial entre las dos tablas. Esto asegura que las relaciones entre las tablas permanezcan consistentes. Cuando una tabla tiene una clave externa a otra, el concepto de integridad referencial establece que cualquier valor de clave externa en la Tabla B debe referirse a un registro existente en la Tabla A.
Implementando Relaciones
Dependiendo de su base de datos, implementa relaciones entre tablas de diferentes maneras. Microsoft Access proporciona un asistente que le permite vincular fácilmente tablas y también imponer integridad referencial.
Si está escribiendo SQL directamente, primero debe crear la tabla Profesores, declarando que una columna de ID es la clave principal:
CREAR TABLA Maestros (
InstructorID INT AUTO_INCREMENT PRIMARY KEY, Nombre del profesor VARCHAR (100), Curso VARCHAR (100));
Cuando crea la tabla de Estudiantes, declara que la columna Teacher_FK es una clave externa que hace referencia a la columna InstructorID en la tabla de profesores:
CREAR TABLA Estudiantes ( StudentID INT AUTO_INCREMENT PRIMARY KEY, Student_Name VARCHAR (100), Teacher_FK INT, REFERENCIAS CLAVE EXTRANJERA (Teacher_FK) Maestros (InstructorID))
;
Uso de relaciones para unir tablas
Una vez que haya creado una o más relaciones en su base de datos, puede aprovechar su poder mediante el uso de consultas SQL JOIN para combinar información de varias tablas. El tipo más común de unión es un SQL INNER JOIN, o una simple unión. Este tipo de unión devuelve todos los registros que cumplen la condición de unión de varias tablas.Por ejemplo, esta condición ÚNICA devolverá Student_Name, Teacher_Name y Course donde la clave externa en la tabla de alumnos coincide con la clave principal en la tabla de profesores:
SELECCIONA Students.Student_Name, Teachers.Teacher_Name, Teachers.CourseDe estudiantesINNER JOIN MaestrosON Students.Teacher_FK = Teachers.InstructorID;
Esta declaración produce una tabla algo como esto:
Tabla devuelta desde la instrucción de unión SQL
Estudiante_NombreProfesor_NombreCursoLowell SmithJohn DoeEnglishBrian ShortJohn DoeEnglishCorky MendezJane SchmoeMathMonica JonesJohn DoeEnglish