[Disseny de bases de dades] PAC 2: Normalització, disseny E-R i consulta en PHP

12
DISSENY DE BASES DE DADES Prova Teòrica d’Avaluació Contínua– PAC2 Jordi Llonch Esteve CC BY-NC-SA 1 d’12 Nom i cognoms: Jordi Llonch Esteve Qualificació: C++ Cada resposta s'escriurà sota el seu enunciat. Reanomena aquest arxiu amb el teu nom complet: PAC2_nom_alumne.doc A lliurar a la bústia "Lliurament d'activitats" de l'espai "avaluació" de l'aula juntament amb el script cercaTallers.php de la solució de l'exercici C (i scripts complementaris). Pujar l’script al servidor Comoras per comprovar el seu correcte funcionament Data límit de lliurament: 14 de maig de 2012 Presentació y objectius. L'objectiu principal d'aquesta activitat és adquirir els coneixements bàsics en la normalització del conjunt de taules que formen una base de dades donada i la creació d’una aplicació en PHP per a la consulta d’informació existent a una base de dades. Per aquest fi serà necessari saber crear aplicacions PHP fent servir l’entorn de programació Dreamweaver, Eclipse o algun entorn de programació alternatiu. Addicionalment, l’activitat reforçarà els coneixements en el disseny de bases de dades (model E-R). L'activitat es divideix en tres parts: A.- Normalitzar un conjunt de relacions aplicant les formes normals explicades en el manual de l'assignatura. B: Disseny Entitat – Relació: Estarà composat per dos exercicis: B.1- Creació del disseny E-R en base a les taules normalitzades en l’apartat A. B.2- Ampliació del model E-R de l’apartat B.1 a partir d’un enunciat donat. C.- Repassar aspectes teòrics de la programació de PHP and MySQL: formularis per realitzar consultes a una base de dades.

description

Més informació a elmeuordinador.blogspot.com

Transcript of [Disseny de bases de dades] PAC 2: Normalització, disseny E-R i consulta en PHP

Page 1: [Disseny de bases de dades] PAC 2: Normalització, disseny E-R i consulta en PHP

DISSENY DE BASES DE DADES

Prova Teòrica d’Avaluació Contínua– PAC2

Jordi Llonch Esteve CC BY-NC-SA 1 d’12

Nom i cognoms: Jordi Llonch Esteve

Qualificació: C++

Cada resposta s'escriurà sota el seu enunciat.

Reanomena aquest arxiu amb el teu nom complet: PAC2_nom_alumne.doc

A lliurar a la bústia "Lliurament d'activitats" de l'espai "avaluació" de l'aula juntament amb el script cercaTallers.php de la solució de l'exercici C (i scripts complementaris).

Pujar l’script al servidor Comoras per comprovar el seu correcte funcionament

Data límit de lliurament: 14 de maig de 2012

Presentació y objectius. L'objectiu principal d'aquesta activitat és adquirir els coneixements bàsics en la normalització del conjunt de taules que formen una base de dades donada i la creació d’una aplicació en PHP per a la consulta d’informació existent a una base de dades. Per aquest fi serà necessari saber crear aplicacions PHP fent servir l’entorn de programació Dreamweaver, Eclipse o algun entorn de programació alternatiu. Addicionalment, l’activitat reforçarà els coneixements en el disseny de bases de dades (model E-R).

L'activitat es divideix en tres parts:

A.- Normalitzar un conjunt de relacions aplicant les formes normals explicades en el manual de l'assignatura.

B: Disseny Entitat – Relació: Estarà composat per dos exercicis:

B.1- Creació del disseny E-R en base a les taules normalitzades en l’apartat A.

B.2- Ampliació del model E-R de l’apartat B.1 a partir d’un enunciat donat.

C.- Repassar aspectes teòrics de la programació de PHP and MySQL: formularis per realitzar consultes a una base de dades.

Page 2: [Disseny de bases de dades] PAC 2: Normalització, disseny E-R i consulta en PHP

DISSENY DE BASES DE DADES

Prova Teòrica d’Avaluació Contínua– PAC2

Jordi Llonch Esteve CC BY-NC-SA 2 d’12

