Vista previa del material en texto
Taller 1: Diseño y desarrollo de una base de datos (v2) Autor: Luis Carlos Berrocal Sarmiento Tutor: Elḱın Daŕıo González Mart́ınez Asignatura: Administración de Bases de Datos — 56617 — 22v06 Programa de Ingenieŕıa de Sistemas Corporación Unificada Nacional de Educación Superior - CUN Seccional Bogotá - Virtual Marzo, 2023 1 1. Introducción Este documento presenta de forma general, la solución para una problematica que se descrirbira en breve. Cabe aclarar que, en este documento se muestran fragmentos de códigos, los cuales hacen parte del lenguaje SQL y, cuando se habla del motor de bases de datos, se hace referencia a SSMS (SQL Management Studio) de Microsoft. 2. Necesidades de información 2.1. Descripción del problema Empezaremos por describir la situación problema para la cual se planea diseñar y desarrollar esta base de datos. Inicialmente partimos de que, muchos jóvenes (me incluyo) tenemos las destrezas y habilidades para practi- car algún deporte especifico, sin embargo, en la ciudad donde vivimos no hay escuelas y/o clubes deportivos donde podamos inscribirnos, o torneos en los cuales podamos participar o, sencillamente queremos diver- tirnos disfrutando con otros jugadores. Entonces, a continuación, se plantea la solución al problema. 2.2. Solución del problema La idea es crear una aplicación móvil, por medio de la cual, los jóvenes puedan organizar torneos o simplemente poder reunirse en un partido de cualquier deporte en la ciudad donde viven. 2.3. Propuesta de la base de datos 2.3.1. Tipo de datos a almacenar Como ya sabemos, la idea es crear una app para que se reúnan un grupo de jóvenes, en un lugar determinado a practicar un deporte especifico. Por ende, es necesario guardar información como: Información personal del jugador (hasta cierto punto): Esto incluye nombres, edad, donde vive, de donde es, sexo, número de contacto. Información de los deportes que practica: En este punto es solo anotar en que deportes es hábil el jugador. Información del lugar: Esta información guarda datos como para que tipo de deporte esta destinado el lugar, tipo de suelo (si aplica), peŕımetro jugable (si aplica), condiciones del lugar, horas disponibles, sobre si es necesario realizar reserva (y su precio, si aplica), entre otros datos. 2.3.2. Utilización de los datos Los datos serán usados solo para fines dentro de la app, es decir, para mostrar la información a otros jugadores, para realizar un match en un partido, entre otros casos. 2.3.3. Usuarios de la base de datos Dado que la app es solo para jugadores, solo se establecerá el rol de Jugador. Este rol, que seŕıa nuestro cliente final y para quien estaŕıa dirigdo (en un futuro se pueden agregar más roles). 3. Procesos de negocio Hasta aqúı, tenemos claro lo siguiente: La información a guardar en la base de datos. 2 Los roles que existirán en la base de datos. Con eso claro, podemos determinar una estructura inicial de nuestra base de datos. Partiendo entonces por el comienzo, valga la redundancia, tenemos lo siguiente: Jugadores: Los jugadores deben tener un perfil en nuestra app con su información personal actua- lizada e información de los deportes que practica, aśı como sus habilidades en cada uno de ellos. El jugador puede reunirse con otros jugadores en un determinado sitio (acordado en la partida dentro de la app) y a una hora determinada. El jugador puede pertenecer a un equipo (si aplica). Lugar de juego: Este lugar es donde se ejecutara el encuentro. Debe tener actualizados datos, dirección, precio (si aplica), tipo de deporte, horas disponibles. Este lugar puede ser publico (hablamos de complejos deportivos públicos, canchas publicas, playas, entre otros) o, ser privado (hablamos de que tiene un propietario y se debe pagar por el uso del lugar). Este lugar puede o no aceptar torneos, y se pueden ejecutar varios encuentros en un mismo d́ıa. 4. Modelo de datos El siguiente esquema, representa de forma general, el modelo de datos que se implementaŕıa como solución al problema propuesto. Figura 1: Modelo relacional: Solución del proyecto En el anterior modelo, podemos ver las tablas que contendrá la base de datos del aplicativo. Cabe destacar algunos puntos como: Tablas padre: Son jugador y deporte. Contienen información del jugador y el deporte que esta alojado en nuestra app, respectivamente. Son llamadas padre porque de ellas parten otras tablas como deporte jugador y escenario. Tablas hijo: Estas tablas guardan la relación entre dos tablas (no necesariamente tienen que ser padre). Por ejemplo, la tabla deporte jugador guarda la relación entre las tablas jugador y deporte (seŕıa el deporte que practica cada jugador) y, la tabla escenario torneo guarda la relación entre las tablas escenario y torneo (en que escenario se jugaŕıan los torneos abiertos). Las otras tablas (equipo, escenario y torneo) guardan la información de cada equipo, los escenarios disponibles para cada deporte y los torneos dentro de la app, respectivamente. 3 5. Esquema de la base de datos Se definió de manera general, el esquema de la base de datos y las tablas, acorde al modelo de datos presentado anteriormente, aśı: Lo primero es crear la base de datos, podemos hacerlo con la siguiente instrucción: 1 CREATE DATABASE app; Luego procedemos a la creación de la estructura de la base de datos: 1 USE [app] 2 GO 3 CREATE TABLE jugador ( 4 identificacion bigint NOT NULL PRIMARY KEY , 5 nombre nvarchar (100) NOT NULL , 6 apellido nvarchar (100) NOT NULL , 7 email nvarchar (250) NOT NULL , 8 edad nvarchar (2) NOT NULL , 9 contacto nvarchar (10) NOT NULL , 10 direccion nvarchar (200) NOT NULL , 11 genero nchar (1) NOT NULL 12 ); 13 GO 14 CREATE TABLE deporte ( 15 id bigint NOT NULL PRIMARY KEY , 16 nombre nvarchar (50) NOT NULL 17 ); 18 GO 19 CREATE TABLE deporte_jugador ( 20 id bigint NOT NULL PRIMARY KEY , 21 jugador bigint NOT NULL , 22 deporte bigint NOT NULL 23 ); 24 GO 25 CREATE TABLE equipo ( 26 id bigint NOT NULL PRIMARY KEY , 27 nombre nvarchar (200) NOT NULL , 28 tipoDeporte nvarchar (50) NOT NULL , 29 deporteJugador bigint NOT NULL 30 ); 31 GO 32 CREATE TABLE escenario ( 33 id bigint NOT NULL PRIMARY KEY , 34 nombre nvarchar (200) NOT NULL , 35 privacidad nvarchar (50) NOT NULL , 36 direccion nvarchar (250) NOT NULL , 37 capacidad nvarchar (10) NOT NULL , 38 precio bigint , 39 deporte bigint NOT NULL 40 ); 41 GO 42 CREATE TABLE torneo ( 43 id bigint NOT NULL PRIMARY KEY , 44 nombre nvarchar (200) NOT NULL , 45 fechaInicio DATE NOT NULL , 46 fechaFin DATE NOT NULL , 47 edad nvarchar (7) NOT NULL , 48 equipo bigint NOT NULL 49 ); 50 GO 51 CREATE TABLE escenario_torneo ( 52 id bigint NOT NULL PRIMARY KEY , 53 idTorneo bigint NOT NULL , 54 idEscenario bigint NOT NULL 55 ); El anterior código crea cada una de las tablas que necesitamos para el ejercicio, aśı como la asignación de claves primarias en cada uno de los campos en los que es necesario. 4 6. Inserción de datos Veamos entonces un pequeño ejemplo de algunos datos que se almacenaŕıan en nuestra base de datos. Se aclara que estos datos son totalmente ficticios y fueron creados mediante la herramienta de generación de datos: Mockaroo. El siguiente fragmento de código inserta los datos de un jugador en la tabla jugador: 1 USE [app] 2 GO 3 INSERT INTO jugador (identificacion , nombre , apellido , email , edad , contacto , direccion , genero) VALUES (’1377257177 ’, ’Waldon ’, ’McRill ’, ’wmcrill0@quantcast.com’, 21, ’ 3106811166 ’, ’216 Gale Parkway ’, ’M’); El siguiente fragmento de código inserta los datos de un deporte en la tabla deporte: 1 USE [app] 2 GO 3 INSERT INTO deporte (id, nombre) VALUES (100, ’Futbol ’); El siguiente fragmento de código inserta los datos del deporte que practica un jugador en la tabla depor- te jugador: 1 USE[app] 2 GO 3 INSERT INTO deporte_jugador (id , jugador , deporte) VALUES (1, ’1377257177’, ’200’); 7. Pruebas y ajustes En esta sección vamos a realizar algunas consultas a la base de datos mediante instrucciones en lenguaje SQL para determinar que funciona correctamente la misma y que existe congruencia en los datos que obtenemos. Listar los jugadores masculinos que tengan entre 18 y 30 años, registrados en la app. 1 USE [app] 2 GO 3 SELECT * FROM jugador WHERE genero=’M’ AND (edad >= 18 AND edad <= 30) Obtenemos lo siguiente en el motor de base de datos: Figura 2: Resultado consulta 1 Listar los jugadores que jueguen fútbol. 1 USE [app] 2 GO 3 SELECT j.identificacion AS IDJugador , j.nombre , j.apellido , d.id AS ID_Deporte , d. nombre AS Deporte , dp.jugador , dp.deporte AS ID_Deporte 4 FROM jugador AS j, deporte AS d, deporte_jugador AS dp 5 WHERE j.identificacion = dp.jugador AND d.id = dp.deporte AND d.nombre = ’Futbol ’ 5 Obtenemos los siguientes datos en el motor: Figura 3: Resultado consulta 2 Vamos a aclarar algo respecto a lo que muestra la consulta: En la sección de color rojo, muestra las columnas seleccionadas en la sentencia SELECT correspondientes a la tabla jugador. La sección de color verde, incluye los campos seleccionados de la tabla deporte y, en la ultima sección, los campos de la tabla deporte jugador. Listar los escenarios en los que se practica el fútbol y además, que son privados. 1 USE [app] 2 GO 3 SELECT e.nombre AS Esc_Nombre , e.privacidad , d.nombre AS Deporte 4 FROM escenario AS e, deporte AS d 5 WHERE d.nombre = ’Futbol ’ AND e.privacidad = ’Privado ’ 6 Obtenemos los siguientes datos en el motor: Figura 4: Resultado consulta 3 Listar los equipos en los que se practique el fútbol. 1 USE [app] 2 GO 3 SELECT * 6 4 FROM equipo AS e 5 WHERE e.tipoDeporte = ’Futbol ’ 6 Obtenemos lo siguiente en el motor: Figura 5: Resultado consulta 4 Listar los escenarios privados aptos para fútbol 1 USE [app] 2 GO 3 SELECT e.nombre , e.privacidad , d.nombre 4 FROM escenario AS e, deporte AS d 5 WHERE e.privacidad = ’privado ’ AND e.deporte = d.id AND d.nombre = ’Futbol ’ 6 Obtenemos como resultado en el motor: Figura 6: Resultado consulta 5 Dado los ejemplos anteriores podemos concluir que la información almacenada en la base de datos, aśı como su estructura y la de las tablas, es correcta y concreta. 8. Documentación de la base de datos En este punto vamos a documentar de forma general, la usabilidad de la base de datos y algo de su estructura. 7 8.1. Información estructural de las tablas Las tablas en general, soportan de forma nativa escritura en formato ANSII, tienen llave primaria en la primera columna de cada una y no incluyen llaves foraneas. 8.2. Datos almacenados Los datos almacenados en las distintas tablas se relacionan aśı: Jugador: Guarda la información de los jugadores registrados en nuestra app. Deporte: Guarda la información de los deportes disponibles en la app (No es modificable por el usuario final). Deporte Jugador: Guarda la información relacionada con el deporte que practica cada jugador. Escenario: Guarda la información de los escenarios disponibles en la app (No es modificable por el usuario final). Torneo: Guarda la información de los torneos registrados en la app (Es modificable por el usuario final). Equipo: Guarda la información de los equipos registrados en la app (Cabe resaltar que un equipo solo puede estar conformado por jugadores que practiquen un mismo deporte. Escenario Deporte: Guarda la información relacionada con los lugares en los que se puede practicar X deporte (No es modificable por el usuario final). 9. Anexos El siguiente enlace redirige a la carpeta en Google Drive (Click aqúı) donde se encuentran todos los códigos utilizados en este ejercicio, aśı como los modelos y las imágenes de los resultados de las consultas. 8 https://drive.google.com/drive/folders/1rmbAZorUE4S7_IasOJ33gdKtA6hMWgAL?usp=sharing Introducción Necesidades de información Descripción del problema Solución del problema Propuesta de la base de datos Tipo de datos a almacenar Utilización de los datos Usuarios de la base de datos Procesos de negocio Modelo de datos Esquema de la base de datos Inserción de datos Pruebas y ajustes Documentación de la base de datos Información estructural de las tablas Datos almacenados Anexos
Ingeniería Fácil
Ingeniería Fácil
Compartir