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
|