A.- Normalitzar un conjunt de relacions aplicant les formes normals explicades en el manual de l'assignatura.

L'objectiu d'un disseny d'una base de dades relacional és generar un conjunt d'esquemes de relació que permetin emmagatzemar informació sense redundàncies innecessàries, així com que possibilitin recuperar la informació fàcilment. Normalitza les taules d'una base de dades de tallers mecànics de manera que aquestes quedin relacionades entre si. Crea un conjunt de relacions que permetin emmagatzemar la informació en una base de dades minimitzant les redundàncies innecessàries i sense que es perdin dades. Per aconseguir aquest objectiu usa els criteris de la teoria de la normalització comentant, pas a pas, el procés de normalització aplicat. Normalitza fins al màxim necessari. Tingues en compte que serà possible la necessitat de fusionar o crear noves taules. NOTA de CONTINGUT: Les dades existents en les taules següents són purament fictícies i no volen reflectir la realitat dels clients, tallers i demés actors.

Base de dades: Tallers mecànics Taula A "Client" Nom Data Comentari Taller Tipus

Vehicle

JoanCarlos2 11/03/2012 M'han trobat el problema del cotxe de seguida i barato! Molt satisfet,

Tallers Rodes Furgoneta

Daniel9A 20/12/2011 Fan servir peces de mala qualitat i he hagut de canviar-les en un altre taller. No recomanable.

Talleres Gil Cotxe

JavierPV 21 Abril 2012 Molt mal servei. Els mecànics tots amb mal geni. Un tracte molt dolent.

Motos 2T Ciclomotor

Ramon8s 21/11/2011 No m'han sabut canviar el filtre de l'aire condicionat. Increïble.

Talleres Volken Furgoneta Combi

JoanCarlos2 22/02/2012 No saben arreglar les vespes antigues, només les noves.

Vespa Motors Ciclomotor

MKFernando 22/1/12 Quan m'han reparat el camió he hagut de tornar 2 cops perquè no ho havien fet bé. I m'han cobrat la mà d'obra els dos cops que he hagut de tornar.

Tallers Rodes Camió

MariaKurnik 23/7/2011 Les peces que fan servir són restos d'altres motos. Lo barato sale caro, que deien.

Motos 2T Motocicleta

JuliaPonom 23/12/2011 Bon servei, es nota que en saben. Surt econòmic perquè els mecànics realment saben el que es fan.

Tallers Gil Cotxe

Daniel9A 23/07/2011 Especialistes en cotxes volkswagen antics. Molt bon servei.

Talleres Volkën Cotxe

Page 3: [Disseny de bases de dades] PAC 2: Normalització, disseny E-R i consulta en PHP

DISSENY DE BASES DE DADES

Prova Teòrica d’Avaluació Contínua– PAC2

Jordi Llonch Esteve CC BY-NC-SA 3 d’12

Taula B "Comentaris" Client Comentari Taller Valoració

JoanCarlos2 M'han trobat el problema del cotxe de seguida i barato! Molt satisfet,

Tallers Rodes

Positiu

Daniel9A Fan servir peces de mala qualitat i he hagut de canviar-les en un altre taller. No recomanable.

Talleres Gil

Negatiu

JavierPV Molt mal servei. Els mecànics tots amb mal geni. Un tracte molt dolent.

Motos 2T Positiu

Ramon8s No m'han sabut canviar el filtre de l'aire condicionat. Increïble. Talleres Volkën

Negatiu

JoanCarlos2 No saben arreglar les vespes antigues, només les noves. Vespa Motors

Negatiu

MKFernando Quan m'han reparat el cotxe i he hagut de tornar 2 cops perquè no ho havien fet bé. I m'han cobrat la mà d'obra els dos cops que he hagut de tornar.

Tallers Rodes

Negatiu

MariaKurnik Les peces que fan servir són restos d'altres motos. Lo barato sale caro, que deien.

Motos 2T Negatiu

JuliaPonom Bon servei, es nota que en saben. Surt econòmic perquè els mecànics realment saben el que es fan.

Tallers Gil Positiu

