ejercicios de base de datos distribuidos

18
Ejercicios de Fundamentos de base de datos Por: López Romero Andrés 8CV3

Upload: juan-martinez

Post on 24-Apr-2015

420 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Ejercicios de Base de Datos Distribuidos

Ejercicios de

Fundamentos de

base de datos

Por:

López Romero Andrés

8CV3

Page 2: Ejercicios de Base de Datos Distribuidos

2

Contenido

1. Relación Uno a Uno ........................................................................................................................4

1.1 Diagrama conceptual................................................................................................................4

1.2 Diagrama de objetos ................................................................................................................4

1.3 Frases .......................................................................................................................................4

1.4 Diseño de la base de datos .......................................................................................................4

1.5 Ejemplo de las tablas ................................................................................................................5

1.6 Instrucciones para crear la base de datos ................................................................................5

1.7 Instrucciones para armar la red ................................................................................................5

2. Relación Uno a Muchos ..................................................................................................................7

2.1 Diagrama conceptual................................................................................................................7

2.2 Diagrama de objetos ................................................................................................................7

2.3 Frases .......................................................................................................................................8

2.4 Diseño de la base de datos .......................................................................................................8

2.5 Ejemplo de tablas .....................................................................................................................9

2.6 Instrucciones para crear las tablas ...........................................................................................9

2.7 Instrucciones para armar la red ................................................................................................9

3. Relación Muchos a Muchos ..........................................................................................................11

3.1 Diagrama conceptual..............................................................................................................11

3.2 Diagrama de objetos ..............................................................................................................11

Page 3: Ejercicios de Base de Datos Distribuidos

3

3.3 Frases .....................................................................................................................................11

3.4 Diseño de la base de datos .....................................................................................................12

3.5 Ejemplo de tablas ...................................................................................................................12

3.6 Instrucciones para crear las tablas .........................................................................................13

3.7 Instrucciones para amar la red ...............................................................................................13

4. Herencia .......................................................................................................................................15

4.1 Diagrama conceptual..............................................................................................................15

4.2 Diagrama de objetos ..............................................................................................................15

4.3 Frases .....................................................................................................................................15

4.4 Diseño de la base de datos .....................................................................................................16

4.5 Ejemplo de las tablas ..............................................................................................................16

4.6 Instrucciones para crear la base de datos ..............................................................................17

4.7 Instrucciones para armar la red ..............................................................................................17

Page 4: Ejercicios de Base de Datos Distribuidos

4

1. Relación Uno a Uno

1.1 Diagrama conceptual

1.2 Diagrama de objetos

1.3 Frases Un laboratorista clínico tiene asignado un consultorio

Un consultorio se asigna a un laboratorista clínico

1.4 Diseño de la base de datos

LaboratoristaClinico

clave: String

nombre: String

Consultorio

clave: String

ubicacion: String tieneAsignado seAsignaA

Tiene 1..1 0..1

pedro: LaboratoristaClinico

clave = ‘01’

nombre = ‘Pedro’

consultorioA1: Consultorio

clave = ‘cA1’

ubicacion = ‘Baracteriologia’

tieneAsignado seAsignaA

ana: LaboratoristaClinico

clave = ‘02’

nombre = ‘Ana’

juan: LaboratoristaClinico

clave = ‘03’

nombre = Juan’

consultorioB1: Consultorio

clave = ‘cB1’

ubicacion = ‘Hematologia’

consultorioC1: Consultorio

clave = ‘cC1’

ubicacion = ‘Patologia’

seAsignaA

seAsignaA

tieneAsignado

tieneAsignado

LaboratoristaClinico

PK lab_ clave: CHAR(2)

lab_ nombre: VARCHAR(50)

+ <<PK>> lab_clave_pk( )

Consultorio

PK con_ clave: CHAR(4)

con_ubicacion: VARCHAR(50)

FK seAsignaA_lab_clave: CHAR(2)

+ <<PK>> con_clave_pk( )

+<<FK>> con_ seAsignaA_fk( )

1..1 0..1

Page 5: Ejercicios de Base de Datos Distribuidos

5

