Basesde Datos

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 10

UNIVERSIDAD TÉCNICA DE BABAHOYO

FACULTAD DE ADMINISTRACIÓN, FINANZAS E


INFORMÁTICA

INGENIERÍA EN SISTEMAS

TEMA:

EGRESADO:

TUTORA:

AÑO 2020
Campeonato de Ajedrez
 En el campeonato participan jugadores y árbitros, de ambos se requiere
conocer el número de asociado, nombre, dirección y teléfono de contacto. De
los jugadores se precisa además el nivel de juego en una escala de 1 a 10. Y de
los árbitros guardaremos los años de experiencia.
 Ningún árbitro puede participar como jugador.
 Los países envían al campeonato un conjunto de jugadores y árbitros,
aunque no todos los países envían participantes. Todo jugador y árbitro
es enviado por un único país. Un país puede ser representado por otro
país.
 Cada país se identifica por un número correlativo según su orden
alfabético e interesa conocer además su nombre y el número de clubes de
ajedrez existentes en el mismo.
 Cada partida se identifica por un número correlativo (CódigoPartida), la
juegan dos jugadores y la arbitra un árbitro. Interesa registrar las partidas
que juega cada jugador y el color (blancas o negras) con el que juega. Ha
de tenerse en cuenta que un árbitro no puede arbitrar a jugadores
enviados por el mismo país que ha enviado él.
 Todo participante participa en al menos una partida.
 Tanto jugadores como árbitros se alojan en uno de los hoteles en los que
se desarrollan las partidas, se desea conocer en qué hotel y en qué
fechas se ha alojado cada uno de los participantes. Los participantes
pueden no permanecer en Huércal de Almería durante todo el
campeonato, sino acudir cuando tienen que jugar alguna partida
alojándose en el mismo o distinto hotel. De cada hotel, se desea conocer
el nombre, la dirección y el número de teléfono.
 El campeonato se desarrolla a lo largo de una serie de jornadas (año,
mes, día) y cada partida tiene lugar en una de las jornadas, aunque no
tengan lugar partidas todas las jornadas.
 Cada partida se celebra en una de las salas de las que pueden disponer
los hoteles, se desea conocer el número de entradas vendidas en la sala
para cada partida. De cada sala, se desea conocer la capacidad y medios
de que dispone (radio, televisión, vídeo) para facilitar la retransmisión de
los encuentros. Una sala puede disponer de varios medios distintos.
 De cada partida se pretende registrar todos los movimientos que la
componen, la identificación de movimiento se establece en base a un
número de orden dentro de cada partida, para cada movimiento se
guardan la jugada (5 posiciones) y un breve comentario realizado por un
experto.
2.-Código Script de la creación de tablas y relaciones del diagrama
relacional (Comandos DDL).

DROP DATABASE IF EXISTS ajedrez;


CREATE DATABASE ajedrez CHARACTER SET utf8mb4;
USE ajedrez;

CREATE TABLE participante (


id INTEGER UNSIGNED AUTO_INCREMENT PRIMARY KEY,
numero_asociado MEDIUMINT UNSIGNED NOT NULL UNIQUE,
nombre VARCHAR(100) NOT NULL,
apellido1 VARCHAR(100) NOT NULL,
apellido2 VARCHAR(100) NOT NULL,
direccion VARCHAR(150) NOT NULL,
telefono CHAR(9) NOT NULL UNIQUE,
tipo ENUM('Jugador', 'Árbitro') NOT NULL
);

CREATE TABLE jugador (


id INTEGER UNSIGNED PRIMARY KEY,
nivel TINYINT UNSIGNED NOT NULL,
FOREIGN KEY (id) REFERENCES participante(id)
);

CREATE TABLE arbitro (


id INTEGER UNSIGNED PRIMARY KEY,
anyos_experiencia TINYINT UNSIGNED,
FOREIGN KEY (id) REFERENCES participante(id)
);

CREATE TABLE pais (


id INTEGER UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(50) NOT NULL,
numero_clubs SMALLINT UNSIGNED NOT NULL,
id_pais_representante INTEGER UNSIGNED,
FOREIGN KEY (id_pais_representante) REFERENCES pais(id)
);

CREATE TABLE hotel (


id INTEGER UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
direccion VARCHAR(150) NOT NULL,
telefono CHAR(9) NOT NULL UNIQUE
);

CREATE TABLE sala (


id INTEGER UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
capacidad SMALLINT UNSIGNED NOT NULL,
id_hotel INTEGER UNSIGNED,
FOREIGN KEY (id_hotel) REFERENCES hotel(id)
);

CREATE TABLE medios (


id INTEGER UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL
);