Daniel9A Especialistes en cotxes volkswagen antics. Molt bon servei. Talleres Volkën

Positiu

Taula C "Taller" Nom Adreça Telèfon Tipus de vehicles Marques Talleres Gil Carrer Còrcega,

412, 08033 Barcelona

934567219 Cotxes, Furgonetes Ford, Audi, Fiat, Volkswagen

Motos 2T Calle Marques Bobadilla, 20, 28929, Madrid

912314455 Motos, ciclomotors Suzuki, Yamaha, Aprilia

Tallers Rodes Passeig Sant Joan 220, 08037, Barcelona

933239912 Furgonetes, Camions Fiat, Iveco, Ford

Talleres Volkën Carrer Poeta Mas, 33, València

962378832 Cotxes Seat, Volkswagen, Skoda

Vespa Motors Passatge Ferran, 20, 08031, Barcelona

934493214 Ciclomotors Vespa

Primera forma normal (1FN) Per començar, he modificat cada taula per a complir el següent en cadascuna d’elles:

Que no hi hagi atributs multivalor.

Que les cel·les tinguin valor atòmics.

Que dues files d’una mateixa taula no siguin idèntiques.

Que cada conjunt de dades relacionades s’identifiqui amb una clau primària.

Que no hi hagi grups de dades repetides

Page 4: [Disseny de bases de dades] PAC 2: Normalització, disseny E-R i consulta en PHP

DISSENY DE BASES DE DADES

Prova Teòrica d’Avaluació Contínua– PAC2

Jordi Llonch Esteve CC BY-NC-SA 4 d’12

Taula A "Client" ID Usuari Data Comentari Taller Tipus

Vehicle

1 JoanCarlos2 11/03/2012 M'han trobat el problema del cotxe de seguida i barato! Molt satisfet,

Tallers Rodes

Furgoneta

... ... ... ... ... ...

Taula B "Comentaris" ID Usuari Comentari Taller Valoració

1 JoanCarlos2 M'han trobat el problema del cotxe de seguida i barato! Molt satisfet,

Tallers Rodes

Positiu

... ... ... ... ...

Taula C "Taller" Correcte ID Nom Adreça Codi

postal Ciutat Telèfon Tipus de

vehicles Marques

1 Talleres Gil Carrer Còrcega 412 08033 Barcelona 934567219 Cotxes Ford 2 Talleres Gil Carrer Còrcega 412 08033 Barcelona 934567219 Cotxes Audi 3 Talleres Gil Carrer Còrcega 412 08033 Barcelona 934567219 Cotxes Fiat 4 Talleres Gil Carrer Còrcega 412 08033 Barcelona 934567219 Cotxes Volkswagen 5 Talleres Gil Carrer Còrcega 412 08033 Barcelona 934567219 Furgonetes Ford 6 Talleres Gil Carrer Còrcega 412 08033 Barcelona 934567219 Furgonetes Audi 7 Talleres Gil Carrer Còrcega 412 08033 Barcelona 934567219 Furgonetes Fiat 8 Talleres Gil Carrer Còrcega 412 08033 Barcelona 934567219 Furgonetes Volkswagen ... ... ... ... ... ... ... ...

En aquesta nova versió s’ha atomitzat els atributs, modificat el nom d’alguns camps, suprimit els camps multivalor i afegit un atribut d’identificació que actua de clau primària. Tot i així encara hi ha grups de dades repetides en les taules i entre sí.

Segona forma normal (2FN)

La segona forma normal estableix que tot camp no clau ha de dependre directament del camp clau.

Taula A "Client" ID Usuari Comentari Tipus

Vehicle

1 JoanCarlos2 M'han trobat el problema del cotxe de seguida i barato! Molt satisfet, Furgoneta

... ... ... ...

En la taula “Client” veiem que tant la data, com el taller no depenen del client (Usuari).

Page 5: [Disseny de bases de dades] PAC 2: Normalització, disseny E-R i consulta en PHP

DISSENY DE BASES DE DADES

Prova Teòrica d’Avaluació Contínua– PAC2

Jordi Llonch Esteve CC BY-NC-SA 5 d’12