1.5 Ejemplo de las tablas

1.6 Instrucciones para crear la base de datos

CREATE TABLE LaboratoristaClinico(

lab_clave CHAR(2) NOT NULL,

lab_nombre VARCHAR(50) NOT NULL,

CONSTRAINT lab_pk PRIMARY KEY(lab_clave)

);

CREATE TABLE Consultorio(

con_clave CHAR(4) NOT NULL,

con_ubicacion VARCHAR(50) NOT NULL,

seAsignaA_lab_clave CHAR(2) UNIQUE NOT NULL,

CONSTRAINT con_pk PRIMARY KEY(con_clave),

CONSTRAINT con_seAsignaA_fk FOREIGN KEY(seAsignaA_lab_clave)

REFERENCES LaboratoristaClinico (lab_clave)

);

1.7 Instrucciones para armar la red

INSERT INTO LaboratoristaClinico VALUES ('01', 'Pedro');

INSERT INTO LaboratoristaClinico VALUES ('02', 'Ana');

INSERT INTO LaboratoristaClinico VALUES ('03', 'Juan');

INSERT INTO Consultorio VALUES('cA01','Baracteriologia','01');

INSERT INTO Consultorio VALUES('cB01','Hematologia','02');

INSERT INTO Consultorio VALUES('cC01','Patologia','03');

LaboratoristaClinico lab_clave lab_nombre

‘01’ ‘Pedro’

‘02’ ‘Ana’

‘03’ ‘Juan’

Consultorio con_clave con_ubicacion seAsignaA _lab_clave

‘cA01’ ‘Baracteriologia’ ‘01’

‘cB01’ ‘Hematologia’ ‘02’

‘cC01’ ‘Patologia’ ‘03’

Page 6: Ejercicios de Base de Datos Distribuidos

6

/* UPDATE */

/* A Ana le quitamos el laboratorio y se lo asignamos a un nuevo laboratorista */

INSERT INTO LaboratoristaClinico VALUES ('04', 'Alberto');

UPDATE Consultorio SET seAsignaA_lab_clave='04' WHERE

seAsignaA_lab_clave='02';

/* DELETE */

/* Se borra a Ana */

DELETE FROM LaboratoristaClinico WHERE lab_clave = '02';

/* SELECT */

SELECT lab_clave, lab_nombre, con_clave, con_ubicacion FROM

LaboratoristaClinico, Consultorio WHERE LaboratoristaClinico.lab_clave =

Consultorio.seAsignaA_lab_clave;

Page 7: Ejercicios de Base de Datos Distribuidos

7

2. Relación Uno a Muchos

2.1 Diagrama conceptual

2.2 Diagrama de objetos

LaboratorioDeComputo

clave: String

nombre: String

Computadora

clave: String

marca: String

procesador: String

Pertenece 1..1 0..*

perteneceA constaDe

salaOriente:LaboratorioDeComputo

clave = ‘ldc-ori’

nombre = ‘Sala Oriente’

ipn-com01:Computadora

clave = ‘ipn-com01’

marca = ‘DELL’

procesador = ‘Core i5’

ipn-com02:Computadora

clave = ‘ipn-com02’

marca = ‘Acer’

procesador = ‘Core i7’

ipn-com03:Computadora

clave = ‘ipn-com03’

marca = ‘HP’

procesador = ‘Itanium’

Page 8: Ejercicios de Base de Datos Distribuidos

8

2.3 Frases Una computadora pertenece a un laboratorio de cómputo

Un laboratorio cómputo consta de varias computadoras

2.4 Diseño de la base de datos

salaPoniente:LaboratorioDeComputo

clave = ‘ldc-pon’

nombre = ‘Sala Poniente’

ipn-com05:Computadora

clave = ‘ipn-com05’

marca = ‘Toshiba’

procesador = ‘Core i3’

ipn-com06:Computadora

clave = ‘ipn-com06’

marca = ‘Lanix’

procesador = ‘Core 2 Quad’

ipn-com04:Computadora

clave = ‘ipn-com04’

marca = ‘Lenovo’

procesador = ‘Core 2 Duo’

