Modelado logico relacional de bases de datos
Aquí te dejo una versión más clara y sencilla de la transformación del modelo E/R al modelo relacional, usando ejemplos para facilitar la comprensión.
Transformación del Modelo E/R al Modelo Relacional
- Eliminar atributos multivaluados:
- Los atributos que pueden tener más de un valor (multivaluados) se transforman en una nueva tabla que actúa como una "entidad débil".
- Ejemplo: Si un estudiante puede tener varios números de teléfono, creas una tabla separada llamada
Telefonos, relacionada con la tablaEstudiantes.
- Eliminar atributos compuestos:
- Los atributos que están formados por varios valores más simples (compuestos) se dividen en sus partes.
- Ejemplo: Si tienes un atributo
Direcciónque incluye calle, ciudad y código postal, estos se dividen enCalle,CiudadyCódigoPostal. La tabla resultante podrá ser:- Una sola tabla
estudianteque incorpore esos campos. - Dos tablas
estudianteydirecciónrelacionadas con cardinalidad 1:1.
- Una sola tabla
- Entidades siempre generan tablas:
- Cada entidad en el modelo E/R se convierte en una tabla.
- Ejemplo: La entidad
Estudiantegenera una tablaEstudiantescon sus atributos como columnas y la tablaProfesorgenera otra tablaProfesorescon sus atributos como columnas.
- Relaciones:
- Las relaciones entre entidades pueden o no generar una tabla, dependiendo de su cardinalidad y atributos.
- Si la relación tiene atributos propios o es de tipo N:M, genera una tabla. Si no, se pasa la clave a otra tabla.
- Ejemplo: Una relación entre
EstudiantesyCursosque contiene atributos comoFechaDeInscripciónse convierte en una tablaInscripciones.
Relaciones 1:1 (Uno a Uno)
- Regla General: No generan tabla nueva. Se pasa la clave de una entidad como clave externa (foránea) a la otra tabla y debe ser única.
- Ejemplo: Tenemos varias opciones
- Puedes añadir una columna
num_Pasaporteen la tablaPersonas, que referencia la tablaPasaportes. - Puedes añadir una columna
idPersonaen la tablaPasaportes, que referencia la tablaPersonas. - Puedes hacer que
idde la tablapersonay elidPersonade la tablapasaportesean el mismo y así poder relacionarse entre ellos.
- Puedes añadir una columna
- Ejemplo: Tenemos varias opciones
Relaciones 1:N (Uno a Muchos)
- Regla General: No generan tabla nueva. Se pasa la clave de la entidad del lado "1" a la tabla del lado "N" como clave externa.
- Ejemplo: Si un profesor puede enseñar varios cursos, se añade una columna
dni_Profesoren la tablaCursos.
- Ejemplo: Si un profesor puede enseñar varios cursos, se añade una columna
Relaciones N:M (Muchos a Muchos)
- Regla General: Siempre generan una tabla. La clave principal de la tabla está compuesta por las claves de ambas entidades.
- Ejemplo: Si un estudiante puede matricularse en varios cursos y un curso puede tener varios estudiantes, se genera una tabla
Matriculaque contieneID_EstudianteeID_Curso.- Tenemos 2 posibilidades, matrícula podrá tener su propia clave primaria o podrá tener una clave compuesta por las claves de estudiante y curso.
- Ejemplo: Si un estudiante puede matricularse en varios cursos y un curso puede tener varios estudiantes, se genera una tabla
Relaciones Asociativas
- Regla General: Siempre generan una tabla. La clave principal de la tabla está compuesta por las claves de ambas entidades.
- Ejemplo: Si un estudiante puede matricularse en varios cursos y un curso puede tener varios estudiantes, se genera una tabla
Matriculaque contieneID_EstudianteeID_Curso.- Tenemos 2 posibilidades, matrícula podrá tener su propia clave primaria o podrá tener una clave compuesta por las claves de estudiante y curso.
- Ejemplo: Si un estudiante puede matricularse en varios cursos y un curso puede tener varios estudiantes, se genera una tabla
Relaciones con atributos
- Regla General: Siempre generan una tabla. La clave principal de la tabla nueva está compuesta por las claves de ambas entidades.
- Ejemplo: Si un empleado trabaja en un departamento y en un departamento trabajan varios empleados, y necesitamos almacenar datos extra de esa relación (como la fecha de inicio del trabajo). Creamos una tabla
Trabajaque contieneID_Empleado,ID_DepartamentoyFechaInicio.
- Ejemplo: Si un empleado trabaja en un departamento y en un departamento trabajan varios empleados, y necesitamos almacenar datos extra de esa relación (como la fecha de inicio del trabajo). Creamos una tabla
Relaciones N-arias (Entre más de dos entidades)
- Regla General: Siempre generan una tabla que incluye las claves de todas las entidades involucradas.
- Ejemplo: Si tienes una relación entre
Estudiante,CursoyProfesor, se crea una tablaAsignacionescon las claves de las tres entidades.
- Ejemplo: Si tienes una relación entre
Relaciones Reflexivas (Autorreferenciales)
- Estas son relaciones que una entidad tiene consigo misma, y se comportan según su cardinalidad.
- Ejemplo 1:1: Si un empleado supervisa a otro empleado, no necesitas generar una nueva tabla, solo añades una columna
SupervisorIDen la tablaEmpleadosque referencia otra fila de la misma tabla.
- Ejemplo 1:1: Si un empleado supervisa a otro empleado, no necesitas generar una nueva tabla, solo añades una columna
Relaciones Jerárquicas (Supertipo/Subtipo)
- Si tienes una relación entre un supertipo y sus subtipos (como
Vehículoque puede serCocheoMoto), existen dos opciones:- Eliminar el supertipo: Cada subtipo (
Coche,Moto) tiene su propia tabla, incluyendo los atributos del supertipoVehículo. - Eliminar los subtipos: Creas una única tabla para el supertipo (
Vehículo), y añades los atributos de los subtipos en esa tabla.
- Ejemplo: Si decides eliminar los subtipos, la tabla
Vehículostendrá una columna adicional llamadaTipoVehículoque especifica si es unAutoo unaMoto.
- Eliminar el supertipo: Cada subtipo (
Estas reglas permiten convertir un modelo entidad-relación (E/R) en un modelo relacional que pueda implementarse en una base de datos.
- Loading...