viernes, 4 de julio de 2014

Liga de Pádel. Modelo de Entidad Relación.

Buenas gente. Como ahora empezaré a dar (entre otras) clases de Bases de Datos, voy a ir subiendo ejercicios resueltos. Os dejo aquí el enunciado del mismo:


Se desea diseñar una base de datos para almacenar la información relacionada con la edición de ligas de pádel. Como es bien sabido, el pádel es un deporte similar al tenis el que siempre participan 4 jugadores en cada partido. Cada liga tiene su código y su nombre que son únicos, un organizador y un premio final. Cada liga se celebra como sumo una vez cada año, en lo que se denomina ediciones, cada una con sus propias normas. 
Cada partido de pádel se celebra en un club (aunque es posible que al principio el lugar sea desconocido y no se rellene este dato hasta que los jugadores celebren el encuentro). Por cada partido hay que rellenar la fecha de celebración, la pista donde se juega y el resultado final. La liga tiene convenios con una serie de clubs de los que hay que almacenar un código, un nombre (obligatorio) una dirección y un teléfono de contacto. En un club sólo se puede jugar un partido en una pista en una determinada fecha (en nuestro sistema gestor de bases de datos el tipo fecha contiene también la hora). 
De cada jugador hay que almacenar un código, nombre y teléfono móvil (obligatorios). El móvil debe ser único por jugador. Además, se ha habilitado una página web en la que los jugadores pueden inscribirse como usuarios. Un usuario es un jugador del que hay que almacenar el alias, la password de entrada y la dirección de correo electrónico. Es obligatorio que el organizador de cada liga esté inscrito como usuario. Cada usuario sólo puede organizar una liga. 
Hay que conocer qué jugadores están inscritos en cada una de las ediciones. Éstas, a su vez, se pueden descomponer en varias fases, cada una con su propia fecha de inicio, nombre (fase regular, playoff, finales, etc.) y número de partidos de los que consta, número de partidos que se han jugado realmente y cuáles son. Además, una vez terminada cada edición hay que saber la pareja de jugadores que ha resultado campeona de esa edición. 
Nuestro cliente nos comenta que últimamente se está poniendo de moda el pádel individual, el cual lo juegan 2 jugadores en lugar de 4 y que se están planteando organizar ligas de este estilo. Para ello, bastaría con almacenar el puesto que cada jugador ocupa en cada partido de modo que variará entre 1 y 4 para los partidos de ligas normales y entre 1 y 2 para las ligas de pádel individual.

Bueno, vamos a ello. En una primera lectura de la especificación podemos identificar fácilmente las
entidades (objetos de interés). Éstos serán seres distinguibles del mundo real; pudiendo ser reales o abstractos y vienen representados por un nombre o sustantivo.
Normalmente las entidades suelen ser algo sobre lo que la organización necesita información.
Identificamos las Entidades como:
Liga, Edición, Club, Partido, Jugador, Usuario y Fase. Ahora vamos a crearlas con sus atributos.

Hay que tener en cuenta que un atributo nunca puede tener 'propiedades', pues en ese caso se trataría de otra entidad más. Además por la propiedad de redundancia, no debemos tener atributos que podamos calcular (por ejemplo, si tenemos una fecha de nacimiento, no pongamos la edad puesto que podría darse el caso de que una de las dos estuviera mal y no cuadraran las cuentas).

Ahora debemos fijarnos en qué atributos pueden ser únicos y elegir una clave para cada Entidad. Una clave es un atributo único que representa inequívocamente a su entidad (Por ejemplo, en la entidad Español, la clave debería ser DNI, pues es único).

Marcaremos con un * los valores obligatorios, con una U los únicos y con un # las claves. Una entidad puede tener varias claves (#1, #2...) o una clave compuesta (marcaremos los atributos con el mismo #) como en el caso de la Entidad Partido.

Ahora nos queda definir las relaciones. En ése momento nos daremos cuenta de que todos los Usuarios son Jugadores, por lo que Usuario es una Subentidad de Jugador. Además nos damos cuenta de que Fase es una entidad débil de Edición y ésta, a su vez, de Liga. Una entidad débil es aquella la cual sus atributos sólo la identifican de forma parcial (para saber de que fase estamos hablando necesitamos saber a qué edición pertenece y a qué liga).

Al fin, nuestro esquema quedaría de la siguiente manera:

Espero que si le echáis sus 5 minutos lo veáis todo claro, en otro caso me hallaré encantado de resolver vuestras dudas. Un saludo a todos y hasta la próxima ;)

No hay comentarios:

Publicar un comentario