LaboratorioDeComputo

PK ldc_clave: CHAR(7)

ldc_nombre: VARCHAR(50)

+<<PK>> ldc_pk( )

Computadora

PK com_clave: CHAR(9)

com_marca: VARCHAR(50)

com_procesador: VARCHAR(50)

FK perteneceA_ldc_clave: CHAR(7)

+<<PK>> com_pk( )

+<<FK>> com_perteneceA_fk( )

1..1 0..*

Page 9: Ejercicios de Base de Datos Distribuidos

9

2.5 Ejemplo de tablas

2.6 Instrucciones para crear las tablas

CREATE TABLE LaboratorioDeComputo(

ldc_clave CHAR(7) NOT NULL,

ldc_nombre VARCHAR(50) NOT NULL,

CONSTRAINT ldc_pk PRIMARY KEY(ldc_clave)

);

CREATE TABLE Computadora(

com_clave CHAR(9) NOT NULL,

com_marca VARCHAR(50) NOT NULL,

com_procesador VARCHAR(50) NOT NULL,

pertenceA_ldc_clave CHAR(7) NOT NULL,

CONSTRAINT com_pk PRIMARY KEY(com_clave),

CONSTRAINT com_pertenceA_fk FOREIGN KEY(pertenceA_ldc_clave)

REFERENCES LaboratorioDeComputo(ldc_clave)

);

2.7 Instrucciones para armar la red

INSERT INTO LaboratorioDeComputo VALUES ('ldc-ori', 'Sala Oriente');

INSERT INTO LaboratorioDeComputo VALUES ('ldc-pon', 'Sala Poniente');

Computadora

com_clave com_marca com_procesador perteneceA_ldc_clave

‘ipn-com01’ ‘DELL’ ‘Core i5’ ‘ldc-ori’

‘ipn-com02’ ‘Acer’ ‘Core i7’ ‘ldc-ori’

‘ipn-com03’ ‘HP’ ‘Itanuim’ ‘ldc-ori’

‘ipn-com04’ ‘Lenovo’ ‘Core 2 Duo’ ‘ldc-pon’

‘ipn-com05’ ‘Toshiba’ ‘Core i3’ ‘ldc-pon’

‘ipn-com06’ ‘Lanix’ ‘Core 2 Quad’ ‘ldc-pon’

LaboratorioDeComputo

ldc_clave ldc_nombre

‘ldc-ori’ ‘Sala Oriente’

‘ldc-pon’ ‘Sala Poniente’

Page 10: Ejercicios de Base de Datos Distribuidos

10

INSERT INTO Computadora VALUES ('ipn-com01', 'DELL', 'Core i5', 'ldc-ori');

INSERT INTO Computadora VALUES ('ipn-com02', 'Acer', 'Core i7', 'ldc-ori');

INSERT INTO Computadora VALUES ('ipn-com03', 'HP', 'Itanium', 'ldc-ori');

INSERT INTO Computadora VALUES ('ipn-com04', 'Lenovo', 'Core 2 Duo', 'ldc-pon');

INSERT INTO Computadora VALUES ('ipn-com05', 'Toshiba', 'Core i7', 'ldc-pon');

INSERT INTO Computadora VALUES ('ipn-com06', 'Lanix', 'Core 2 Quad', 'ldc-pon');

/* UPDATE */

/* Pasamos la computadora ipn-com04 a la Sala Oriente */

UPDATE Computadora SET pertenceA_ldc_clave = 'ldc-ori' WHERE

com_clave='ipn-com04';

/* DELETE */

/* Eliminamos la computadora ipn-com03 por presentar demasiadas fallas */

DELETE FROM Computadora where com_clave = 'ipn-com03';

/* SELECT */

SELECT com_clave, com_marca, com_procesador, ldc_clave, ldc_nombre FROM

LaboratorioDeComputo, Computadora WHERE LaboratorioDeComputo.ldc_clave =

Computadora.pertenceA_ldc_clave;

Page 11: Ejercicios de Base de Datos Distribuidos

11

3. Relación Muchos a Muchos

3.1 Diagrama conceptual

