Esquema E-R + Modelo Relacional + Create Table + Insert Data





1. Esquema E-R





2. Esquema E-R en WorkBench




3. Modelo Relacional

Profesores (Identificador, DNI, Nombre, Dirección, Teléfono)
Módulos (Código, Nombre, Identificador del profesor)
Alumnos (Número de expediente, Nombre, Apellidos, Fecha de nacimiento, Número de delegado)
Matrículas (Nº expediente del alumno, Código del módulo)



4. Creación de BDs y Tablas con Forward Enginner. Diagrama E-R => DB en MySQL Server

Para ello vamos a seguir el siguiente link de la documentación oficial de MySQL:

5. Scripts de Creación de tablas equivalente




CREATE DATABASE bd_instituto;
USE bd_instituto;

CREATE TABLE profesores(
id INT AUTO_INCREMENT,
nombre VARCHAR(50) NOT NULL,
direccion VARCHAR(100),
telefono VARCHAR(20),
CONSTRAINT pk_profesor PRIMARY KEY(id)
);

CREATE TABLE modulos(
codigo INT AUTO_INCREMENT,
nombre VARCHAR(50) NOT NULL,
id_profesor INT,
CONSTRAINT pk_modulo PRIMARY KEY(codigo),
CONSTRAINT fk_profesor FOREIGN KEY (id_profesor) REFERENCES profesores(id)
);

CREATE TABLE alumnos(
numero_expediente INT AUTO_INCREMENT,
nombre VARCHAR(50) NOT NULL,
apellidos VARCHAR(50) NOT NULL,
fecha_nacimiento DATE,
numero_delegado INT,
CONSTRAINT pk_alumno PRIMARY KEY (numero_expediente),
CONSTRAINT fk_delegado FOREIGN KEY (numero_delegado) REFERENCES alumnos(numero_expediente)
);
CREATE TABLE matriculas(
expediente_alumno INT,
codigo_modulo INT,
CONSTRAINT pk_matricula PRIMARY KEY(expediente_alumno, codigo_modulo),
CONSTRAINT fk_alumno FOREIGN KEY (expediente_alumno) REFERENCES alumnos(numero_expediente),
CONSTRAINT fk_modulo FOREIGN KEY (codigo_modulo) REFERENCES modulos(codigo)
);

SHOW TABLES;
DESCRIBE profesores;
DESCRIBE modulos;
DESCRIBE alumnos;
DESCRIBE matriculas;




6. SQL de inserción de datos



INSERT INTO profesores VALUES
(DEFAULT, 'Josep', 'C/Principal', DEFAULT),
(DEFAULT, 'Maria', 'Plaza Mayor', '93-555-67-78');

select * from profesores;

delete from modulos;

INSERT INTO modulos VALUES
(100, 'mates', 1),
(200, 'lengua', 2),
(300, 'física', 1),
(400, 'filosofía', 2);

select * from modulos;

delete from alumnos where numero_delegado is not null;
delete from alumnos;

INSERT INTO alumnos VALUES
(10, 'Isabel', 'Ribes',   NULL, NULL),
(20, 'Raúl',   'Ríos',   '1978-02-01', 10),
(30, 'Carmen', 'Giménez', NULL, 10),
(40, 'Laura',  'Lahoz',   '1981-11-20', NULL),
(50, 'Ana',    'Medina',  NULL, 40),
(60, 'Juan',   'Sánchez', NULL, 40),
(70, 'Jesús',  'Pena',    NULL, 40);

select * from alumnos;

INSERT INTO matriculas VALUES
(10, 100), (10, 300),
(20, 400),
(30, 200), (30, 400),
(40, 100), (40, 200), (40, 300),
(50, 200),
(60, 100), (60, 300),
(70, 100), (70, 200), (70, 300), (70, 400);

select * from matriculas;





7. Tablas resultantes de los scripts anteriores



Profesores
id
nombre
direccion
telefono
1
Josep
C/Principal
Null
2
Maria
Plaza Mayor
93-555-67-78




Módulos
codigo
nombre
id_profesor
100
mates
1
200
lengua
2
300
física
1
400
filosofía
2






Alumnos
numero_expediente
nombre
apellidos
fecha_nacimiento
numero_delegado
10
Isabel
Ribes
null
null
20
Raúl
Ríos
1978-02-01
10
30
Carmen
Giménez

10
40
Laura
Lahoz
1981-11-20
null
50
Ana
Medina
null
40
60
Juan
Sánchez
null
40
70
Jesús
Pena
null
40



Matrículas
expediente_alumno
codigo_modulo
10
100
10
300
20
400
30
200
30
400
40
100
40
200
40
300
50
200
60
100
60
300
70
100
70
200
70
300
70
400

No hay comentarios:

Publicar un comentario