¿Qué es un esquema relacional? Cómo se crea una base de datos eficiente?
No existe una estructura de base de datos que sea siempre más eficiente que otra. Esto se debe a que el tipo y la cantidad de datos almacenados cambian la estructura óptima de la base de datos.
Sin embargo, hay una gran diferencia entre la construcción de una base de datos optimizada para el rendimiento frente a una optimizada para el volumen de datos.
Usando el esquema relacional en MySQL, puede crear una base de datos optimizada para el volumen de datos. Esto es ideal en situaciones en las que el coste de almacenamiento, procesamiento y memoria es prohibitivo.
Aunque este ya no es el caso de la electrónica estándar, todavía hay muchas situaciones en las que los programadores y desarrolladores querrían utilizar un esquema relacional. Aunque el almacenamiento, la potencia de procesamiento y la memoria son baratos para los usuarios de ordenadores convencionales, estas cosas son masivamente caras en el mundo de la computación cuántica.
Además, un esquema relacional es importante en las bases de datos MySQL que dependen de las relaciones para generar significado. Los registros de empleados y académicos, por ejemplo, pueden considerarse fácilmente como redes de relaciones que se describen mejor utilizando un esquema relacional que, por ejemplo, las bases de datos de valores clave o de gráficos.
El esquema relacional es el elemento principal de la base de datos relacional. Estas bases de datos se gestionan utilizando un lenguaje y una estructura coherentes con la lógica de primer orden. Esto permite la gestión de la base de datos basada en las relaciones entre entidades, lo que facilita su organización según el volumen.
El esquema relacional se refiere a los metadatos que describen la estructura de los datos dentro de un determinado dominio. Es el plano de una base de datos que describe la forma en que su estructura organiza los datos en tablas.
Por ejemplo, si su base de datos contiene registros de empleados para una gran empresa, entonces usted podría tener relaciones de entidad que describen cada empleado como una entidad fuerte así:
- Nombre del empleado
- Número de identificación
- Dirección
- Conjunto de habilidades del empleado
- Fecha de contratación
- Años de servicio
En este ejemplo, tendría dos atributos de datos de esquema relacional. En primer lugar, tendrías el atributo Empleado, que es la clave primaria de la tabla (ya que todo está relacionado con el empleado) y un atributo Dirección, que es un atributo compuesto formado por diferentes elementos.
El atributo Dirección estaría formado por los siguientes valores:
- Ciudad
- Calle
- Número de dirección
- Código postal
Sabiendo esto, estás listo para mapear un diagrama entidad relación a esquema relacional. Tendría el siguiente aspecto:
- Empleado (nombre, número de identificación, número de dirección, calle, ciudad, código postal, fecha de contratación)
- Conjunto de habilidades del empleado (número de identificación, conjunto de habilidades)
Debería notar que los años de servicio están excluidos de esta lista. Esto se debe a que es un atributo derivado que se puede calcular restando la fecha de contratación de la fecha actual. La razón por la que el conjunto de habilidades del empleado tiene su propio esquema es porque es un atributo multivaluado.
Para el esquema relacional, cada tipo de entidad se convierte en su propia tabla, y cada atributo de un solo valor es una columna dentro de esa tabla. Los atributos derivados pueden ignorarse con seguridad, mientras que los atributos multivaluados se convierten en tablas separadas.
El método para convertir los tipos de entidad débil al esquema relacional es similar al proceso descrito anteriormente, excepto que los tipos de entidad débil se convierten en tablas propias y la clave primaria de la entidad fuerte actúa como clave ajena en la tabla.
Esto significa que para la entidad fuerte Empleado, se crearía una clave primaria compuesta formada por la clave ajena Dependiente y la clave de la propia entidad débil. Esto haría que el esquema tuviera el siguiente aspecto:
- Empleado (Nombre, Número de identificación, Número de dirección, Calle, Ciudad, Código postal, Fecha de contratación)
- Dependiente (Empleado, ID dependiente, Nombre, Dirección)
La correlación aquí es entre el Número de identificación de la tabla Empleado y el elemento Empleado de la tabla Dependiente.
Con este trabajo realizado, está listo para comenzar a convertir las relaciones. Hacerlo requiere entender la cardinalidad y el grado de cada relación.
- Hay tres cardinalidades posibles – 1:1, 1:M, 1:N
- Hay tres grados posibles – unario, binario y ternario.
Siguiendo con el ejemplo anterior, Empleado podría combinarse con una nueva tabla Departamento para formar una relación binaria 1:1. Si el empleado gestiona un departamento específico, entonces puede describirse como un participante parcial, mientras que el departamento se describiría como un participante total.
El esquema relacional sería el siguiente:
- Empleado (nombre, número de identificación, número de dirección, calle, ciudad, código postal, fecha de contratación)
- Departamento (número de identificación del gerente, identificación del departamento, nombre, dirección)
En este caso, la clave primaria del participante parcial se convierte en la clave externa del participante total. El número de identificación del gerente se correlaciona con el número de identificación del empleado correspondiente.
Esto muestra una parte importante de la creación del esquema relacional. La clave primaria de cualquiera de los participantes en una relación binaria 1:1 puede convertirse en una clave foránea en el otro. Otra forma de describir la relación anterior sería utilizar Manages como clave foránea bajo Employee, correlacionando con la clave primaria Department ID bajo Department.
Un ejemplo de relación binaria 1:N sería la existente entre un Profesor que enseña una Asignatura. En un aula particular, los profesores pueden enseñar más de una Asignatura a una variedad de estudiantes, sin embargo, todas las Asignaturas comparten la misma relación con el profesor.
En la relación binaria 1:1 anterior, cada departamento tenía un administrador único. Con esta relación binaria 1:N, un número variable de alumnos puede compartir el mismo profesor. La clave primaria de Profesor sería el ID de Profesor, que se correlacionaría con la clave foránea de Asignatura, bajo Profesor.
Para describir una relación binaria M:N, imagine que un estudiante se matricula en un curso. Cree una nueva tabla que describa al Estudiante y otra que describa al Curso. Ambas tablas están relacionadas a través del acto de matricularse, y ambas presentan claves foráneas.
- La clave foránea para el Estudiante es el ID del Estudiante.
- La clave foránea para el Curso es el ID del Curso.
La clave primaria de la nueva tabla es la combinación de las claves foráneas de cada entidad. Se describiría como (ID del estudiante, ID del curso). Este es un esquema relacional binario único M:N que vincula a los estudiantes individuales con los cursos.
Esto funciona porque los IDs son, por su naturaleza, creados con el propósito de ser claves foráneas en las bases de datos relacionales.
Puede utilizar un esquema relacional para describir relaciones de auto-referencia. Por ejemplo, dos empleados que están casados entre sí podrían presentar la clave foránea Cónyuge. Para las dos claves foráneas de estos empleados, la referencia será el ID de empleado del otro empleado, que es la clave primaria de la tabla respectiva de cada empleado.
Esto también funciona en esquemas de relación con una cardinalidad 1:N. El propio campo de clave primaria se convertiría en la clave foránea de la misma tabla en este caso. Esto es lo mismo que un esquema unario 1:1.
Por ejemplo, un Empleado que es el gerente de un Subordinado puede tener gerente como su clave foránea. En este caso, el ID del Empleado sería la clave primaria en la misma tabla.
La autorreferencia de una relación M:N requiere dos tablas. Una debe representar la entidad en cuestión y la otra debe representar la relación M:N.
Imagine un empleado que es responsable de garantizar la calidad de un determinado producto o servicio. Esta relación tendría que incluir tanto al Garante como al Beneficiario como claves foráneas que se combinan para correlacionar con el ID del empleado de la tabla Empleado. Tanto el Garante como el Beneficiario actuarían como claves primarias y foráneas dentro de la tabla del esquema relacional recién creada.
Mientras que las relaciones binarias y unarias son sencillas de describir utilizando el esquema relacional con una o dos tablas. Las tablas ternarias requieren una tercera tabla nueva.
La clave primaria de esta nueva tabla consiste en la clave externa de cada entidad participante, sumada. Esto significa que la nueva tabla debe contener tres claves foráneas con las que correlacionar.
Por ejemplo, la relación entre un médico y su paciente consta en realidad de tres entidades: El médico, el paciente y el medicamento. Para describir adecuadamente esta relación como un esquema relacional, debe asignar claves foráneas a cada una de estas entidades y correlacionarlas con una nueva tabla titulada Prescripción.
Esta es una forma sencilla de visualizar el funcionamiento de una tabla ternaria. La clave primaria de la tabla Prescripción recién creada es (ID del médico, ID del paciente, ID del medicamento). Cualquier esquema que no incluya estas tres piezas importantes de datos está perdiendo una parte importante del rompecabezas.
Este enfoque permitiría a un gestor de bases de datos crear un archivo organizado de recetas que dé cuenta de tipos de medicamentos específicos, correlacionados inmediatamente con los nombres de los pacientes que los están usando y que ofrezcan los nombres de los médicos que los recetaron.
En aras de la exhaustividad, es posible que desee añadir la fecha de caducidad a la tabla Medicamento para que este dato esté disponible dentro de la matriz principal. Puede añadir la Fecha de la Próxima Cita o la Fecha de Recarga a la tabla de Recetas. Lógicamente, querrá añadir la Fecha de Nacimiento, la Dirección y otros datos relacionales importantes a la tabla Paciente.
Todas estas herramientas se combinan para hacer posible la creación de bases de datos orientadas a las relaciones en MySQL. Puede practicar la creación de sus propias bases de datos MySQL en línea con cualquier navegador utilizando SQLDBM.