3.2 Diagrama de objetos

3.3 Frases Un autor escribe varios libros

Un libro es escrito por varios autores

Libro

isbn: String

titulo: String

Autor

registro: String

nombre: String escritoPor escribe

Escribe 0..* 0..*

luis: Autor

registro = ‘01’

nombre = ’Luis’

jose: Autor

registro = ‘02’

nombre = ’Jose’

francisco: Autor

registro = ‘03’

nombre = ’Francisco’

csharp: Libro

isbn = ‘9700000002’

titulo: = ‘Microsoft C#’

jsf: Libro

isbn = ‘9700000001’

titulo: = ‘Java Server Faces’

Page 12: Ejercicios de Base de Datos Distribuidos

12

3.4 Diseño de la base de datos

3.5 Ejemplo de tablas

Libro

PK lib_isbn: CHAR(10)

lib_titulo: VARCHAR(50)

+<<PK>> lib_pk()

Autor

PK aut_registro: VARCHAR(2)

aut_nombre: VARCHAR(50)

+<<PK>> aut_pk()

0..*

LibroAutor

FK lib_isbn: CHAR(10)

FK aut_registro: VARCHAR(2)

+<<FK>> libaut_lib_fk( )

+<<FK>>libaut_aut_fk( )

0..*

Libro

lib_isbn lib_titulo

‘9700000001’ ‘Java Server Faces’

‘9700000002’ ‘Microsoft C#’

Autor

aut_registro aut_nombre

‘01’ ‘Luis’

‘02’ ‘Jose’

‘03’ ‘Francisco’

LibroAutor

lib_isbn aut_registro

‘9700000001’ ‘01’

‘9700000001’ ‘03’

‘9700000002’ ‘02’

‘9700000001’ ‘03’

Page 13: Ejercicios de Base de Datos Distribuidos

13

3.6 Instrucciones para crear las tablas

CREATE TABLE Libro(

lib_isbn CHAR(10) NOT NULL,

lib_titulo VARCHAR(50) NOT NULL,

CONSTRAINT lib_pk PRIMARY KEY(lib_isbn)

);

CREATE TABLE Autor(

aut_registro CHAR(2) NOT NULL,

aut_nombre VARCHAR(50) NOT NULL,

CONSTRAINT aut_pk PRIMARY KEY(aut_registro)

);

CREATE TABLE LibroAutor(

lib_isbn CHAR(10) NOT NULL,

aut_registro CHAR(2) NOT NULL,

CONSTRAINT libaut_lib_fk FOREIGN KEY(lib_isbn) REFERENCES

Libro(lib_isbn),

CONSTRAINT libaut_aut_fk FOREIGN KEY(aut_registro) REFERENCES

Autor(aut_registro)

);

3.7 Instrucciones para amar la red

INSERT INTO Libro VALUES ('9700000001', 'Java Server Faces');

INSERT INTO Libro VALUES ('9700000002', 'Microsoft C#');

INSERT INTO Autor VALUES ('01', 'Luis');

INSERT INTO Autor VALUES ('02', 'Jose');

INSERT INTO Autor VALUES ('03', 'Francisco');

INSERT INTO LibroAutor VALUES ('9700000001','01');

INSERT INTO LibroAutor VALUES ('9700000001','03');

INSERT INTO LibroAutor VALUES ('9700000002','02');

INSERT INTO LibroAutor VALUES ('9700000002','03');

Page 14: Ejercicios de Base de Datos Distribuidos

14

/* UPDATE */

/* Se actualiza la version del jsf */

UPDATE Libro SET lib_titulo='Java Server Faces 2.2' WHERE

lib_isbn='9700000001';

/* DELETE */

/* Francisco se retira del libro Microsoft C# */

DELETE FROM LibroAutor WHERE lib_isbn='9700000002' AND aut_registro='03';

/* SELECT */

SELECT Libro.lib_titulo, Autor.aut_nombre FROM Libro, Autor, LibroAutor

WHERE Libro.lib_isbn=LibroAutor.lib_isbn AND

Autor.aut_registro=LibroAutor.aut_registro ORDER BY Libro.lib_titulo;

