Informe Técnico Bases de Datos

download Informe Técnico Bases de Datos

of 31

description

Trabajo del informe técnico de Bases de Datos (UAB, segundo curso de informática).

Transcript of Informe Técnico Bases de Datos

  • Christian Guzman Ruiz, Marcelino Coll Rovira, lvaro Girona Arias

    INFORME TCNIC BASES DE DADES

  • REQUERIMENTS 3 DEFINICI DEL JOC DE PROVES. 4 DISSENY CONCEPTUAL 6 DIAGRAMA ENTITAT-RELACI 6 LLISTAT DENTITATS: 7 LLISTAT DINTERRELACIONS 10 LLISTA DESPECIALITZACIONS 11 APNDIX 11 DISSENY LGIC 12 MODEL RELACIONAL 12 LLISTAT DE TAULES 13 LLISTAT DE LES RESTRICCIONS REFERENCIALS 17 APNDIX 20 SCRIPT SQL 20 JOC DE PROVES 25

  • Requeriments Informe dunes dues pgines on sha descriure de la forma ms clara possible tot el qu cal tenir en compte per a fer el disseny conceptual en el model Entitat-Relaci.

    Requeriment 1: Caldr guardar informaci per a la gesti de vols. Cal guardar la matrcula, el model, la data de fabricaci y els seients del avions. Cada seient es distingueix per la seva fila y columna. Cal tenir en compte que no es vol informaci de seients sense informaci del avi al que pertanyen. Caldr saber lavi que fa cada vol. Caldr tamb guardar el nom, el pas i la ciutat dels aeroports que treballa la companyia. Cada aeroport t un codi distintiu i nic. Dintre dun aeroport es farn diversos vols. Cada vol t un aeroport de origen i un altre de dest. Cada vol es distingueix amb un codi nic i volem saber la data y el horari del vol.

    Requeriment 2: Caldr guardar informaci per a la gesti de reserves i clients. De cada client es vol guardar el seu DNI, el nom y els cognoms. Es vol guardar les reserves dels vols fetes pels clients, y de cada reserva es vol guardar la classe que ha demanat el client, la data, el nmero de la targeta de crdit i la data de caducitat de la targeta.

    Requeriment 3: Caldr guardar informaci pel check-in. Es vol guardar les portes dembarcament de cada aeroport. Cada porta dembarcament pertany a un terminal i t un nmero identificatiu. Cal tenir en compte que no es vol informaci de portes dembarcament sense informaci del aeroport corresponent. Tamb es vol saber les maletes de cada client, aix com el seu pes, ja que a la companyia linteressa molt saber cuant pes ha cargat per cada vol. Aquestes maletes se etiqueten amb un identificador nic. Cal tenir en compte que no es vol informaci de maletes sense informaci del client propietari de les maletes.

    Requeriment 4: Caldr guardar informaci del personal assignat als vols. A la companyia noms linteressa saber quins treballadors han fet cada vol ja que tots els seus treballadors estaran sempre assignats almenys a un vol. De cada treballador caldr guardar el seu DNI, el nmero de la seguretat social, el nom, els cognoms i la seva nacionalitat. A ms, cada treballador pot ser o b un pilot o un auxiliar, i segons que sn es vol guardar informaci diferent. Si es un pilot es vol saber el numero del carnet del pilot i la lletra de la seva llicncia. Si es un auxiliar es vol saber la seva categoria i els idiomes que parla.

  • Definici del joc de proves. Enunciar les transaccions (consultes, insercions, actualitzacions o esborrats) que es realitzaran per a validar cadascun dels requeriments identificats en lapartat anterior.

    Insercions: -Inserir informaci de tots els atributs de les taules del diagrama logic. Almenys dos files dinformaci per taula, la taula treballadors tindra que tenir almenys quatre treballadors per tenir dos pilots i dos auxiliars.

    Consultes: -Nmero de seients, model, data de fabricaci i matrcula del avi que ha fet el vol amb codi 1. -Nom, pas, ciutat i codi del aeroport de origen que ha fet els vols amb codi 1 i 2. -Nom, pas, ciutat i codi del aeroport de dest que ha fet els vols amb codi 1 i 2. -Data i horari de sortida dels vols que ha agafat el client amb dni 39440994L. -Nom i cognoms del client que ha fet la reserva amb localitzador 1. -Nombre de reserves del client amb nom Alvaro. -Classe, data, el nmero de la targeta de crdit i data de caducitat de la targeta del client que ha demanat el vol de codi 2. -Numero de portes dembarcament del aeroport de codi 1. - Aeroports per on ha passat el client amb dni 33928473G. -Pes de les maletes del client 39440994L. -DNI, nmero de la seguretat social, nom, cognoms y nacionalitat dels treballadors del vol de codi 1. -Numero de carnet i licencia dels pilots del vol 1. -Categoria i idiomes dels auxiliars del vol 1. -Numero de treballadors per nacionalitat en tots els vols que surten de Barcelona.

    Actualitzacions: -La matrcula 111111A passa a ser 222222A. -El DNI 39943793D dun client passa a ser 39943793M. -El DNI 32445437S dun pilot passa a ser 32445437J i es modifica a trves de la taula treballadors. -El DNI 39445327E dun auxiliar passa a ser 39445327N i es modifica a trves de la taula treballadors. -El codi 1 dun aeroport passa a ser A.

    Esborrats: -Sesborra el avi de matrcula 111111A. -Sesborra el client amb DNI 39943793D.

  • -Sesborra el pilot amb DNI 32445437S. -Sesborra el auxiliar amb DNI 39445327E- -Sesborra el aeroport de codi 1.

  • Disseny Conceptual DIAGRAMA ENTITAT-RELACI

  • LLISTAT DENTITATS: Avi: Entitat amb informaci de cada avi que t la companyia

    Matricula: Clau primaria. Matrcula de lavi

    Model: Model de fabricaci de lavi.

    Data fabricaci: Data en que es va fabricar.

    Seient: Entitat amb informaci de cada seient dels avions.

    Fila: Clau primaria. Fila del seient.

    Columna: Clau primaria. Columna del seient.

    Vol: Entitat amb informaci de cada vol.

    Codi: Clau primaria. Codi nic didentificaci del vol.

    Horari: Hora de sortida.

    Data: Data en que es realitza el vol.

    Client: Entitat amb informaci de cada client de la compaia

    DNI: Clau primaria. DNI del client.

    Nom: Nom del client.

    Cognoms: Cognoms del client.

    Maletes: Entitat amb informaci de les maletes de cada client.

    Identificador: Clau primaria. Codi nic didentificaci de la maleta.

    Pes: Pes en quilograms de la maleta.

  • Treballador: Entitat amb informaci dels treballadors de la companyia asignats per cada vol.

    DNI: Clau primaria. DNI del treballador.

    Num_SS: Nmero de la seguretat social.

    Nom: Nom del treballador.

    Cognoms: Cognoms del treballador.

    Nacionalitat: Nacionalitat del treballador.

    Pilot: Entitat amb informaci especfica de cada pilot.

    Num_carnet: Nmero de carnet de pilot.

    Licencia: Tipus de llicencia que te el pilot.

    Auxiliar: Entitat amb informaci especfica de cada auxiliar.

    Categoria: Categoria dins dels auxiliars de vol.

    Idiomes: Idiomes que parla lauxiliar de vol.

    Reserva: Entitat amb informaci de la reserva corresponent a cada client-vol.

    Localitzador: Clau primaria. Codi nic didentificaci de la reserva.

    Clase: Clase en la que sha fet la reserva.

    Data: Data en la que sha realitzat la reserva.

    Targeta: Nmero de targeta amb la qual sha efectuat el pagament.

    Caducitat: Caducitat de la targeta.

  • Aeroport: Entitat amb informaci dels aeroports amb els que treballa la companyia.

    Codi: Clau primaria.

    Nom: Nom de laeroport.

    Pais: Pas en el que es troba situat laeroport.

    Ciutat: Ciutat on es troba situat laeroport.

    Porta dembarcament:

    Entitat amb informaci de les portes dembarcament dels aeroports.

    Terminal: Clau primaria. Terminal a la que pertany la porta de embarcament.

    Num_porta: Clau primaria. Nmero de la porta dembarcament.

  • LLISTAT DINTERRELACIONS

    Origen Un vol t un aeroport de origen i un aeroport t diversos vols.

    Dest Un vol t un aeroport de dest i un aeroport t diversos vols.

    Vol-client Un client es asignat a un/s vol/s i un vol te diversos clients.

    Seient-avi Un avi te diversos seients.

    Maleta-client Un client t diverses maletes.

    Vol-treballador: Un vol te assignat uns treballadors.

    Vol-Avi: Un vol es dut a terme per un avi concret.

    Aeroport-porta_embarcament:

    Un aeroport cont portes dembarcament pels avions.

    Client-vol-reserva:

    Un client-vol te diverses reserves i una reserva diversos client-vol.

  • LLISTA DESPECIALITZACIONS

    APNDIX

    Hem creat diverses entitats febles per complir el requisit de que la companyia no volia informaci duna maleta sense informaci del client propietari i etctera. Com un aeroport pot ser dorigen o de dest segons el vol, hem posat dues interrelacions origen i dest per acomplir aquest requisit.

    Per a lentitat treballador sha optat per fer una especialtizaci, ja que un treballador podria ser o pilot o auxiliar i pilot i auxiliar tenian atributs especfics per tamb atributs comuns.

    Com la reserva no noms anava associada a un client, sin tamb a un vol, hem fet la agregaci amb client i vol i lhem enllaat a reserva per acomplir aquest requeriment.

    Treballador: Treballadors de la companyia, els treballadors tenen dos oficis pel qual es distingueixen. s una partici disjunta ja que un treballador no pot tener dos oficis alhora.

    Pilot: Ofici distintiu de la entitat treballador.

    Auxiliar: Ofici distintiu de la entitat treballador.

  • Disseny Lgic MODEL RELACIONAL

  • LLISTAT DE TAULES Avi: Representa els avions de la companyia i prov de la entitat avi.

    Matricula: Clau primaria. Matrcula de lavi. Tipus char

    Model: Model de fabricaci de lavi. Tipus char

    Data fabricaci: Data en que es va fabricar. Tipus datetime.

    Seient: Representa els seients de lavi i prov de la entitat seient.

    Fila: Clau primaria. Fila del seient. Tipus char

    Columna: Clau primaria. Columna del seient. Tipus char

    Matrcula avi: Matrcula de lavi. Tipus char

    Vol: Representa els vols i prov de lentitat vol.

    Codi: Clau primaria. Codi nic didentificaci del vol. Tipus char.

    Horari: Hora de sortida.Tipus datetime.

    Data: Data en que es realitza el vol. Tipus datetime.

    Codi_avi: Matrcula de lavi. Tipus char.

    Client_vol: Representa els clients que t cada vol i prov de linterrelaci client-vol.

    DNI_client: Clau primaria. DNI del client. Tipus char

    Codi_vol: Clau primaria. Codi nic didentificaci del vol. Tipus char

  • Client: Representa els clients de la companyia i prov de lentitat client.

    DNI: Clau primaria. DNI del client. Tipus char

    Nom: Nom del client. Tipus char

    Cognoms: Cognoms del client. Tipus char

    Maleta: Representa les maletes dels clients i prov de lentitat maletes.

    Identificador: Clau primaria. Codi nic didentificaci de la maleta. Tipus char

    Pes: Pes en quilograms de la maleta. Tipus int.

    DNI_client: DNI del client. Tipus char

    Client_vol_reserva:

    Representa les reserves de cada client y els vols associats i prov de linterrelaci client-vol-reserva.

    Dni_client: Clau primaria. Tipus char

    Codi_vol: Clau primaria. Codi nic didentificaci del vol. Tipus char

    Localitzador_reserva:

    Clau primaria. Tipus char

    Treballador: Representa els treballadors de la companyia asignats per cada vol i prov de lentitat treballador.

    DNI: Clau primaria. DNI del treballador. Tipus char

    Num_SS: Nmero de la seguretat social. Tipus char

    Nom: Nom del treballador. Tipus char

    Cognoms: Cognoms del treballador. Tipus char

    Nacionalitat: Nacionalitat del treballador. Tipus char

  • Treballador_vol: Representa els treballadors associats a cada vol.

    Codi_vol: Clau primaria. Codi nic didentificaci del vol. Tipus char

    Dni_treballador: Clau primaria. DNI del treballador. Tipus char

    Pilot: Representa els pilots de la companyia, s una especialitzaci de treballador i prov de lentitat pilot.

    Num_carnet: Nmero de carnet de pilot. Tipus char

    Licencia: Tipus de llicencia que te el pilot. Tipus char

    DNI: Clau primaria. DNI del pilot. Tipus char

    Auxiliar: Representa els auxiliars de la companyia, s una especialitzaci de treballador i prov de lentitat auxiliar.

    Categoria: Categoria dins dels auxiliars de vol. Tipus char

    Idiomes: Idiomes que parla lauxiliar de vol. Tipus char

    DNI: Clau primaria. DNI del auxiliarr. Tipus char

    Reserva: Representa les reserves dels clients i prov de lentitat reserva.

    Localitzador: Clau primaria. Codi nic didentificaci de la reserva. Tipus char

    Clase: Clase en la que sha fet la reserva. Tipus char

    Data: Data en la que sha realitzat la reserva. Tipus datetime.

    Targeta: Nmero de targeta amb la qual sha efectuat el pagament. Tipus char

    Caducitat: Caducitat de la targeta. Tipus datetime.

  • Aeroport: Representa els aeroports de la companyia i prov de lentitat aeroport.

    Codi: Clau primaria. Codi nic didentificaci del aeroport. Tipus char

    Nom: Nom de laeroport. Tipus char

    Pais: Pas en el que es troba situat laeroport. Tipus char

    Ciutat: Ciutat on es troba situat laeroport. Tipus char

    Origen: Representa el aeropuerto de origen del vuelo.

    Codi_aeroport: Clau primaria. Codi nic didentificaci del aeroport. Tipus char

    Codi_vol: Clau primaria. Codi nic didentificaci del vol.

    Dest: Representa el aeropuerto de destino del vuelo.

    Codi_aeroport: Clau primaria. Codi nic didentificaci del aeroport. Tipus char

    Codi_vol: Clau primaria. Codi nic didentificaci del vol.

    Porta dembarcament:

    Representa les portes dembarcament dels aeroports i prov de lentitat porta dembarcament.

    Terminal: Clau primaria. Terminal a la que pertany la porta de embarcament. Tipus char

    Num_porta: Clau primaria. Nmero de la porta dembarcament. Tipus char

    Codi_aeroport: Codi nic didentificaci del aeroport. Tipus char

  • LLISTAT DE LES RESTRICCIONS REFERENCIALS

    Vol_avi: Restringeix la acci de esborrar o actualizar un camp davi sense abans eliminar els camps de vol que son afectats al compartir clau primaria.

    Taula referencial:

    avi

    Taula referenciada:

    vol

    Client_vol_vol: Restringeix la acci de esborrar o actualizar un camp de vol sense abans eliminar els camps de client_vol que son afectats al compartir clau primaria.

    Taula referencial:

    vol

    Taula referenciada:

    client_vol

    Client_client_vol: Restringeix la acci de esborrar o actualizar un camp de client sense abans eliminar els camps de client_vol que son afectats al compartir clau primaria.

    Taula referencial: client

    Taula referenciada:

    client_vol

    Client_vol_client_vol_reserva:

    Restringeix la acci de esborrar o actualizar un camp de client_vol sense abans eliminar els camps de client_vol_reserva que son afectats al compartir clau primaria.

    Taula referencial: client_vol

    Taula referenciada:

    client_vol_reserva

  • Client_vol_reserva_reserva:

    Restringeix la acci de esborrar o actualizar un camp de reserva sense abans eliminar els camps de client_vol_reserva que son afectats al compartir clau primaria.

    Taula referencial:

    reserva

    Taula referenciada:

    client_vol_reserva

    Treballador_vol_treballador:

    Restringeix la acci de esborrar o actualizar un camp de treballador sense abans eliminar els camps de treballador_vol que son afectats al compartir clau primaria.

    Taula referencial:

    treballador

    Taula referenciada:

    treballador_vol

    Treballador_vol_vol:

    Restringeix la acci de esborrar o actualizar un camp de vol sense abans eliminar els camps de treballador_vol que son afectats al compartir clau primaria.

    Taula referencial:

    vol

    Taula referenciada:

    treballador_vol

    Vol_origen: Restringeix la acci de esborrar o actualizar un camp de vol sense abans eliminar els camps de origen que son afectats al compartir clau primaria.

    Taula referencial:

    vol

    Taula referenciada:

    origen

  • Vol_dest: Restringeix la acci de esborrar o actualizar un camp de vol sense abans eliminar els camps de dest que son afectats al compartir clau primaria.

    Taula referencial:

    vol

    Taula referenciada:

    dest

    Origen_aeroport: Restringeix la acci de esborrar o actualizar un camp daeroport sense abans eliminar els camps dorigen que son afectats al compartir clau primaria.

    Taula referencial: aeroport.

    Taula referenciada:

    origen

    Dest_aeroport: Restringeix la acci de esborrar o actualizar un camp daeroport sense abans eliminar els camps de dest que son afectats al compartir clau primaria.

    Taula referencial:

    aeroport

    Taula referenciada:

    dest

  • APNDIX Desprs de transformar el nostre disseny entitat-relaci a un disseny lgic decidim quins atributs nous que shavien creat eran clau primria i quins no. De les relacions n-n eran clau primria per norma, respecte a la resta, en la taula seient, el nou atribut matricula_avi tenia que ser clau primaria perqu dos avions poden tenir la mateixa fila i columna per un seient. En la taula maleta, el dni_client no es clau primria perque el identificador s unic per cada maleta, i el mateix cas es per al codi_avi de vol que el codi es distintiu i nic. Per a la porta de embarcament, el nou atribut codi_aeroport tenia que ser clau primria perque un aeroport pot tenir el mateix codi de terminal i el mateix nmero de porta.

    Tamb teniem que tractar el tema de les restriccions referencials. Per cumplir correctament els requeriments del tipus si sesborra un client tampoc es vol la informaci de les seves maletes ja havem identificat aquests casos anteriorment en el diagrama entitat-relaci asignant la entitat maleta com una entitat feble de client i etctera. Per cumplir aix en el model lgic, les relacions entre una entitat feble i la seva entitat forta tenen una relaci de cascade per actualitzar i esborrar, aix, quan sesborri o quan sactualitzi un client la maleta tamb sera actualitzada automticament. La resta de relacions referencials sn restriccions, ja que en aquets casos la companyia vol tenir ms cura de la informaci que sesborra o actualitza.

    Script SQL CREATE TABLE auxiliar ( categoria CHAR (20) , idiomes CHAR (20) , dni CHAR (20) NOT NULL ) ; ALTER TABLE auxiliar ADD CONSTRAINT auxiliar_PK PRIMARY KEY ( dni ) ; CREATE TABLE pilot ( num_carnet CHAR (20) , licencia CHAR (20) , dni CHAR (20) NOT NULL ) ;

  • ALTER TABLE pilot ADD CONSTRAINT pilot_PK PRIMARY KEY ( dni ) ; CREATE TABLE seient ( fila CHAR (20) NOT NULL , columna CHAR (20) NOT NULL , matricula_avio CHAR (20) NOT NULL ) ; ALTER TABLE seient ADD CONSTRAINT seient_PK PRIMARY KEY ( fila, columna, matricula_avio ) ; CREATE TABLE treballador ( dni CHAR (20) NOT NULL , num_ss CHAR (20) , nom CHAR (20) , cognoms CHAR (20) , nacionalitat CHAR (20) ) ; ALTER TABLE treballador ADD CONSTRAINT treballador_PK PRIMARY KEY ( dni ) ; CREATE TABLE aeroport ( codi CHAR (20) NOT NULL , nom CHAR (20) , pais CHAR (20) , ciutat CHAR (20) ) ; ALTER TABLE aeroport ADD CONSTRAINT aeroport_PK PRIMARY KEY ( codi ) ; CREATE TABLE avio ( matricula CHAR (20) NOT NULL , model CHAR (20) , data_fabricacio CHAR (20) ) ; ALTER TABLE avio ADD CONSTRAINT avio_PK PRIMARY KEY ( matricula ) ; CREATE TABLE client ( dni CHAR (20) NOT NULL , nom CHAR (20) , cognoms CHAR (20)

  • ) ; ALTER TABLE client ADD CONSTRAINT client_PK PRIMARY KEY ( dni ) ; CREATE TABLE client_vol ( dni_client CHAR (20) NOT NULL , codi_vol CHAR (20) NOT NULL ) ; ALTER TABLE client_vol ADD CONSTRAINT client_vol_PK PRIMARY KEY ( dni_client, codi_vol ) ; CREATE TABLE client_vol_reserva ( localitzador_reserva CHAR (20) NOT NULL , dni_client CHAR (20) NOT NULL , codi_vol CHAR (20) NOT NULL ) ; ALTER TABLE client_vol_reserva ADD CONSTRAINT client_vol_reserva_PK PRIMARY KEY ( localitzador_reserva, codi_vol, dni_client ) ; CREATE TABLE desti ( codi_vol CHAR (20) NOT NULL , codi_aeroport CHAR (20) NOT NULL ) ; ALTER TABLE desti ADD CONSTRAINT desti_PK PRIMARY KEY ( codi_vol, codi_aeroport ) ; CREATE TABLE maleta ( identificador CHAR (20) NOT NULL , pes INTEGER , dni_client CHAR (20) NOT NULL ) ; ALTER TABLE maleta ADD CONSTRAINT maleta_PK PRIMARY KEY ( identificador ) ; CREATE TABLE origen ( codi_vol CHAR (20) NOT NULL , codi_aeroport CHAR (20) NOT NULL ) ; ALTER TABLE origen ADD CONSTRAINT origen_PK PRIMARY KEY ( codi_vol, codi_aeroport ) ; CREATE TABLE porta_embarcament (

  • terminal CHAR (20) NOT NULL , num_porta CHAR (20) NOT NULL , codi_aeroport CHAR (20) NOT NULL ) ; ALTER TABLE porta_embarcament ADD CONSTRAINT porta_embarcament_PK PRIMARY KEY ( terminal, num_porta, codi_aeroport ) ; CREATE TABLE reserva ( localitzador CHAR (20) NOT NULL , clase CHAR (20) , data DATE , targeta CHAR (20) , caducitat DATE ) ; ALTER TABLE reserva ADD CONSTRAINT reserva_PK PRIMARY KEY ( localitzador ) ; CREATE TABLE treballador_vol ( treballador_dni CHAR (20) NOT NULL , vol_codi CHAR (20) NOT NULL ) ; ALTER TABLE treballador_vol ADD CONSTRAINT treballador_vol_PK PRIMARY KEY ( treballador_dni, vol_codi ) ; CREATE TABLE vol ( codi CHAR (20) NOT NULL , horari DATE , data DATE , codi_avio CHAR (20) NOT NULL ) ; ALTER TABLE vol ADD CONSTRAINT vol_PK PRIMARY KEY ( codi ) ; ALTER TABLE auxiliar ADD CONSTRAINT auxiliar_treballador_FK FOREIGN KEY ( dni ) REFERENCES treballador ( dni ) ON DELETE CASCADE ; ALTER TABLE pilot ADD CONSTRAINT pilot_treballador_FK FOREIGN KEY ( dni ) REFERENCES treballador ( dni ) ON DELETE CASCADE ;

  • ALTER TABLE seient ADD CONSTRAINT seient_avio FOREIGN KEY ( matricula_avio ) REFERENCES avio ( matricula ) ON DELETE CASCADE ; ALTER TABLE client_vol ADD CONSTRAINT client_client_vol FOREIGN KEY ( dni_client ) REFERENCES client ( dni ) ; ALTER TABLE client_vol_reserva ADD CONSTRAINT client_vol_client_vol_reserva FOREIGN KEY ( dni_client, codi_vol ) REFERENCES client_vol ( dni_client, codi_vol ) ; ALTER TABLE client_vol_reserva ADD CONSTRAINT client_vol_reserva_reserva FOREIGN KEY ( localitzador_reserva ) REFERENCES reserva ( localitzador ) ; ALTER TABLE client_vol ADD CONSTRAINT client_vol_vol FOREIGN KEY ( codi_vol ) REFERENCES vol ( codi ) ; ALTER TABLE desti ADD CONSTRAINT desti_aeroport FOREIGN KEY ( codi_aeroport ) REFERENCES aeroport ( codi ) ; ALTER TABLE maleta ADD CONSTRAINT maleta_client_FK FOREIGN KEY ( dni_client ) REFERENCES client ( dni ) ON DELETE CASCADE ; ALTER TABLE origen ADD CONSTRAINT origen_aeroport FOREIGN KEY ( codi_aeroport ) REFERENCES aeroport ( codi ) ; ALTER TABLE porta_embarcament ADD CONSTRAINT porta_aeroport_FK FOREIGN KEY ( codi_aeroport ) REFERENCES aeroport ( codi ) ON DELETE CASCADE ; ALTER TABLE treballador_vol ADD CONSTRAINT treballador_vol_treballador FOREIGN KEY ( treballador_dni ) REFERENCES treballador ( dni ) ; ALTER TABLE treballador_vol ADD CONSTRAINT treballador_vol_vol FOREIGN KEY ( vol_codi ) REFERENCES vol ( codi ) ; ALTER TABLE vol ADD CONSTRAINT vol_avio FOREIGN KEY ( codi_avio ) REFERENCES avio ( matricula ) ; ALTER TABLE desti ADD CONSTRAINT vol_desti FOREIGN KEY ( codi_vol ) REFERENCES vol ( codi ) ; ALTER TABLE origen ADD CONSTRAINT vol_origen FOREIGN KEY ( codi_vol ) REFERENCES vol ( codi ) ;

  • Joc de proves Implementaci del joc de proves definit a linici de linforme. Caldr mostrar les sentencies dSQL executades aix com lestat de la base de dades abans i desprs de realitzar les modificacions.

    INSERT INTO aeroport (codi, nom, pais, ciutat) VALUES ('1', 'Aeroport de Barcelona-El Prat', 'Espanya', 'Barcelona'); INSERT INTO aeroport (codi, nom, pais, ciutat) VALUES ('2', 'Aeropuerto de Madrid-Barajas', 'Espanya', 'Madrid'); INSERT INTO porta_embarcament(terminal, num_porta, codi_aeroport) VALUES('Terminal 1', '1', '1'); INSERT INTO porta_embarcament(terminal, num_porta, codi_aeroport) VALUES('Terminal 1', '2', '1'); INSERT INTO avio(matricula, model, data_fabricacio) VALUES('111111A', 'Airbus A380', '20110324'); INSERT INTO avio(matricula, model, data_fabricacio) VALUES('111111B', 'Airbus A380', '20110324'); INSERT INTO vol(codi, horari, data, codi_avio) VALUES('1', '9:45:00 AM', '20140112', '111111A'); INSERT INTO vol(codi, horari, data, codi_avio) VALUES('2', '10:30:00 PM', '20140112', '111111A'); INSERT INTO seient(fila, columna, matricula_avio) VALUES('1', '1', '111111A'); INSERT INTO seient(fila, columna, matricula_avio) VALUES('1', '2', '111111A'); INSERT INTO seient(fila, columna, matricula_avio) VALUES('1', '3', '111111A'); INSERT INTO seient(fila, columna, matricula_avio) VALUES('1', '4', '111111A'); INSERT INTO seient(fila, columna, matricula_avio) VALUES('1', '1', '111111B'); INSERT INTO seient(fila, columna, matricula_avio) VALUES('1', '2', '111111B'); INSERT INTO seient(fila, columna, matricula_avio) VALUES('1', '3', '111111B'); INSERT INTO seient(fila, columna, matricula_avio) VALUES('1', '4', '111111B');

  • INSERT INTO client(dni, nom, cognoms) VALUES('39440994L', 'Alvaro', 'Girona Arias'); INSERT INTO client(dni, nom, cognoms) VALUES('33928473G', 'Christian', 'Gusman'); INSERT INTO client(dni, nom, cognoms) VALUES('39943793D', 'Marselino', 'Coll Rovira'); INSERT INTO client_vol(dni_client, codi_vol) VALUES('39440994L', '1'); INSERT INTO client_vol(dni_client, codi_vol) VALUES('33928473G', '1'); INSERT INTO maleta(identificador, pes, dni_client) VALUES('1', 20, '39440994L'); INSERT INTO maleta(identificador, pes, dni_client) VALUES('2', 13, '39440994L'); INSERT INTO maleta(identificador, pes, dni_client) VALUES('3', 10, '33928473G'); INSERT INTO maleta(identificador, pes, dni_client) VALUES('4', 5, '39943793D'); INSERT INTO reserva(localitzador, clase, data, targeta, caducitat) VALUES ('1', 'Primera', '20140112', '9324532765469765', '20160601'); INSERT INTO reserva(localitzador, clase, data, targeta, caducitat) VALUES ('2', 'Turista', '20140112', '5327873468752407', '20160301'); INSERT INTO client_vol_reserva(localitzador_reserva, dni_client, codi_vol) VALUES('1', '39440994L', '1'); INSERT INTO client_vol_reserva(localitzador_reserva, dni_client, codi_vol) VALUES('2', '33928473G', '1'); INSERT INTO treballador(dni, num_ss, nom, cognoms, nacionalitat) VALUES ('39445567D', '39445567D', 'Marselino', 'Coll Rovira', 'Espanyola'); INSERT INTO treballador(dni, num_ss, nom, cognoms, nacionalitat) VALUES ('39445327E', '39445327E', 'Christian', 'Gusman', 'Espanyola'); INSERT INTO treballador(dni, num_ss, nom, cognoms, nacionalitat) VALUES ('39440994L', '39440994L', 'lvaro', 'Girona Arias', 'Espanyola'); INSERT INTO treballador(dni, num_ss, nom, cognoms, nacionalitat) VALUES ('32445437S', '32445437S', 'Juanjo', 'Torres Peruga', 'Espanyola'); INSERT INTO treballador_vol(vol_codi, treballador_dni) VALUES ('1', '39445567D'); INSERT INTO treballador_vol(vol_codi, treballador_dni)

  • VALUES ('1', '39445327E'); INSERT INTO treballador_vol(vol_codi, treballador_dni) VALUES ('1', '39440994L'); INSERT INTO treballador_vol(vol_codi, treballador_dni) VALUES ('1', '32445437S'); INSERT INTO pilot (dni, num_carnet, licencia) VALUES ('39445567D', '1', 'A'); INSERT INTO pilot (dni, num_carnet, licencia) VALUES ('32445437S', '1', 'A'); INSERT INTO auxiliar (dni, categoria, idiomes) VALUES ('39445327E', 'Cambrer', 'frances,espaol,ingles'); INSERT INTO auxiliar (dni, categoria, idiomes) VALUES ('39440994L', 'Cambrer', 'frances,espaol,ingles'); INSERT INTO origen (codi_aeroport, codi_vol) VALUES ('1', '1'); INSERT INTO origen (codi_aeroport, codi_vol) VALUES ('2', '2'); INSERT INTO desti (codi_aeroport, codi_vol) VALUES ('2', '1'); INSERT INTO desti (codi_aeroport, codi_vol) VALUES ('1', '2');

    SELECT avio.matricula, avio.model, avio.data_fabricacio, COUNT(seient.fila) FROM avio INNER JOIN seient ON seient.matricula_avio = avio.matricula INNER JOIN vol ON vol.codi_avio = avio.matricula AND vol.codi = 1;

    SELECT DISTINCT ap.nom, ap.pais, ap.ciutat, ap.codi FROM aeroport AS ap INNER JOIN origen as ori ON ori.codi_aeroport = ap.codi AND ori.codi_vol IN (1, 2);

    SELECT DISTINCT ap.nom, ap.pais, ap.ciutat, ap.codi FROM aeroport AS ap

  • INNER JOIN desti as dest ON dest.codi_aeroport = ap.codi AND dest.codi_vol IN (1, 2);

    SELECT vol.data, vol.horari FROM vol, client_vol as cv WHERE cv.dni_client = '39440994L' AND vol.codi = cv.codi_vol;

    SELECT c.nom, c.cognoms FROM client as c INNER JOIN client_vol_reserva as cvr ON cvr.dni_client = c.dni AND cvr.localitzador_reserva = 1;

    SELECT count(*) FROM client_vol_reserva as cvr, client as c WHERE c.nom = 'Christian' AND c.dni = cvr.dni_client;

    SELECT c.nom, r.clase, r.data, r.targeta, r.caducitat FROM reserva as r INNER JOIN client_vol_reserva as cvr ON cvr.codi_vol = 1 AND cvr.localitzador_reserva = r.localitzador INNER JOIN client as c ON c.dni = cvr.dni_client;

    SELECT COUNT(pe.num_porta) FROM porta_embarcament as pe WHERE pe.codi_aeroport = 1;

    SELECT a.nom FROM aeroport as a LEFT JOIN origen ON origen.codi_aeroport = a.codi LEFT JOIN desti ON desti.codi_aeroport = a.codi INNER JOIN client_vol as cv ON cv.codi_vol = origen.codi_vol OR cv.codi_vol = desti.codi_vol INNER JOIN client ON client.dni = cv.dni_client AND client.dni = '33928473G';

  • SELECT SUM(m.pes) FROM maleta as m INNER JOIN client ON client.dni = m.dni_client AND client.nom = 'Alvaro' AND client.cognoms = 'Girona Arias';

    SELECT t.dni, t.num_ss, t.nom, t.cognoms, t.nacionalitat FROM treballador as t INNER JOIN treballador_vol as tv ON tv.treballador_dni = t.dni AND tv.vol_codi = 1;

    SELECT t.nom, p.num_carnet, p.licencia FROM pilot as p INNER JOIN treballador as t ON t.dni = p.dni INNER JOIN treballador_vol as tv ON tv.treballador_dni = t.dni AND tv.vol_codi = 1;

    SELECT t.nom, a.categoria, a.idiomes FROM auxiliar as a INNER JOIN treballador as t ON t.dni = a.dni INNER JOIN treballador_vol as tv ON tv.treballador_dni = t.dni AND tv.vol_codi = 1;

    SELECT t.nacionalitat, COUNT(t.dni) FROM treballador as t INNER JOIN treballador_vol as tv ON tv.treballador_dni = t.dni INNER JOIN origen ON origen.codi_vol = tv.vol_codi INNER JOIN aeroport ON aeroport.codi = origen.codi_aeroport AND aeroport.ciutat = 'Barcelona' GROUP BY t.nacionalitat;

  • Sesborra el avi de matrcula 111111A. DELETE FROM avio WHERE matricula = 111111A; Sesborra el client amb DNI 39943793D. DELETE FROM client WHERE dni_client = 39943793D Sesborra el pilot amb DNI 32445437S. DELETE FROM pilot WHERE dni = 32445437S' Sesborra el auxiliar amb DNI 39445327E DELETE FROM auxiliar WHERE dni = 39445327E' Sesborra el aeroport de codi 1. DELETE FROM aeroport WHERE code = 1