Citation preview

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

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

2

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

3

1. Relación Uno a Uno 1.1 Diagrama conceptual

Consultorio

LaboratoristaClinico clave: String nombre: String

Tiene

1..1 seAsignaA

0..1 tieneAsignado

clave: String ubicacion: String

1.2 Diagrama de objetos pedro: LaboratoristaClinico clave = ‘01’ nombre = ‘Pedro’

consultorioA1: Consultorio seAsignaA

tieneAsignado

ana: LaboratoristaClinico clave = ‘02’ nombre = ‘Ana’

consultorioB1: Consultorio seAsignaA

tieneAsignado

juan: LaboratoristaClinico clave = ‘03’ nombre = Juan’

clave = ‘cA1’ ubicacion = ‘Baracteriologia’

clave = ‘cB1’ ubicacion = ‘Hematologia’ consultorioC1: Consultorio

seAsignaA

tieneAsignado clave = ‘cC1’ ubicacion = ‘Patologia’

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 Consultorio LaboratoristaClinico PK lab_ clave: CHAR(2) 1..1 lab_ nombre: VARCHAR(50) + lab_clave_pk( )

PK 0..1

FK

con_ clave: CHAR(4) con_ubicacion: VARCHAR(50) seAsignaA_lab_clave: CHAR(2)

+ con_clave_pk( ) + con_ seAsignaA_fk( ) 4

1.5 Ejemplo de las tablas

LaboratoristaClinico

Consultorio

lab_clave ‘01’ ‘02’ ‘03’

con_clave ‘cA01’ ‘cB01’ ‘cC01’

lab_nombre ‘Pedro’ ‘Ana’ ‘Juan’

con_ubicacion ‘Baracteriologia’ ‘Hematologia’ ‘Patologia’

seAsignaA _lab_clave ‘01’ ‘02’ ‘03’

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');

5

/* 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;

6

2. Relación Uno a Muchos 2.1 Diagrama conceptual LaboratorioDeComputo clave: String nombre: String

Computadora

Pertenece 1..1 perteneceA

0..* constaDe

clave: String marca: String procesador: String

2.2 Diagrama de objetos ipn-com01:Computadora

salaOriente:LaboratorioDeComputo clave = ‘ldc-ori’ nombre = ‘Sala Oriente’

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’

7

ipn-com04:Computadora

clave = ‘ipn-com04’ marca = ‘Lenovo’ procesador = ‘Core 2 Duo’ 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’

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

LaboratorioDeComputo PK ldc_clave: CHAR(7) ldc_nombre: VARCHAR(50) + ldc_pk( )

Computadora 1..1

0..* PK com_clave: CHAR(9) com_marca: VARCHAR(50) com_procesador: VARCHAR(50) FK perteneceA_ldc_clave: CHAR(7) + com_pk( ) + com_perteneceA_fk( )

8

2.5 Ejemplo de tablas Computadora com_clave

com_marca

com_procesador

perteneceA_ldc_clave

LaboratorioDeComputo

‘ipn-com01’ ‘ipn-com02’ ‘ipn-com03’ ‘ipn-com04’ ‘ipn-com05’ ‘ipn-com06’

‘DELL’ ‘Acer’ ‘HP’ ‘Lenovo’ ‘Toshiba’ ‘Lanix’

‘Core i5’ ‘Core i7’ ‘Itanuim’ ‘Core 2 Duo’ ‘Core i3’ ‘Core 2 Quad’

‘ldc-ori’ ‘ldc-ori’ ‘ldc-ori’ ‘ldc-pon’ ‘ldc-pon’ ‘ldc-pon’

ldc_clave

ldc_nombre

‘ldc-ori’

‘Sala Oriente’

‘ldc-pon’

‘Sala Poniente’

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');

9

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;

10

3. Relación Muchos a Muchos 3.1 Diagrama conceptual

Libro isbn: String titulo: String

Autor 0..* escribe

Escribe

0..* escritoPor

registro: String nombre: String

3.2 Diagrama de objetos

luis: Autor jsf: Libro registro = ‘01’ nombre = ’Luis’

jose: Autor registro = ‘02’ nombre = ’Jose’

isbn = ‘9700000001’ titulo: = ‘Java Server Faces’ csharp: Libro isbn = ‘9700000002’ titulo: = ‘Microsoft C#’

francisco: Autor registro = ‘03’ nombre = ’Francisco’

3.3 Frases Un autor escribe varios libros Un libro es escrito por varios autores

11

3.4 Diseño de la base de datos

Libro

Autor

PK lib_isbn: CHAR(10) lib_titulo: VARCHAR(50)

PK aut_registro: VARCHAR(2) aut_nombre: VARCHAR(50)

+ lib_pk()

+ aut_pk() 0..*

0..*

LibroAutor FK FK

lib_isbn: CHAR(10) aut_registro: VARCHAR(2)

+ libaut_lib_fk( ) +libaut_aut_fk( )

3.5 Ejemplo de tablas

Libro lib_isbn lib_titulo ‘9700000001’ ‘Java Server Faces’ ‘9700000002’ ‘Microsoft C#’

LibroAutor lib_isbn ‘9700000001’ ‘9700000001’ ‘9700000002’ ‘9700000001’

Autor aut_registro ‘01’ ‘03’ ‘02’ ‘03’

aut_registro ‘01’ ‘02’ ‘03’

aut_nombre ‘Luis’ ‘Jose’ ‘Francisco’

12

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');

13

/* 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;

14

4. Herencia 4.1 Diagrama conceptual

Luchador registro: int nombre: String

Boxeador

Karateca

asaltos: int categoriaPeso: String

colorCinta: String

4.2 Diagrama de objetos yahir: Luchador

david: Karateca

luis:Boxeador

registro = 100 nombre = ‘Yahir’

registro = 101 nombre = ‘David’ colorCinta = ‘blanca’

registro = 102 nombre = ‘Luis’ asaltos = 10 categoriaPeso = ‘pluma’

4.3 Frases Todo luchador puede ser un Boxeador o Karateca Todo Karateca es un Luchador Todo Boxeador es un Luchador

15

4.4 Diseño de la base de datos

Luchador

PK luc_registro: INTEGER luc_nombre: VARCHAR(50) + luc_pk( )

Karateca

Boxeador

luc_registro: INTEGER krt_color_cinta: VARCHAR(8)

luc_registro: INTEGER box_asaltos: INTEGER box_categoria_peso: VARCHAR(12)

+ krt_pk( ) + krt_luc_pk( )

+box_pk( ) +box_luc_fk( )

4.5 Ejemplo de las tablas Luchador luc_registro 100 101 102

luc_nombre ‘Yahir’ ‘David’ ‘Luis’

Boxeador

Karateca luc_registro 101

krt_color_cinta ‘blanca’

luc_registro 102

box_asaltos 10

box_categoria_peso ‘pluma’

16

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');

17

/* 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;

18