CREATE TABLE sala_tiene_medios (


id_sala INTEGER UNSIGNED NOT NULL,
id_medio INTEGER UNSIGNED NOT NULL,
PRIMARY KEY (id_sala, id_medio),
FOREIGN KEY (id_sala) REFERENCES sala(id),
FOREIGN KEY (id_medio) REFERENCES medios(id)
);

CREATE TABLE participante_se_aloja_hotel (


id INTEGER UNSIGNED AUTO_INCREMENT PRIMARY KEY,
id_participante INTEGER UNSIGNED NOT NULL,
id_hotel INTEGER UNSIGNED NOT NULL,
fecha_entrada DATE NOT NULL,
fecha_salida DATE NOT NULL,
FOREIGN KEY (id_participante) REFERENCES participante(id),
FOREIGN KEY (id_hotel) REFERENCES hotel(id)
);

CREATE TABLE jornada (


id INTEGER UNSIGNED AUTO_INCREMENT PRIMARY KEY,
dia TINYINT UNSIGNED NOT NULL CHECK(dia >=1 AND dia<=31),
mes TINYINT UNSIGNED NOT NULL CHECK(mes >=1 AND mes<=12),
anyo YEAR(4) NOT NULL
);

CREATE TABLE partida (


id INTEGER UNSIGNED AUTO_INCREMENT PRIMARY KEY,
id_jugador_blancas INTEGER UNSIGNED NOT NULL,
id_jugador_negras INTEGER UNSIGNED NOT NULL,
id_arbitro INTEGER UNSIGNED NOT NULL,
id_sala INTEGER UNSIGNED NOT NULL,
id_jornada INTEGER UNSIGNED NOT NULL,
FOREIGN KEY (id_jugador_blancas) REFERENCES jugador(id),
FOREIGN KEY (id_jugador_negras) REFERENCES jugador(id),
FOREIGN KEY (id_arbitro) REFERENCES arbitro(id),
FOREIGN KEY (id_sala) REFERENCES sala(id),
FOREIGN KEY (id_jornada) REFERENCES jornada(id)
);

CREATE TABLE movimientos (


id INTEGER UNSIGNED AUTO_INCREMENT PRIMARY KEY,
numero_movimiento SMALLINT UNSIGNED NOT NULL,
posiciones VARCHAR(20) NOT NULL,
comentario VARCHAR(50),
id_partida INTEGER UNSIGNED NOT NULL,
FOREIGN KEY (id_partida) REFERENCES partida(id)
);

3.-Código Script con comandos de inserción que llenen las tablas


básicas y las tablas de negocio.
INSERT INTO `arbitro` (`id`, `anyos_experiencia`) VALUES ('3', '5');

