Está en la página 1de 17

Entrega final: Modelado de Base de Datos para un Mundial de Fútbol

Pablo Fildardo Arias Arias, (COD. 1911921526)


Yesid A. López V. (COD. 1821020913)
Juan Pablo Sarmiento Bautista (COD. 1911025941)
Wilder Andrei Moreno Novoa (COD. 1511025432)

Tutor: Diego Roa.

Universidad Politécnico Grancolombiano


Facultad de Ingeniería, Diseño e Innovación
Ingeniería de Software
Bases de datos
Bogotá D.C
Diciembre 8, 2020
Bases de datos para mundial de fútbol.
Se desea construir una base de datos para hacer el seguimiento de los equipos y los
partidos del mundial, por lo que se sugiere tener en cuenta los siguientes puntos.
1. Un equipo tiene un determinado número de jugadores y NO todos juegan en cada
partido (11 en forma oficial y hasta 3 cambios, es decir, en total juegan 14 jugadores a
lo sumo por partido, conservando 11 jugadores en la cancha de un total de 22 que
como mínimo lleva cada país.
2. Es deseable hacer un seguimiento de los jugadores que disputan cada partido, por
cada equipo, llevar el registro de la posición o posiciones en las que jugaron en cada
partido por cada equipo y registrar el resultado del encuentro.
3. Se debe llevar el registro de los países participantes por continente, luego organizarlos
en grupos. A medida que el torneo avanza, los grupos se reestructuran hasta llegar a
los encuentros finales.
4. Se debe llevar un control de puntos totales. Un partido ganado vale 3 puntos. Partidos
empatados cargan un punto a cada equipo y los goles anotados por cada equipo.
5. Se deben registrar los goles por jugador, las tarjetas por jugador y por equipo (rojas y
amarillas), las lesiones por jugador y por equipo, los cambios realizados por equipo en
cada juego, los jugadores dados de baja por enfermedad por equipo.
Para dar cumplimiento a estos requerimientos se procede a la elaboración de la tabla de
sustantivos general y la tabla de sustantivos candidatos a entidades.
Sustantivos generales. Sustantivos candidatos
Equipo Contiene
Jugador Equipo
Partido Jugador
Estadio Partido
Grupo Estadio
Fase Grupo
Arbitro Fase
Amonestación Arbitro
Cambio Amonestación
Gol Cambio
Estadísticas Gol
Gol a favor Estadísticas
Gol encontrar
Puntaje
Tarjeta Amarilla
Tarjeta roja
Modelo Conceptual.
Con el objetivo de describir el contenido de la información de la base de datos, se realiza el
modelo conceptual correspondiente partiendo de las especificaciones de los requisitos
previamente enumerados y utilizando el Modelo Entidad Relación Extendido.
-Diccionario de Entidades y Relaciones

Relaciones
Relación Entidades que Intervienen Cardinalidad
pertenece Jugador, Equipo 1,n
tiene Jugador, Acciones 1,n
presenta Partido, Acciones 1,n
registra Tabla de Resultados, Partido 1,n
Se_relaciona Equipo, Tabla de Resultados n,1
Juega Equipo, Partido n,n
participa Equipo, Campeonato n,1
tiene Campeonato, Partido 1,1

Entidades
Nombre Entidad Jugador
Descripción Corresponde a los miembros del equipo
Atributo Descripción del Atributo
Posición Corresponde a la posición jugador en el campo.
Seguimiento Se refiere al desempeño del jugador a medida
que pasan los partidos.

Nombre Entidad Equipo


Descripción Se refiere al grupo de personas que representa
a un país en campeonato.
Atributo Descripción del Atributo
País Corresponde a la nación que envío su equipo de
jugadores a participar en el campeonato.
Continente Es el grupo de países
Grupo El número de equipos que juegan entre sí para
avanzar de etapa del campeonato.

Nombre Entidad Acciones


Descripción Se refiere a acciones que impiden que un
jugador pueda continuar en el juego, o a sus
anotaciones con el fin de triunfar en el
campeonato.
Atributo Descripción del Atributo
Lesiones Razón medica por la que un jugador no puede
jugar.
Gol Anotaciones realizadas por un jugador y
aportan en el triunfo de un equipo sobre el otro.
Tarjetas Amonestaciones por comportamiento o acciones
antideportivas.
Cambios Cambios de jugadores durante el partido.

Nombre Entidad Tabla de Resultados


Descripción Listado de los equipos participantes donde se
muestra su desempeño en el campeonato
Atributo Descripción del Atributo
Ganados Número de partidos dónde el equipo ha sido
vencedor.
Empatados Número de partidos dónde el equipo ha sido ni
vencedor ni perdedor.
Perdidos Número de partidos dónde el equipo ha sido
vencido.

Nombre Entidad Partido


Descripción Juego en el que se encuentran dos equipos con
el fin de vencer al oponente.
Atributo Descripción del Atributo
Fecha Día, mes y año en el que ocurre el partido.
Hora Hora del día a la que da inicio el partido.
Estadio Lugar dónde se juega el partido.

Nombre Entidad Campeonato


Descripción Competición en la que participan
Atributo Descripción del Atributo
Campeón Equipo que logra vencer a todos los
participantes en el campeonato.
Subcampeón Equipo que llega hasta el segundo puesto en la
lista de resultados.
Cuarto Uno de los mejores cuatro equipos del
campeonato.
Octavo Uno de los mejores ocho equipos del
campeonato.
Modelo Lógico

Proceso de Normalización
Primera forma normal. Se dividió el atributo Nombre en la tabla Jugadores entre Nombres y

Apellidos ya que los atributos o valores almacenados deben ser indivisibles.

Segunda forma normal. Se halló una dependencia funcional parcial en la tabla Jugadores con

el atributo Equipo y en la tabla Equipos con el atributo Jugadores por lo que se creó una tabla llamada

Equipos-Jugadores. Los atributos no dependían de la llave primaria. Por otra parte, en la tabla

Jugadores el atributo Posicion no dependía de la llave primaria en por lo que se creo la tabla

Jugadores-Posiciones.

Tercera forma normal. Existía una dependencia funcional transitiva en la tabla Jugadores-

Posiciones ya que el atributo Id_Posicion era un atributo no clave del cual dependía Nombre_Posicion

que a su vez era un atributo no clave. De este modo se crea la tabla Posiciones.
Modelo lógico.
Capturas del Modelo Físico
Tabla Acciones

Tabla CAMPEONATO
Tabla Equipos

Tabla Equipos-Jugadores
Tabla Jugadores

Tabla Partidos
Tabla Posiciones

Tabla Resultados
Script o Código

-- MySQL Workbench Forward Engineering

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;


SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,
FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE,
SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZER
O_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

-- -----------------------------------------------------
-- Schema Mundial
-- -----------------------------------------------------

-- -----------------------------------------------------
-- Schema Mundial
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `Mundial` DEFAULT CHARACTER SET utf8 ;
USE `Mundial` ;

-- -----------------------------------------------------
-- Table `Mundial`.`Equipos`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Mundial`.`Equipos` (
`id_Equipo` INT NOT NULL,
`Pais` VARCHAR(15) NOT NULL,
`Grupo` INT NOT NULL,
`Continente` VARCHAR(15) NOT NULL,
PRIMARY KEY (`id_Equipo`))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `Mundial`.`Jugadores`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Mundial`.`Jugadores` (
`id_jugador` INT NOT NULL,
`Apellidos` VARCHAR(45) NOT NULL,
`Nombres` VARCHAR(45) NOT NULL,
`Dorsal` INT NOT NULL,
`Enfermedad` TINYINT NULL,
PRIMARY KEY (`id_jugador`))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `Mundial`.`Posiciones`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Mundial`.`Posiciones` (
`id_Posicion` INT NOT NULL,
`Nombre_posicion` VARCHAR(20) NULL,
PRIMARY KEY (`id_Posicion`))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `Mundial`.`Equipos-Jugadores`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Mundial`.`Equipos-Jugadores` (
`Equipos_id_Equipo` INT NOT NULL,
`Jugadores_id_jugador` INT NOT NULL,
PRIMARY KEY (`Equipos_id_Equipo`, `Jugadores_id_jugador`),
INDEX `fk_Equipos-jugadores_Jugadores1_idx` (`Jugadores_id_jugador` ASC) VISIBLE,
CONSTRAINT `fk_Equipos-jugadores_Equipos1`
FOREIGN KEY (`Equipos_id_Equipo`)
REFERENCES `Mundial`.`Equipos` (`id_Equipo`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Equipos-jugadores_Jugadores1`
FOREIGN KEY (`Jugadores_id_jugador`)
REFERENCES `Mundial`.`Jugadores` (`id_jugador`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `Mundial`.`Partidos`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Mundial`.`Partidos` (
`Id_partido` INT NOT NULL,
`Fecha_Hora` DATETIME NOT NULL,
`Equipos_id_Equipo1` INT NOT NULL,
`Equipos_id_Equipo2` INT NOT NULL,
`Estadio` VARCHAR(45) NOT NULL,
`Goles_Equipo1` INT NULL,
`Goles_Equipo2` INT NULL,
PRIMARY KEY (`Id_partido`, `Equipos_id_Equipo1`, `Equipos_id_Equipo2`),
INDEX `fk_Partidos_Equipos2_idx` (`Equipos_id_Equipo2` ASC) VISIBLE,
CONSTRAINT `fk_Partidos_Equipos1`
FOREIGN KEY (`Equipos_id_Equipo1`)
REFERENCES `Mundial`.`Equipos` (`id_Equipo`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Partidos_Equipos2`
FOREIGN KEY (`Equipos_id_Equipo2`)
REFERENCES `Mundial`.`Equipos` (`id_Equipo`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `Mundial`.`Acciones`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Mundial`.`Acciones` (
`Jugadores_id_jugador` INT NOT NULL,
`Goles` INT NULL,
`Tarjetas_Rojas` INT NULL,
`Tarjetas_Amarillas` INT NULL,
`Lesiones` INT NULL,
`Cambio_JEntrante` INT NULL,
`Cambio_JSaliente` INT NULL,
INDEX `fk_Acciones_Jugadores1_idx` (`Jugadores_id_jugador` ASC) VISIBLE,
CONSTRAINT `fk_Acciones_Jugadores1`
FOREIGN KEY (`Jugadores_id_jugador`)
REFERENCES `Mundial`.`Jugadores` (`id_jugador`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `Mundial`.`Tabla Resultados`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Mundial`.`Tabla_Resultados` (
`Equipos_id_Equipo` INT NOT NULL,
`Posicion` INT NOT NULL,
`P_Ganados` INT NOT NULL,
`P_Empatados` INT NOT NULL,
`P_Perdidos` INT NOT NULL,
`P_Jugados` INT NOT NULL,
`Goles_Favor` INT NOT NULL,
`Goles_Contra` VARCHAR(45) NOT NULL,
`Total_puntos` INT NOT NULL,
PRIMARY KEY (`Equipos_id_Equipo`),
CONSTRAINT `fk_Tabla_Resultados_Equipos1`
FOREIGN KEY (`Equipos_id_Equipo`)
REFERENCES `Mundial`.`Equipos` (`id_Equipo`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `Mundial`.`CAMPEONATO`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Mundial`.`CAMPEONATO` (
`Campeon` TINYINT NOT NULL,
`Subcampeon` TINYINT NOT NULL,
`Cuartos` TINYINT NOT NULL,
`Octavos` TINYINT NOT NULL,
`Equipos_id_Equipo` INT NOT NULL,
INDEX `fk_CAMPEONATO_Equipos1_idx` (`Equipos_id_Equipo` ASC) VISIBLE,
CONSTRAINT `fk_CAMPEONATO_Equipos1`
FOREIGN KEY (`Equipos_id_Equipo`)
REFERENCES `Mundial`.`Equipos` (`id_Equipo`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `Mundial`.`Jugadores-Posiciones`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Mundial`.`Jugadores-Posiciones` (
`Jugadores_id_jugador` INT NOT NULL,
`Posiciones_id_Posicion` INT NOT NULL,
PRIMARY KEY (`Jugadores_id_jugador`, `Posiciones_id_Posicion`),
INDEX `fk_Jugadores-Posiciones_Posiciones1_idx` (`Posiciones_id_Posicion` ASC) VISIBLE,
CONSTRAINT `fk_Jugadores-Posiciones_Jugadores1`
FOREIGN KEY (`Jugadores_id_jugador`)
REFERENCES `Mundial`.`Jugadores` (`id_jugador`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Jugadores-Posiciones_Posiciones1`
FOREIGN KEY (`Posiciones_id_Posicion`)
REFERENCES `Mundial`.`Posiciones` (`id_Posicion`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

También podría gustarte