Page 15: Ejercicios de Base de Datos Distribuidos

15

4. Herencia

4.1 Diagrama conceptual

4.2 Diagrama de objetos

4.3 Frases

Todo luchador puede ser un Boxeador o Karateca

Todo Karateca es un Luchador

Todo Boxeador es un Luchador

Luchador

registro: int

nombre: String

Karateca

colorCinta: String

Boxeador

asaltos: int

categoriaPeso: String

yahir: Luchador

registro = 100

nombre = ‘Yahir’

david: Karateca

registro = 101

nombre = ‘David’

colorCinta = ‘blanca’

luis:Boxeador

registro = 102

nombre = ‘Luis’

asaltos = 10

categoriaPeso = ‘pluma’

Page 16: Ejercicios de Base de Datos Distribuidos

16

4.4 Diseño de la base de datos

4.5 Ejemplo de las tablas

Luchador

PK luc_registro: INTEGER

luc_nombre: VARCHAR(50)

+<<PK>> luc_pk( )

Karateca

luc_registro: INTEGER

krt_color_cinta: VARCHAR(8)

+ <<PK>> krt_pk( )

+<<FK>> krt_luc_pk( )

Boxeador

luc_registro: INTEGER

box_asaltos: INTEGER

box_categoria_peso: VARCHAR(12)

+<<PK>>box_pk( )

+<<FK>>box_luc_fk( )

Luchador

luc_registro luc_nombre

100 ‘Yahir’

101 ‘David’

102 ‘Luis’

Karateca

luc_registro krt_color_cinta

101 ‘blanca’

Boxeador

luc_registro box_asaltos box_categoria_peso

102 10 ‘pluma’

Page 17: Ejercicios de Base de Datos Distribuidos

17

4.6 Instrucciones para crear la base de datos

CREATE TABLE Luchador(

luc_registro INTEGER NOT NULL,

luc_nombre VARCHAR(50) NOT NULL,

CONSTRAINT luc_pk PRIMARY KEY(luc_registro)

);

CREATE TABLE Karateca(

luc_registro INTEGER NOT NULL,

krt_color_cinta VARCHAR(8) NOT NULL,

CONSTRAINT krt_pk PRIMARY KEY (luc_registro),

CONSTRAINT krt_luc_fk FOREIGN KEY (luc_registro) REFERENCES

Luchador(luc_registro)

);

CREATE TABLE Boxeador(

luc_registro INTEGER NOT NULL,

box_asaltos INTEGER NOT NULL,

box_categoria_peso VARCHAR(12) NOT NULL,

CONSTRAINT box_pk PRIMARY KEY (luc_registro),

CONSTRAINT box_luc_fk FOREIGN KEY (luc_registro) REFERENCES

Luchador(luc_registro)

);

4.7 Instrucciones para armar la red

/* Se crean y se conectan los nodos */

INSERT INTO Luchador VALUES (100, 'Yahir');

INSERT INTO Luchador VALUES (101, 'David');

INSERT INTO Karateca VALUES (101, 'blanca');

INSERT INTO Luchador VALUES (102, 'Luis');

INSERT INTO Boxeador VALUES (102, 10, 'pluma');

Page 18: Ejercicios de Base de Datos Distribuidos

18

/* Consulta de la tabla Luchadores */

SELECT * FROM Luchador;

/* Consulta de la tabla Karateca */

SELECT Luchador.luc_registro, Luchador.luc_nombre,

Karateca.krt_color_cinta FROM Luchador, Karateca WHERE

Luchador.luc_registro = Karateca.luc_registro;

/* Consulta de la tabla Boxeador */

SELECT Luchador.luc_registro, luc_nombre, box_asaltos, box_categoria_peso

FROM Luchador, Boxeador WHERE Luchador.luc_registro =

Boxeador.luc_registro;

/* UPDATE */

/* David entrena mucho y se convierte en cinta negra */

UPDATE Karateca SET krt_color_cinta='negra' WHERE luc_registro=101;

/* Yahir se retira de ser luchador */

DELETE FROM Luchador WHERE luc_registro=100;