Taula B "Comentari" ID Usuari Data Comentari Taller Valoració

1 JoanCarlos2 11/03/2012 M'han trobat el problema del cotxe de seguida i barato! Molt satisfet,

Tallers Rodes

Positiu

... ... ... ... ... ...

En la taula “Comentaris” veiem que la data depèn del comentari, per això l’afegim. Correcte

Taula C "Taller" ID Nom Adreça Codi

postal Ciutat Telèfon

1 Talleres Gil Carrer Còrcega 412 08033 Barcelona 934567219 ... ... ... ... ... ...

Taula D "Vehicle" ID Tipus 1 Cotxes 2 Furgonetes ... ...

Taula E "Marca" ID Nom 1 Ford 2 Audi ... ...

Taula F "Taller accepta vehicles" ID Nom taller Vehicle 1 Talleres Gil Cotxes 2 Talleres Gil Furgonetes ... ... ...

Taula G "Vehicles pertanyen a marca" ID Tipus Vehicle Nom Marca 1 Cotxes Ford 2 Furgonetes Ford ... ... ...

A la taula “Taller” s’ha separat els vehicles i les marques que accepta, de manera que en un futur es puguin afegir més registres sense haver de duplicar les altres dades. A més, s’ha mantingut la seva relació afegint dues taules que inclouen aquesta informació.

Page 6: [Disseny de bases de dades] PAC 2: Normalització, disseny E-R i consulta en PHP

DISSENY DE BASES DE DADES

Prova Teòrica d’Avaluació Contínua– PAC2

Jordi Llonch Esteve CC BY-NC-SA 6 d’12

Tercera forma normal (3FN)

Encara hi ha dades que es repeteixen en algunes taules, és a dir, encara existeix dependència transitiva. Per eliminar-la, eliminarem alguns camps de les taules i crearem noves taules que relacionin aquests camps.

Taula A "Client" ID Usuari

1 JoanCarlos2

... ...

S’ha eliminat el comentari i el tipus de vehicle de la taula “Client” per a evitar la duplicació de registres en aquesta taula, ja que pot passar que un mateix usuaris deixi varis comentaris i tingui varis vehicles

Taula B "Comentari" Perfecte ID ID_Client ID_Taller ID_Vehicle ID_Marca Comentari Data Valoració

1 1 1 1 1 M'han trobat el problema del cotxe de seguida i barato! Molt satisfet,

11/03/2012 Positiu

... ... ... ... ... ... ... ...

S’ha eliminat l’usuari i el taller de la taula “Comentaris” per evitar duplicació de registres i s’han afegit les claus foranes que relacionen cada comentari amb l’usuari, el taller, el tipus de vehicle i la marca d’aquest.

Taula C "Taller" ID Nom Adreça Codi

postal Ciutat Telèfon

1 Talleres Gil Carrer Còrcega 412 08033 Barcelona 934567219 ... ... ... ... ... ...

Taula D "Vehicle" ID Tipus 1 Cotxes 2 Furgonetes ... ...

Taula E "Marca" ID Nom 1 Ford 2 Audi ... ...

Page 7: [Disseny de bases de dades] PAC 2: Normalització, disseny E-R i consulta en PHP

DISSENY DE BASES DE DADES

Prova Teòrica d’Avaluació Contínua– PAC2

Jordi Llonch Esteve CC BY-NC-SA 7 d’12

Taula F "Taller accepta vehicles" ID Taller ID Vehicle 1 1 1 2 ... ...

Taula G "Vehicles pertanyen a marques" ID Vehicle ID Marca 1 1 1 2 ... ...

Les taules F i G utilitzen els “IDs” de taller, de vehicle i de marca per a establir les seves relacions, que no suposen que cada taller està especialitzat en un o més tipus de vehicles, els quals poden ser de diferents marques.

Page 8: [Disseny de bases de dades] PAC 2: Normalització, disseny E-R i consulta en PHP

DISSENY DE BASES DE DADES

Prova Teòrica d’Avaluació Contínua– PAC2

Jordi Llonch Esteve CC BY-NC-SA 8 d’12

