<div class="page"> <div class="cover text-center"> <img class="mx-auto" src=/itb/images/logo_mislata.png alt="logo"> # DDL Ciclisme <div class="text-end fit-content ms-auto my-3 mt-auto pt-3"> <p><strong>Autor:</strong> Joan Puigcerver Ibáñez</p> <p><strong>Correu electrònic:</strong> j.puigcerveribanez@edu.gva.es</p> <p><strong>Curs:</strong> 2024/2025</p> </div> <div> <p class="fw-bold mb-0">Llicència: BY-NC-SA</p> <p class="d-none d-md-block">(Reconeixement - No Comercial - Compartir Igual)</p> <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.ca" target="_blank"> <img class="mx-auto" src="/itb/images/license.png" alt="Licence"/> </a> </div><!--license--> </div><!--cover--> </div><!--page--> {:toc} ## Objectius L'objectiu d'aquest exercici és practicar en definir un model relacional en una base de dades relacional a partir del Diagrama d'Entitat Relació i el Model Relacional. ## Enunciat Crea la base de dades __ciclisme__ i defineix les taules necessàries per emmagatzemar correctament la informació. Totes les sentències per la creacó de la base de dades i les taules han de ser especificades en un únic fitxer anomenat __create_schema_ciclisme.sql__, que ha de poder executar-se directament en el SGBD sense cap error. ### Diagrama Entitat Relació ::: note La relació __Porta__ entre _Mallot - Ciclista - Etapa_ es una relació ternària. La cardinalitat es correspon a: - Un ciclista pot portar un mallot en moltes etapes. - Un ciclista en una etapa pot portar diferents mallot. - En una etapa, un mallot sols pot ser portat per un ciclista. Més info: https://stackoverflow.com/questions/18365870/er-diagram-ternary-relationship-how-to-read-properly ::: warning La cardinalitat ha segut canviada en l'enunciat després de la pràctica. ::: ![Diagrama Entitat Relació Ciclisme](/itb/DAM-BD/files/ca/ciclisme/img/ciclisme_er.png){.center} ### Model Relacional - [EQUIP]{.blue}(++[#nom]{.red}++, entrenador) - [CICLISTA]{.blue}(++[#dorsal]{.red}++, nom, edat, _equip([EQUIP]{.blue}:[#nom]{.red})_) - [ETAPA]{.blue}(++[#id_etapa]{.red}++, inici, final, km, _dorsal_guanyador([CICLISTA]{.blue}:[#dorsal]{.red})_) - [PORT_MUNTANYA]{.blue}(++[#nom]{.red}++, categoria, altura, pendent, _id_etapa([ETAPA]{.blue}:[#id_etapa]{.red})_, _dorsal_guanyador([CICLISTA]{.blue}:[#dorsal]{.red})_) - [MALLOT]{.blue}(++[#id_mallot]{.red}++, tipus, color, premi) - [PORTA]{.blue}(++_[#id_etapa]{.red}([ETAPA]{.blue}:[#id_etapa]{.red})_++, ++_[#id_mallot]{.red}([MALLOT]{.blue}:[#id_mallot]{.red})_++, _dorsal_ciclista([CICLISTA]{.blue}:[#dorsal]{.red})_) ### Taules i consideracions Crea les següents taules en la base de dades __ciclisme__. | Taula | Camp | Tipus | Descripció | Restriccions | | --------------- | ------------------- | ------------ | ----------- | ----------- | | equip | nom | varchar(25) | Nom de l'equip | | | ^^ | entrenador | varchar(50) | Nom de l'entrenador de l'equip | | | ciclista | dorsal | int | Dorsal del ciclista | No pot ser negatiu | | ^^ | nom | varchar(25) | Nom del ciclista | NN | | ^^ | edat | int | Edat del ciclista | NN | | ^^ | equip | varchar(25) | Equip del ciclista | | | etapa | id_Etapa | int | ID de l'etapa | | | ^^ | km | int | Quilòmetres de l'etapa | NN, No pot ser negatiu | | ^^ | inici | varchar(50) | Municipi on comença l'etapa | NN | | ^^ | final | varchar(50) | Municipi on acaba l'etapa | NN | | ^^ | dorsal_guanyador | int | Ciclista que ha guanyat l'etapa | | | mallot | id_mallot | char(3) | ID del mallot | | | ^^ | color | varchar(30) | Color del mallot | NN | | ^^ | tipus | varchar(30) | Tipus de mallot | NN, No pot ser negatiu | | ^^ | premi | int | Premi en diners per portar el mallot | No pot ser negatiu | | port_muntanya | nom | varchar(30) | Nom del port de muntanya | | | ^^ | altura | int | Altura del port de muntanya | NN | | ^^ | categoria | char | Categoria del port de muntanya | | | ^^ | pendent | decimal(4,2) | Pendent mitjanca del port de muntanya en % | No pot ser negativa. No pot ser major de 100 | | ^^ | etapa | int | Etapa on està inclòs el port de muntanya | | | ^^ | dorsal_guanyador | int | Ciclista que ha guanyat el port de muntanya | | | porta | id_etapa | int | Etapa en la qual un ciclista porta un mallot | | | ^^ | id_mallot | char(3) | Jersei portat per un ciclista en una etapa | | | ^^ | dorsal_ciclista | int | Ciclista que porta un mallot en una etapa | | ::: note - Heu de respectar el nom de les taules i el noms dels atributs. - __NN__: `NOT NULL` - No s'han especificat totes les restriccions que haurien d'existir. - Heu de respectal al màxim possible les cardinalitats del model proposat. - Podeu utilitzar `NOT NULL` o `UNIQUE` quan cregueu necessari. ::: ## Bibliografia Aquest material és propietat del profesorat de "Bases de Dades i Sistemes d'Informació". Escola Tècnica Superior d'Enginyeria Informàtica. Universitat Politècnica de València. Adaptat per <a href="/about/">Joan Puigcerver</a> ## Llicència Aquest material és propietat del profesorat de "Bases de Dades i Sistemes d'Informació". Escola Tècnica Superior d'Enginyeria Informàtica. Universitat Politècnica de València. © Tots els drets reservats. No es permet la còpia ni redistribució d'aquest material.