INSERT INTO `hotel` (`id`, `nombre`, `direccion`, `telefono`) VALUES ('11', 'los andes', 'isaias
ichupitea', '05212345');
INSERT INTO `jornada` (`id`, `dia`, `mes`, `anyo`) VALUES ('2', '01', '09', '2000');

INSERT INTO `jugador` (`id`, `nivel`) VALUES ('2', '10');

INSERT INTO `partida` (`id`, `id_jugador_blancas`, `id_jugador_negras`, `id_arbitro`, `id_sala`, `id_jornada`) VALUE
S ('30', '1', '2', '3', '30', '2');

INSERT INTO `movimientos` (`id`, `numero_movimiento`, `posiciones`, `comentario`, `id_partida`) VALUES ('40'
, '10', '4', 'mate pastor', '30');

INSERT INTO `medios` (`id`, `nombre`) VALUES ('50', 'LAhoraTV');

INSERT INTO `sala` (`id`, `nombre`, `capacidad`, `id_hotel`) VALUES ('3
0', 'las vegas', '50', '2');
INSERT INTO `sala_tiene_medios` (`id_sala`, `id_medio`) VALUES ('30', '50');

INSERT INTO participante (numero_asociado, nombre, apellido1, apellido2, direc
cion, telefono, tipo) VALUES ('Aso.
Leones', 'Tania', 'García', 'Pérez','Sucre','054341966', 'senior')

INSERT INTO `participante` (`id`, `numero_asociado`, `nombre`, `apellido1`, `apellido2`, `direccion`, `telefono`, `
tipo`) VALUES ('4', '104', 'ezequiel', 'vargas', 'cervantes', 'bolibar', '052736245', 'Árb
itro');

INSERT INTO `participante` (`id`, `numero_asociado`, `nombre`, `apellido1`,


`apellido2`, `direccion`, `telefono`, `tipo`) VALUES ('2', '101', 'rut',
'benitez', 'gomez', 'mamei', '0981610647', 'Jugador');

INSERT INTO `participante` (`id`, `numero_asociado`, `nombre`, `apellido1`,


`apellido2`, `direccion`, `telefono`, `tipo`) VALUES ('3', '103', 'peter',
'vera', 'vega', 'salto', '09891616142', 'Árbitro');

INSERT INTO hotel (nombre, direccion, telefono) VALUES ('Eli','Sucre','0503107222')

INSERT INTO participante (numero_asociado, nombre, apellido1, apellido2, direccion, tele
fono, tipo) VALUES ('100', 'Eli', 'Benitez', 'Gomez','Sucre','05037222', 'senior');

INSERT INTO `arbitro`(`id`, `anyos_experiencia`) VALUES ('0001','3');

INSERT INTO `hotel`(`id`, `nombre`, `direccion`, `telefono`) VALUES ('
0002','las naves','av. las americas','0981610646')

INSERT INTO `jornada`(`id`, `dia`, `mes`, `anyo`) VALUES ('01','01','03','2020')

INSERT INTO `jugador`(`id`, `nivel`) VALUES ('0001','2')

INSERT INTO `medios`(`id`, `nombre`) VALUES ('0001','Tania')

INSERT INTO `participante_se_aloja_hotel` (`id`, `id_participante`, `id_hotel`, `fecha_entrada`, `fecha_salida`) VALU
ES ('010', '2', '2', '2020-06-09', '2020-07-08');

INSERT INTO `pais` (`id`, `nombre`, `numero_clubs`, `id_pais_representante`) VALUES ('020', 'ecuador', '
10', '020');

4.-Definición de 20 enunciados de consultas DML de diferentes tipos


con su respectiva solución.

Enunciados
1. Obtener los datos completos de los participantes.
SELECT * FROM `participante`

2. Obtener los datos completos de jugador


SELECT * FROM `jugador`

3.  Obtener los datos de los participantes con cargo ‘Arbitro.


select * from participante where lower(tipo)='arbitro'

4. Obtener nombre y número de asociado de los participantes


SELECT nombre, numero_asociado FROM `participante`

5.  Obtener los datos de los participantes arbitos, ordenado por


nombre.
SELECT * FROM participante where lower(tipo)='arbitro' order by nombre asc

6. Obtener todas las partidas.


SELECT * FROM `partida`
7. Obtener todas las salas
SELECT * FROM `sala`

8. Elabore un listado donde para cada fila, figure ‘Nombre’ y


‘tipo’ antes del valor respectivo para cada participante.
select nombre as 'nombre', tipo as 'tipo' from participante

9.  Muestra los participantes cuyo nombre empiece entre las


letras E y T (rango). Liste estos participantes y su tipo por
orden alfabético.
select nombre, tipo from participante where lower(nombre) > 'R' and lower(nombre) 
< 'T' order by numero_asociado

10. Hallar los medios cuyo nombre no contiene la cadena “MA”


select nombre from medios where lower(nombre) not like '%ma%'

11. Actualizar la fila 1 de la tabla medios.


UPDATE `medios` SET `id` = '20', `nombre` = 'canal 6' WHERE `medios`.`id` = 1;

12. obtener los nombres de los medios que no sean “extra” ni


“Universo”
select nombre from medios where lower(nombre) not in ('extra', 'universo')

13. actualizar número de asociado del participante 1


UPDATE `participante` SET `numero_asociado` = '102' WHERE `participante`.`id` = 1;

14. Obtener información de los participantes cuyo nombre


tiene exactamente 5 caracteres.
select * from participante where char_length(nombre) = 5

15. Obtener información de los países cuyo nombre tiene al


menos 11 caracteres
select * from pais where char_length(nombre) < 11

16. Listar los datos de los participantes, su alojamiento cuyo


nombre inicia por la letra ‘M’
select e.nombre, d.nombre from participante e, hotel d where e.id=d.id and lower(e.nom
bre) like 'm%'

17. Mostar en que hotel se hospeda la jugadora rut.


select e.nombre, d.nombre from participante e, hotel d where e.id=d.id and lower(e.nombre) 
like 'rut%'
18. Ordenar los datos de las salas que comiencen con l
select e.id_sala, d.nombre from sala_tiene_medios e, sala d where e.id_sala=d.id and lowe
r(d.nombre) like 'L%'

19. Mostrar los datos de la tabla jugador


SELECT * FROM `jugador`

20. Mostrar los años de experiencia de los árbitros junto al


nombre y apellido
select e.anyos_experiencia, d.nombre, d.apellido1 from arbitro e, participante d where e.id
=d.id

5.-Resumen (Apreciación de los conocimientos adquiridos).


Aprendí los conceptos del diseño físico de las bases de datos y las
tecnologías y aplicaciones emergentes en el campo de las bases de
datos.
Bueno para mí la base de datos relacionales facilita muchísimo las
consultas y evitan inconsistencias al insertar, eliminar y actualizar
datos. Además de un montón de herramientas modernas que
facilitan su uso.

También podría gustarte