Part B. - Creació del model E-R Apartat B.1- El procés de normalització de l’apartat anterior ha donat com a resultat la creació d’un nou conjunt de taules. A partir de les taules normalitzades, crea el model E-R que representa la base de dades “Tallers mecànics”. Explica les decisions que prenguis per identificar les entitats del model E-R, les relacions existents i els atributs de cada entitat i relació.

La relació entre comentari i marca no la podem saber. Però la resta, correcte.

Accedeix al diagrama amb més qualitat a https://www.lucidchart.com/documents/view/4d19-776c-4faebe0b-963c-1cb00af1566f.

Identitats i atributs: 1. Client: Cada client pot escriure comentaris, per això és necessari identificar-los a tots i

cadascun d’ells i dotar-los d’un identificador únic a cadascun.

2. Taller: Cada taller està ubicat en una situació diferent, per això s’ha d’identificar la seva adreça i telèfon. A més a més, cada taller està especialitzat en algun tipus de vehicles en concret (com ara cotxes o ciclomotors).

3. Vehicle: Per a no haver de repetir per cada taller els vehicles amb els que està especialitzat es crea la identitat Vehicle, que conté una llista de tots els tipus de vehicles possibles.

4. Marca: De la mateixa manera que no volem repetir cada vehicle, tampoc volem repetir les marques d’aquests.

5. Comentari: Els comentaris són la part principal de la base de dades i en ells hi ha informació de cadascuna de les identitats anteriorment descrites, ja que cada comentari serà diferent depenent de l’usuari, el vehicle que tingui, la marca del vehicle, el taller on hagi portat a reparar el vehicle, la data i la valoració.

Page 9: [Disseny de bases de dades] PAC 2: Normalització, disseny E-R i consulta en PHP

DISSENY DE BASES DE DADES

Prova Teòrica d’Avaluació Contínua– PAC2

Jordi Llonch Esteve CC BY-NC-SA 9 d’12

Relacions

1. Client –escriu– Comentari: relació (1:n), ja que cada client pot escriure tants comentaris com vulgui.

2. Comentari –sobre– Taller: relació (1:n), ja que cada taller tindrà un comentari diferent, però podrà existir tants comentaris com es vulgui.

3. Comentari –inclou– Vehicle: relació (n:n), ja que un vehicle pot aparèixer en tants comentaris com sigui necessari i cada comentari pot incloure diferents tipus de vehicles.

4. Comentari –inclou– Marca: relació (n:n), ja que una marca també pot aparèixer en tants comentaris com es vulgui i cada comentari pot incloure diferents tipus de marques.

5. Taller –accepta– Vehicle: relació (n:n), ja que cada taller pot acceptar tants tipus de vehicles com ell decideixi.

6. Vehicle –pertany a– Marca: relació (n:n), ja que cada marca pot tenir tants tipus de vehicles com ella decideixi i un vehicle pot pertànyer a vàries marques al mateix temps.

Les relacions 5 i 6 donen per suposat que els tallers estan especialitzats en un o més tipus de vehicles, els quals poden ser de marques diferents.

Page 10: [Disseny de bases de dades] PAC 2: Normalització, disseny E-R i consulta en PHP

DISSENY DE BASES DE DADES

Prova Teòrica d’Avaluació Contínua– PAC2

Jordi Llonch Esteve CC BY-NC-SA 10 d’12

Apartat B.2- Amplia el model E-R realitzat a l’apartat B.1 de manera que la base de dades reflecteixi la informació que es presenta al següent enunciat. Volem crear una xarxa social que permeti als seus usuaris seleccionar i valorar diferents tallers mecànics basant-nos en quatre aspectes que considerarem clau: tipus de vehicles que reparen, comentaris dels usuaris, servei i preu i ofertes. Com que l'objectiu és el de poder aconseguir que els clients (usuaris de la xarxa social) obtinguin la màxima informació de quin serà el millor taller on li podran arreglar el problema que té en el seu vehicle, el primer aspecte en el que ens centrarem serà en diferenciar els tallers segons els tipus de vehicles amb els que treballen. El segon aspecte clau seran els comentaris dels usuaris. La xarxa haurà de permetre que els usuaris puguin aportar els seus comentaris, positius i negatius al respecte del tracte i servei que han rebut de cara a que els futurs clients puguin decidir-se per un o per un altre. El tercer aspecte a tractar serà el tipus de servei i preu que ofereixen. És quasi segur que no tots els tallers canviaran vidres o rodes, de la mateixa manera que tindran preus diferents tant pels recanvis fets servir com pels preus de l'hora de mà d'obra. Per a cada servei volem emmagatzemar el seu nom i el temps mig dedicat. El cost de la mà d'obra estarà associat a cada taller i no al servei ofert. Un últim punt que creiem cabdal és la presentació d'ofertes a l'usuari. Els tallers han de ser capaços de publicar ofertes com ara podria ser “Canvi d'oli a 20€”, “Canvi de rodes: paga només 3 neumàtics”, etc. D'aquesta manera caldrà emmagatzemar el tipus d'oferta, el taller que la ofereix (que pot ser més d’un), el vehicles als que està dirigida, les dates en que l’oferta està en vigor, una breu descripció i el preu de la oferta. De la mateixa manera, si es pot elegir entre dos o més tipus de recanvis (per exemple diferents amples de rodes, diferents olis, bateries) caldrà emmagatzemar per una altra banda les característiques dels components: descripció, vehicles per als que s'ofereix, etc. juntament amb el preu sense descompte.

Correcte

Page 11: [Disseny de bases de dades] PAC 2: Normalització, disseny E-R i consulta en PHP

DISSENY DE BASES DE DADES

Prova Teòrica d’Avaluació Contínua– PAC2

Jordi Llonch Esteve CC BY-NC-SA 11 d’12

Accedeix al diagrama amb més qualitat a https://www.lucidchart.com/documents/view/46ec-ec20-4facf1d2-945f-57eb0a48cd7c.

C.- Repassar aspectes teòrics de la programació de PHP i MySQL: formularis per realitzar consultes a una base de dades.

Realitza una aplicació en PHP anomenada afegirNegoci.php que exploti la informació existent dins de la base de dades Negocis, presentada a la PRA1 i la ampliï afegint un negoci a la base de dades. Puja l’script (o els scripts) al servidor Comoras i presenta una captura de pantalla de la seva execució així com la URL per poder accedir al servei creat. I la captura i/o la URL? L’aplicació afegirNegoci.php haurà de tenir la següent funcionalitat:

Un desplegable de formulari permetrà a l’usuari la selecció d’una categoria de negoci. Un cop escollida la categoria, se li mostrarà a l’usuari els negocis que estan assignats a la categoria escollida, així com les antenes que donen cobertura als negocis. A més, se li oferirà un camp de text on l’usuari podrà entrar el nom del nou negoci i dos camps més per a les coordenades d’aquest (latitud i longitud). Finalment, existirà un botó per a Netejar el formulari i un segon botó per a Inserir el nou negoci. El procés d’inserció haurà de fer les següents modificacions a la base de dades:

Inserir el negoci a la base de dades Relacionar el negoci amb la categoria seleccionada Relacionar el negoci amb les antenes que estiguin a menys de 2.000

metres del negoci. El càlcul de la distància entre una Antena A i un Negoci N es pot realitzar de la següent manera:

Font: http://www.zipcodeworld.com/samples/distance.php.html <?php function distance($lat1, $lon1, $lat2, $lon2) { $theta = $lon1 - $lon2; $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); $dist = acos($dist); $dist = rad2deg($dist); $miles = $dist * 60 * 1.1515; $unit = strtoupper($unit); return ($miles * 1609.344); } distance(32.9697, -96.80322, 29.46786, -98.53506) . " meters<br>"; ?>

Page 12: [Disseny de bases de dades] PAC 2: Normalització, disseny E-R i consulta en PHP

DISSENY DE BASES DE DADES

Prova Teòrica d’Avaluació Contínua– PAC2

Jordi Llonch Esteve CC BY-NC-SA 12 d’12

Opcions complementaries a l’aplicació PHP, així com aplicacions complementaries seran valorades per a millorar la puntuació. Falta fer aquest apartat.